学习安卓逆向分析的一个小菜鸟,记录分析的“快乐时光”,小白图个乐,大佬乎喷
分析的APP
酷乐潮玩
包名:com.klcw.app.member
版本号:2.9.15
最低安装版本:Android 5.0 (LOLLIPOP)
抓包分析
APP安装到模拟器中,打开抓包软件,打开APP后,没有提示网络异常或者打开后闪退;
说明APP没有检测代理抓包,和证书校验
===================================
然后输入手机号和密码 后 抓取到一个登陆包
肉眼查看,sign 和 params 是被加密的;
猜测一下,sign 值 是32位的,应该是md5 加密
params 是base64编码过的,可能是 aes 或者 RSA 加密
打开jadx 开始 搜索定位关键词
这次使用 “app_key” 这个关键词去搜索,
因为其他的关键词 估计出现的频率会非常的高,影响找寻关键代码
反编译好后,开始搜索 app_key
出现了六条搜索记录
可以看到 ,大部分的匹配并不是完全的匹配到
只有第一个可以完全匹配关键词
==============================
这个是第一个点,然后在看 节点部分
软件的包名是 :com.klcw.app.member
而第一个是 com.alipay.sdk 这个一看就是阿里支付接口了 肯定不是
那么下面几个也不想是login登陆的地方 前面都带有pay_ 这个猜测应该是支付的key
==================================
最后一个是 安卓的 肯定不对了
一个登陆的函数 基本上APP都是自己写的 不可能调用第三方的接口
所以这个时候,我就开始更换一个关键词搜索
params 就选择这个关键词搜索吧
为了能够搜索更加的精准一点 加上 双引号 “params”
果然,搜搜到了 68个 和 params 关键词匹配的地方
这个时候就郁闷了。。。
还是按照之前的方法,首先看一下 节点上面 有没有 带login的关键词
然后 是自己的包 的
可以看到 带 login 字样的 特别的多;
然后开始了漫长的 查找过程>>>>>>>>>>>>>>
最终说实话,我没有看到关键点。。。。。。。
然后,我打开了神器 GDA
通过搜索 ::“app_key” 关键词 可以找到 一大堆的数据
然后 可以看到 前面有 两个 json 组包的地方
第一个 打开后发现不对 参数不对
然后打开第二个 json 组包的方法 ,这下就对了
str = NetworkHelper.getTimeStr();
str2 = Base64.encodeToString(p1.getBytes(), 3);
JSONObject jSONObject = new JSONObject();
jSONObject.put("app_key", str1);
jSONObject.put("method", p0);
jSONObject.put("sign", CryptoUtil.EncryptionByMD5(new StringBuilder().append(str2).append(str1).append(str).append(p0).toString()));
jSONObject.put("params", str2);
jSONObject.put("timestamp", str);
return jSONObject;
可以发现 sign 确实是 md5 加密的
不过 params 让我猜错了, 它仅仅只是 一个 base64位的编码而已
那么这个时候其实我们就可以拿 抓包的数据进行编码处理,得到一个 正常的值
{
"account":"13888888888",
"password":"a12345678",
"tenant_num_id":"8",
"data_sign":"0",
"use_platform":"2",
"channel_num_id":"99"
}
这个是解密的值,
"tenant_num_id":"8",
"data_sign":"0",
"use_platform":"2",
"channel_num_id":"99"
这个几个参数 在上面进行组包的时候 就有
然后 这个sign 值 也非常的简单
就是这个 params的值 + app_key + timestamp + method
然后进行md5的加密
eyJhY2NvdW50IjoiMTM4ODg4ODg4ODgiLCJwYXNzd29yZCI6ImExMjM0NTY3OCIsInRlbmFudF9udW1faWQiOiI4IiwiZGF0YV9zaWduIjoiMCIsInVzZV9wbGF0Zm9ybSI6IjIiLCJjaGFubmVsX251bV9pZCI6Ijk5In0800020211221164501gb.member.new.password.login
MD5 加密后 :::: 90e26999fa421556839bfc4069e4720f
和 抓包里面的数据是一模一样的
心得:
通过这次的APP的分析,其实可以得出一个结论
有时候 如果 一款反编译的工具 搜索不到关键词的值的时候
可以更换一下工具重新的尝试一下,说不定 就可以展示出你需要的关键代码
所以,GDA yyds!!!!!!