700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > android资apk资源加密 4399游戏盒 安卓APK sign 加密分析 之 so文件分析

android资apk资源加密 4399游戏盒 安卓APK sign 加密分析 之 so文件分析

时间:2019-09-21 12:32:34

相关推荐

android资apk资源加密 4399游戏盒 安卓APK sign 加密分析 之 so文件分析

4399游戏盒 安卓APK加密分析 + so文件分析

4399 游戏盒都知道吧 今天玩他的加密 不过他的加密在so里面 是个md5java层首先拼接的一段明文传入到so里面在so里面有一个秘钥加上它 进行的MD5 也很简单

直接上数据

http://m./user/box/android/v1.0/log-in.html

dateline=1504335770&deviceIdentifier=867947773617331&info=1&model=vivo+X9Plus&password=FfQn1pwmgRY%3D&sign=a51c1c806a43936ad1108b966813ffed&username=15845454545

{"code":"321","result":{},"message":"密码错误"}复制代码dateline=1504335770&deviceIdentifier=867947773617331&info=1&model=vivo+X9Plus&password=FfQn1pwmgRY%3D&sign=a51c1c806a43936ad1108b966813ffed&username=15845454545

dateline=1504335770 时间戳

deviceIdentifier=867947773617331 设备号

info=1固定不知道干嘛的

model=vivo+X9Plus手机型号

password=FfQn1pwmgRY%3D密码 加密后的

sign=a51c1c806a43936ad1108b966813ffed 签名校验 搞的就是他

username=15845454545 账号

知道加密参数 反编译APK 进行分析

搜索sign最终定位到

1.png (31.54 KB, 下载次数: 0)

-9-2 15:10 上传

protected void buildRequestParams(String arg8, ArrayMap arg9) {

ArrayMap v3 = new ArrayMap();

this.buildSignRequestParams(arg8, v3);

ArrayList v4 = new ArrayList(v3.keySet());

Collections.sort(((List)v4));

StringBuilder v5 = new StringBuilder();

int v2;

for(v2 = 0; v2 < ((List)v4).size(); ++v2) {

Object v0 = ((List)v4).get(v2);

Object v1 = v3.get(v0);

if(!TextUtils.isEmpty(((CharSequence)v1))) {

arg9.put(v0, v1);

v5.append(((String)v1));

}

}

arg9.put("sign", this.buildSignValue(v5.toString()));

}

protected abstract void buildSignRequestParams(String arg1, ArrayMap arg2);

protected String buildSignValue(String arg2) {

return AppNativeHelper.getServerApi(arg2);

}

}复制代码前面的不用管 都是一些参数的获取与拼接 重点为

arg9.put("sign", this.buildSignValue(v5.toString()));

put 了一段数据参数名是sign 执行buildSignValue 方法 并传递了一个 v5 的文本参数返回了一段数据

点击buildSignValue 方法跳转到

2.png (13.64 KB, 下载次数: 0)

-9-2 15:13 上传

protected String buildSignValue(String arg2) {

return AppNativeHelper.getServerApi(arg2);

}复制代码在这里 下个断点动态调试下

成功段在这里

3.png (91.47 KB, 下载次数: 0)

-9-2 15:16 上传

出现了明文 15043364968679477736173311FfQn1pwmgRY=15845454545

先来理解下这段明文 分割开来查看15043364968679477736173311FfQn1pwmgRY=15845454545

1504336496时间戳

867947773617331 设备号

1 info

FfQn1pwmgRY=加密后的密码

15845454545账号

继续运行出现密文

4.png (41.65 KB, 下载次数: 0)

-9-2 15:22 上传

明文15043368848679477736173311FfQn1pwmgRY=15845454545

密文09ce7b25a9f0792c08573f7bae716980

既然出现了明文 跟密文那么我们是不是可以来测试一下的至于算法是md5 就不用多说了

5.png (84.11 KB, 下载次数: 0)

-9-2 15:31 上传

发现加密结果并不一样那么应该还有其他参数 继续分析

双击 getServerApi函数

6.png (19.14 KB, 下载次数: 0)

-9-2 15:33 上传

发现来到了这里注意了 这里头部是加载so文件的代码

System.loadLibrary("m4399"); 字符窜 m4399那么他调用的so文件就是 libm4399.so 查看下 lib文件夹有没有这个文件

7.png (12.43 KB, 下载次数: 0)

-9-2 15:37 上传

有这个文件 那么 此时我们就需要另一款工具了 IDA软件百度有 可自行下载

拖入到ID 分析

8.png (61.33 KB, 下载次数: 0)

-9-2 15:39 上传

这里是 so文件公开的一些方法 以便外部调用查找getServerApi

9.png (25.88 KB, 下载次数: 0)

-9-2 15:41 上传

定位到这里代码看着懵逼 看不懂是吧那就对了我也看不懂 哈哈都是一些汇编代码

没关系你可以动态调试 so一步一步的跟 他会出现明文的 包括java层 的明文

我就不动态调试了 因为这个so太简单我们看到 下面有个call call什么意思?玩破J的 都知道吧 他是调用函数入口

双击它 进入

10.png (12.95 KB, 下载次数: 0)

-9-2 15:45 上传

在这里 我们看到一个 MD5_SERVER_KEY

鼠标移动放过去发现

11.png (15.36 KB, 下载次数: 0)

-9-2 15:46 上传

有个字符串是吧 那么在双击它 进入

12.png (23.38 KB, 下载次数: 0)

-9-2 15:46 上传

我们来到了这里 发现很多字符串 注意 MD5_SERVER_KEY MD5KEY他是不是一个秘钥呢?

其实 不管PC 逆向 还是安卓 有的人应该知道有时候就是靠蒙 蒙的心理还是要有的 玩意蒙对了呢?是不

ef2vx#sf*^FlklSD*9sdf(m$&qw%d7po 用这个 加上明文之前我说了 他的加密就是 java层获取了一段明文 传入到so文件 再加上一个秘钥的那么我们就用明文加上他

13.png (114.11 KB, 下载次数: 0)

-9-2 15:51 上传

看吧 怎么样蒙对了吧 哈哈 那么就是他了没错

最后我要重复一句话

不管PC 逆向 还是安卓 有的人应该知道有时候就是靠蒙 蒙的心理还是要有的 玩意蒙对了呢?是不

不管PC 逆向 还是安卓 有的人应该知道有时候就是靠蒙 蒙的心理还是要有的 玩意蒙对了呢?是不

不管PC 逆向 还是安卓 有的人应该知道有时候就是靠蒙 蒙的心理还是要有的 玩意蒙对了呢?是不

下面插播一条广告~~~QQ交流群:468241990欢迎各路大神进入交流共同学习

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。