《摩尔庄园》手游登录协议分析
本帖最后由 物语之心 于 2021-9-19 23:36 编辑## 0x00 前言
>最近学习安卓逆向,刚好发现有个小时候玩过的页游,现在最近一段时间出了手游,拿来练练手也挺好。写的不是很好,请各位看官看个热闹就好。
## 0x01 使用工具
> - Fiddler 任意版本 、jadx、IDA
>
> - 雷电模拟器
>
> - 代{过}{滤}理工具 Postern
>
> - 任意一款编程工具
## 0x02 教程内容
### 0x20 首先配置好 Fiddler 这里就不赘述了,论坛里有很多相关教程,模拟器里配置好
### 0x21 打开游戏,随便登录个账号密码抓个登录包。
> 可以发现返回内容是没经过加密,然后需要的参数 这里就列举几个比较重要的参数
| 表单名称 | 值| 说明|
|----| ----|---|
| channelNo | 110001|登录渠道,如IOS渠道为 210009|
| key | 1881c326106056afee3da488560d75b9 |经过 username与pwd计算得出的md5|
| username | 123123123 |游戏账号|
| userpwd | 13038c34b00c2645f1cf4e5f087c1681 |密码 DES_ECB|
| versionName | 0.13.21082101S |安装包的版本号|
> 返回关键信息
| 表单名称 | 值| 说明|
|----| ----|---|
| sid | eaps7chp | 游戏ID |
| token | 5779c00f1e0a8cd6393b66f6f8930b0c | 登录令牌 |
> 登录成功后 二次令牌登录游戏
> 提交格式为 JSON 需要的关键数据为 sid 和 token
提交地址已匿。可以通过自行复现找到,接下来可以分析dex了。
### 0x22寻找加密过程
> 将APK丢入 Apktool Box 先查个壳
> 然后丢入 jadx 直接载入apk 这里采用最简单的方式,全局搜索提交地址的部分信息 < mobile!sdkLogin.action > 试着找出关键登录函数
>继续跟进搜索 **xxx_LOGIN** 被谁调用了
>可以看到有个调用函数getLoginUrl 提交的时候肯定也有地方引用了这个函数
> 可以看到 他有个 ``XXXSDKUser`` 直接在这里面找就大概率能找到登录封装过程了。
> 这里有SDK登录函数,然后我们仔细分析
> 搜索 encryptMsgMd5 找到对应加密函数 可读性还是挺高的
> 搜索 ```DesUtil.encrypt```
```java
public static String encrypt(String str) {
try {
return SocketHelper.m5514E(str);
} catch (String str2) {
str2.printStackTrace();
return null;
}
}
```
> 继续跟进 SocketHelper.m5514E
> 发现新版的apk已经将加密函数放到另外加载SocketHelper库文件里 那我们在lib/armeabi-v7a里找到libSocketHelper.so 拖入 IDA里
> 这里说明了 Key 为 leiting 然后跟进去就会发现
> 以上的伪代码 还是比较好分析的,既然知道了加密方法 就可以写程序跑一下了。
## 0x03 封装程序
> 使用易语言 简单又方便
## 0x04 写在最后
本篇文章仅供学习交流,提供一个学习思路。致谢所有为逆向工作做出贡献的所有大佬。
转载请注明来处。 大哥厉害 学到了 我准备 弄这个游戏谢谢 大哥祝大哥中秋节快乐 大佬,我这里有个apk游戏程序包,现在出现了风险提示,一键登录问题,能帮我做个登录器吗, 学习学习,谢谢 感谢大佬分享 《摩尔庄园》手游登录协议分析 收藏学习 跟着学习学习 正好有相同类型的问题 {:1_921:}谢谢分享 谢谢分享,,, 最近迷上了这个手游,身边好多人玩呢