学习安卓逆向分析的一个小菜鸟,记录分析的“快乐时光”,小白图个乐,大佬乎喷
分析的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.loginMD5 加密后 :::: 90e26999fa421556839bfc4069e4720f
和 抓包里面的数据是一模一样的 心得:通过这次的APP的分析,其实可以得出一个结论有时候 如果 一款反编译的工具 搜索不到关键词的值的时候可以更换一下工具重新的尝试一下,说不定 就可以展示出你需要的关键代码所以,GDA yyds!!!!!!