开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 17789|回复: 38
收起左侧

[技术专题] 4399游戏盒 安卓APK sign 加密分析 之 so文件分析

[复制链接]
结帖率:75% (3/4)
发表于 2017-9-2 15:54:34 | 显示全部楼层 |阅读模式   山东省聊城市
           4399游戏盒 安卓APK加密分析 + so文件分析


4399 游戏盒都知道吧 今天玩他的加密 不过他的加密在so里面 是个md5  java层首先拼接的一段明文  传入到so里面在so里面有一个秘钥  加上它 进行的MD5 也很简单
直接上数据
  1. http://m.api.4399.cn/user/box/android/v1.0/log-in.html
  2. dateline=1504335770&deviceIdentifier=867947773617331&info=1&model=vivo+X9Plus&password=FfQn1pwmgRY%3D&sign=a51c1c806a43936ad1108b966813ffed&username=15845454545

  3. {"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

  1.   protected void buildRequestParams(String arg8, ArrayMap arg9) {
  2.         ArrayMap v3 = new ArrayMap();
  3.         this.buildSignRequestParams(arg8, v3);
  4.         ArrayList v4 = new ArrayList(v3.keySet());
  5.         Collections.sort(((List)v4));
  6.         StringBuilder v5 = new StringBuilder();
  7.         int v2;
  8.         for(v2 = 0; v2 < ((List)v4).size(); ++v2) {
  9.             Object v0 = ((List)v4).get(v2);
  10.             Object v1 = v3.get(v0);
  11.             if(!TextUtils.isEmpty(((CharSequence)v1))) {
  12.                 arg9.put(v0, v1);
  13.                 v5.append(((String)v1));
  14.             }
  15.         }

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

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

  19.     protected String buildSignValue(String arg2) {
  20.         return AppNativeHelper.getServerApi(arg2);
  21.     }
  22. }
复制代码
前面的不用管 都是一些参数的获取与拼接 重点为
arg9.put("sign", this.buildSignValue(v5.toString()));


put 了一段数据  参数名是sign   执行 buildSignValue 方法 并传递了一个 v5 的文本参数  返回了一段数据
点击 buildSignValue 方法跳转到
2.png
  1.   protected String buildSignValue(String arg2) {
  2.         return AppNativeHelper.getServerApi(arg2);
  3.     }
复制代码
在这里 下个断点  动态调试下
成功段在这里  
3.png

出现了明文 15043364968679477736173311FfQn1pwmgRY=15845454545

先来理解下这段明文 分割开来查看  1504336496  867947773617331  1  FfQn1pwmgRY=  15845454545
1504336496  时间戳
867947773617331 设备号
1   info
FfQn1pwmgRY=  加密后的密码
15845454545  账号
继续运行  出现密文
4.png

明文  15043368848679477736173311FfQn1pwmgRY=15845454545
密文  09ce7b25a9f0792c08573f7bae716980
既然出现了明文 跟密文  那么我们是不是可以来测试一下的至于算法是md5 就不用多说了
5.png
发现加密结果并不一样  那么应该还有其他参数 继续分析
双击 getServerApi  函数
6.png

发现来到了这里  注意了 这里头部是加载so文件的代码
System.loadLibrary("m4399");   字符窜 m4399  那么他调用的so文件就是 libm4399.so 查看下 lib文件夹有没有这个文件
7.png

有这个文件 那么 此时我们就需要另一款工具了 IDA  软件百度有 可自行下载
拖入到ID 分析
8.png

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

定位到这里  代码看着懵逼 看不懂是吧  那就对了我也看不懂 哈哈  都是一些汇编代码
没关系  你可以动态调试 so  一步一步的跟 他会出现明文的 包括java层 的明文
我就不动态调试了 因为这个so太简单  我们看到 下面有个call   call什么意思?玩破J的 都知道吧 他是调用函数入口
双击它 进入
10.png
在这里 我们看到一个 MD5_SERVER_KEY

鼠标移动放过去发现
11.png

有个字符串是吧 那么在双击它 进入
12.png
我们来到了这里 发现很多字符串 注意 MD5_SERVER_KEY   MD5  KEY  他是不是一个秘钥呢?
其实 不管PC 逆向 还是安卓 有的人应该知道  有时候就是靠蒙   蒙的心理还是要有的 玩意蒙对了呢?是不
ef2vx#sf*^FlklSD*9sdf(m$&qw%d7po   用这个 加上明文  之前我说了 他的加密就是 java层获取了一段明文 传入到so文件 再加上一个秘钥的  那么我们就用明文加上他
13.png
看吧 怎么样  蒙对了吧 哈哈 那么就是他了  没错
最后我要重复一句话
不管PC 逆向 还是安卓 有的人应该知道  有时候就是靠蒙   蒙的心理还是要有的 玩意蒙对了呢?是不
不管PC 逆向 还是安卓 有的人应该知道  有时候就是靠蒙   蒙的心理还是要有的 玩意蒙对了呢?是不
不管PC 逆向 还是安卓 有的人应该知道  有时候就是靠蒙   蒙的心理还是要有的 玩意蒙对了呢?是不



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

点评

楼主&#128002;。虽然已经过了两年,但4399依旧没改变策略,密钥还是原来的密钥   浙江省杭州市  发表于 2019-8-5 20:40
强悍啊   北京市北京市  发表于 2017-9-3 22:34

评分

参与人数 4好评 +2 精币 +5 收起 理由
空竹 + 1 好像很厉害的样子 膜拜大神
蚂蚁软件_萧峰 + 1 感谢分享,很给力!~
a2513472504 + 1 发到吾爱啊
1051496412 + 1 + 3 感谢分享,很给力!~

查看全部评分


本帖被以下淘专辑推荐:

结帖率:55% (6/11)
发表于 2023-5-8 13:49:57 高大上手机用户 | 显示全部楼层   吉林省长春市
大佬password是怎么加密出来的,求助,试了好多方法都不行
回复 支持 反对

使用道具 举报

结帖率:32% (6/19)

签到天数: 29 天

发表于 2022-6-4 08:57:52 | 显示全部楼层   贵州省黔东南苗族侗族自治州
下载已失效??
回复 支持 反对

使用道具 举报

发表于 2021-7-19 08:04:47 | 显示全部楼层   广东省东莞市
MD5怎么加密后不一样的了
回复 支持 反对

使用道具 举报

发表于 2021-7-19 07:50:06 | 显示全部楼层   广东省东莞市
不管PC 逆向 还是安卓 有的人应该知道  有时候就是靠蒙   蒙的心理还是要有的 玩意蒙对了呢?是不
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2018-8-17 13:41:12 | 显示全部楼层   河北省邢台市
好像很厉害的样子 膜拜大神
回复 支持 反对

使用道具 举报

结帖率:20% (1/5)

签到天数: 1 天

发表于 2018-5-19 19:05:36 | 显示全部楼层   广东省湛江市
楼主很高的技术水平哦
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2018-5-6 17:13:25 | 显示全部楼层   四川省绵阳市
好牛x...........
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2018-4-28 23:24:44 | 显示全部楼层   河北省石家庄市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

发表于 2018-4-4 20:04:21 | 显示全部楼层   江西省吉安市
膜拜大神,……。
回复 支持 反对

使用道具 举报

结帖率:0% (0/6)
发表于 2018-4-1 03:20:11 | 显示全部楼层   广东省广州市
不管PC 逆向 还是安卓 有的人应该知道  有时候就是靠蒙   蒙的心理还是要有的 玩意蒙对了呢?是不
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表