xx游戏登录协议分析
本帖最后由 缘起指间 于 2020-6-13 18:40 编辑闲话不说,正式开始吧。查壳,发现没壳,把apk 拖到模拟器安装好软件,可以正常运行。开始抓包吧,配置好fiddler,关于fiddler配置文章好多,这里就不多赘述了。输入账号密码点击登录后,fiddler 成功抓到一个登录post 包,点进去看看可以看出进行了URl编码,打开编程助手解个码呗,把结果保存一下稍后要用。
咱先试试用之前写好的“常见算法hook”xposed 插件来看看他用的是不是一些常见的标准算法(其实是因为懒,插件源码我会放到附件,感兴趣的朋友可以参考一下),打开日志,复制一小段reqdata的值 在日志里搜素一下,很幸运搜索到了,他用的是一些常见的标准算法 ,到这里基本明白了reqdata的值有两部分,前面一段用的是Aes 算法,后面的是RSA算法,而且加密前的数据和加密的key 也Hook 出来了,但是AES加密前的数据AES/ECB/PKCS5Paddingdata:pwd=abc123456&sta=0&name=176711156325&tune=qiguo_qgyx&device_id=c2a5f2b10fd596e8&token=&login_state=2&sign=PX1p6ulJF9qB%2FrFlwlgVPmoaK
0WlnRxzu82L%2Ba%2Fiufb%2Fooi6GpZMj8dJBxi3TTh05gNs43qWtwruwFJpw6onhzTOKtEa71rnGn4qE%2FbyjVnhfnq9n9RCtpUZBqAW
4I9%2BNONY0TRLd1v17khU5T32zOHTZoL1I4IYCJtOMtPrfEY%3D 中有一段sign值我们不知道怎么来的,这也是今天的重中之重了,掏出jadx 来反编译一波吧,通过xposed 插件打印的堆栈信息定位到加密函数,右键点击查找用例,看看哪里调用了a 函数,点击第二个,来到这里,跟进b函数,发现就是这里采用了数字签名算法生成了sign 私钥赋值给了a ,我们hook 一下updata方法就能得到加密前的数据,主要代码贴出来吧XposedHelpers.findAndHookMethod("java.security.Signature", lpparam.classLoader, "update", byte[].class, new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
super.beforeHookedMethod(param);
Log.d("tag", "data:" + new String((byte[]) param.args));
}
});
编译成xposed 插件成功hook 到加密前的数据data:pwd=abc123456&sta=0&name=176711156325&tune=qiguo_qgyx&device_id=c2a5f2b10fd596e8&token=&login_state=2,发现是把sign前面的数据在加密一次,到这里工作基本完成,主要思路就是这样了。 请教一下得到协议之后可以做什么 谢谢分享 北辰没有林安 发表于 2020-6-13 19:19
请教一下得到协议之后可以做什么
差不多就是为写第三方软件做准备,批量登陆.注册,日常任务什么的这方面作用多点. 技术大佬{:301_1003:} XX游戏,禁不住浮想联翩 能不能通过抓包进入一些需要资格的内侧游戏,伪装白名单,或者跳过白名单检测,比如最近内侧游戏某神和某联盟{:1_918:}超级想玩. Abcde 发表于 2020-6-13 21:22
差不多就是为写第三方软件做准备,批量登陆.注册,日常任务什么的这方面作用多点.
明白了,批量 XP模块安装了该怎么用呢 学习了。。。。。。。。。。。。
页:
[1]
2