x715quan逆向协议分析
x715quan逆向协议分析
获取到以下数据,从键值分析nonce,codeSign和access_token三个数值有加密

将apk放入JEB2进行分析 通过搜索调试定位到
nonce
1 | protected void a(String arg11, JSONObject arg12, d arg13) { |
可知nonce原为UUID,用replaceAll替换了“-”变为无符号的格式;
codeSign
if中 new f(“codeSign”, v.a(v0, v1, MyApplication.getInstance().getUserDataEntity().getUid() + “”, v2)),
else中 new f(“codeSign”, v.a(v0, v1, v2)),
v0:nonce的值
v1: 由new f(“data”, v1.toString())得知是数据中data的值
v2:当前时间戳 数据中的timestamp
进入v.a()方法,获得如下
1 | public static String a(String arg3, JSONObject arg4, String arg5, long arg6) { |
进入af.b方法:
1 | public static String b(int arg1) { |
根据方法可知2131230990和的2131231233值隐藏在资源文件中;
将数字转为16进制后再resources—values—public中搜索7f08010e 找到
根据类型在strings.xml中找到同名变量:
同理获得2131231233的资源值是:860f50db3569e448
进入af.a方法中
1 | public static String a(String arg2, String arg3) { |
两个参数相加并reverse可得:844e9653bd05f0687db78e96bfc5ca49
进入r.a可知是md5加密,所以结果是
(data+nonce+844e9653bd05f0687db78e96bfc5ca49+timestamp).toUpperCase();
access_token
new f(“access_token”, “” + a.h)
进入a.h后得到 a.h = r.a(v0);
String v0 = a.f + Build.PRODUCT + MyApplication.getNetworkType() + MyApplication.getDeviceId();
此时也可使用log输出获得v0的值
在apk用解压工具打开,移动出classes.dex并在逆向助手中反编译dex,根据上面这个方法的包名获取地址package com.quan0715.forum.b;在a.smali中找到了此方法,对照这个变量下面添加 invoke-static {v0}, Lcrack;->log(Ljava/lang/String;)V 然后将crack.smali放入dex根目录,再重新用逆向助手重打包,并替换apk中的dex文件并重新安装此apk;如果apk安装失败重新签名即可。
打开ddms 获取此应用的log信息 由log信息获得v0的值是version+platform+network+device;
然后进行md5加密即可得token值
- 本文标题:x715quan逆向协议分析
- 本文作者:Ptmapo
- 本文链接:https://1997888.xyz
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!



