[TOC]
# 思维导图软件
## 1、iMindMap
>很好用
![](https://box.kancloud.cn/2016-09-02_57c953691db73.jpg)
## 2、MindManager
>据说很漂亮,还没有用
## 3、XMind
> 挺不错的
![](https://box.kancloud.cn/2016-09-02_57c953691db73.jpg)
###破解方法
标 题: 【原创】mockplus软件的非主流破解方法
作 者: darksied
时 间: 2016-08-03,11:11:28
链 接: http://bbs.pediy.com/showthread.php?t=211997
mockplus,导出图片的时候提示需要专业版,免费版不支持导出,尝试能否突破。
声明:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
1、在导出图片,有升级为专业版选项,点击后有正在更新数据,更新结果是升级失败,是免费用户。
凭感觉应该是从网络获取信息,使用smartSniff抓包。
有记录:
TCP 192.168.1.12 121.40.151.193 36067 80 api.mockplus.cn
查看这个记录的详细信息
```
GET /user/userinfo?Token=4ae91cfa-0ccc-4465-bf22-65e0a5bc6338
api.mockplus.cn返回的是JSON字符串
{
"code": 0,
"message": "成功",
"user": {
"id": 261184,
"email": "test@163.com",//用户名,密码随便
"name": "test",
"avatar": "https://cdns-mockplus-cn.alikunlun.com/avatar/13.jpg",
"addTime": "2016-08-02T01:41:41.000Z",
"expireTime": null,
"license": {
"version": "free"
},
"referralCode": "rucvox",
"maxProjectCount": 0,
"emailVerified": 0,
"from": "self",
"color": "#4270f6"
},
"count": {
"receivedReview": 0,
"sentReview": 0,
"contacts": 0
}
}
```
在浏览器地址里直接输入 `api.mockplus.cn/user/userinfo?Token=4ae91cfa-0ccc-4465-bf22-65e0a5bc6338`
也能获取到这个字符串。注意: `Token` 后的字符串不一样,需要在 `mockplus` 中登录成功后,才能返回这个 `JSON`,否则返回未登录。
2、既然是从网上获取注册信息,那么想办法伪造这个网络api。
用vs2015中的mvc模板新建了个网站,部署在自己的iis上,同时在系统的 `host` 文件(`C:\Windows\System32\drivers\etc` 中)添加
`127.0.0.1 api.mockplus.cn`;通过这种方式把 `api.mockplus.cn` 的 `ip` 转为自己的新建的 `web` 的地址。
3、重新点击升级为专业版选项,程序表现和未做映射前一致。但是还是免费版。
4、分析 `JSON`,重要的是 `license` 这一节,`version` 值是 `free`,修改为版本号试试,点击升级为专业版选项,提示匹配失败。可以肯定这里是关键位置了。
5、用 `od` 加载 `mockplus.exe` 。尝试使用添加按钮断点的方式,发现这个程序中中使用gdi自己绘制的,水平不够,不会追。
查找字符串,搜索 `license`。找到 `push Unicode “license”` 这样的内容,查看上下文的代码。
发现规律性的。
```
move edx "user"
……
move edx "id"
move edx "user"
……
move edx "email"
move edx "user"
……
move edx "avatar"
```
可以看出这是在解析 `JSON`。
一步步跟踪。看出 `version` 字段的值是 `pro` ,就是专业版。
同时专业版的 `license` 节中添加新的字段 `expired,remainDay,expireTime`
经过多次测试。字段值为:
expired:null//过期时间?
remainDay:300//专业版激活剩余时间,可以改大点
expireTime:"2017-08-02T01:41:41.000Z"//貌似不检测这个
6、让自己的iis中的网站返回修改后的 `json`
```
{
"code": 0,
"message": "成功",
"user": {
"id": 261184,
"email": "test@163.com",//用户名,密码随便
"name": "test",
"avatar": "https://cdns-mockplus-cn.alikunlun.com/avatar/13.jpg",
"addTime": "2016-08-02T01:41:41.000Z",
"expireTime": null,
"license": {
"version": "pro",
"expired": null,
"remainDay": 300,//剩余的天数
"expireTime": "2017-08-02T01:41:41.000Z"
},
"referralCode": "rucvox",
"maxProjectCount": 0,
"emailVerified": 0,
"from": "self",
"color": "#4270f6"
},
"count": {
"receivedReview": 0,
"sentReview": 0,
"contacts": 0
}
}
```
在软件中点击升级为专业版选项,提示升级成功,剩余天数301天。
7、这个时候,如果关闭软件,在打开,会要求重新登录,用随便一个用户名密码肯定不成功,因为这个也是到网络验证的。
同样抓包(抓包的时候把host里的映射注释掉),调用的 `/user/login` 网络接口。
在自己的网站里添加并模拟。
具体的json为:
```
{
"code": 0,
"message": "成功",
"user": {
"id": 261184,
"email": "test@163.com",//用户名,密码随便
"name": "test",
"avatar": "https://cdns-mockplus-cn.alikunlun.com/avatar/13.jpg",
"addTime": "2016-08-02T01:41:41.000Z",
"expireTime": null,
"license": {
"version": "pro",
"expired": null,
"remainDay": 300,//剩余的天数
"expireTime": "2017-08-02T01:41:41.000Z"
},
"referralCode": "rucvox",
"maxProjectCount": 0,
"emailVerified": 0,
"from": "self",
"color": "#4270f6"
},
"sid":"4ae91cfa-0ccc-4465-bf22-65e0a5bc6338"
}
```
8、打开 `host` 里的映射。可以用随便的用户名密码登录了,而且也是专业版了。
9、具体的关键点没有追,就暂时用这种方式吧。