-
-
[原创]cocos2djs棋牌手游加密逆向,万物皆可Hook
-
发表于:
2021-7-3 13:05
13444
-
[原创]cocos2djs棋牌手游加密逆向,万物皆可Hook
首发本人的微信公众号《深邃的眼眸》,由本人原创
本人QQ:1301097594
交流群:79**
直接拖进jeb查看AndroidManifest.xml的入口点,发现是cocos2djs 写的程序
1 | <meta - data android:name = "android.app.lib_name" android:value = "cocos2djs" / >
|
![图片描述](upload/attach/202107/904015_BHAYARVAEQ36QS8.png)
这里直接把apk里面的assets拖出来,源码就在src目录 js写的
但是这里的js被加密了 jsc,需要先解密
![图片描述](upload/attach/202107/904015_QX3PMFXSUFD4MSC.png)
先等我点一份外卖,原价需要24.88 估计是看我够骚,居然优惠了我十块二
只需要17.88
![图片描述](upload/attach/202107/904015_DV92V8KG2QAEPEQ.png)
吃完后我感觉貌似不太好吃,没有女朋友的味道,随手便点了退款
![图片描述](upload/attach/202107/904015_NJD7CB8ASXKURDF.png)
白嫖完了之后,反手直接把ida给掏了出来
这里是关键 《掏出来比你大系列》
这里把apk lib目录下的libcocos2djs.so拖进ida 在exports搜索 xxtea
可以看到有一个命名为jsb_set_xxtea_key的函数
![图片描述](upload/attach/202107/904015_8PCD6925TER3QAZ.png)
这里调用此函数是传递了一个指针地址过来,并不能直接看到明文
![图片描述](upload/attach/202107/904015_AM3XXBZURWMYAC3.png)
直接到function calls查看谁调用了jsb_set_xxtea_key
![图片描述](upload/attach/202107/904015_X5XHHGHKR3J63J2.png)
v19寄存器存放着key 然后传递给jsb_set_xxtea_key 成功拿到key
![图片描述](upload/attach/202107/904015_P4JXAD4JDEQ3ZPS.png)
拿到key后直接解密jsc,用在吾爱找到了一个工具
![图片描述](upload/attach/202107/904015_BBRAJMSCAWUXRTX.png)
成功解密拿到明文代码,然后再把解密后的js代码拖进vscode分析一下
这里的发包都是使用的send发起 WebSocket
![图片描述](upload/attach/202107/904015_EVNR5MCUXNJQKDK.png)
尝试使用wpe抓封包看一下,这里发起的send数据是加密的
大概分析了一下js,代码貌似并没有对数据进行加密
猜测可能是so层对数据进行了加密
1 | 82 A8 DB 93 11 C4 1B 13 32 6C DB 93 11 E4 A0 B1 78 AA AD FA 65 A1 98 FC 75 A1 F9 A9 23 F6 E9 A1 23 F6 E9 A1 3D E6 AF EA 61 A1 F9 A9 20 B9
|
![图片描述](upload/attach/202107/904015_394PJCCWTGRZCKA.png)
这里返回到ida,在导出表搜索 websocket::send
两条结果,
![图片描述](upload/attach/202107/904015_H784SF3NCGJJNWJ.png)
这里直接使用frida进行hook,当前函数偏移量为0X00A5DFEC
![图片描述](upload/attach/202107/904015_SVQR2S98NMSUB8G.png)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | function get_module_address(soname,pianyi)
{
var module_address = Module.findBaseAddress(soname);
return module_address.add(pianyi);
}
function main()
{
Java.perform(function () {
Interceptor.attach(get_module_address( "libcocos2djs.so" , 0x00A5DFEC ),{
onEnter: function (args) {
/ / console.log(new Uint8Array(args[ 1 ].readByteArray(args[ 2 ].toInt32())). buffer );
console.log(args[ 1 ].readByteArray(args[ 2 ].toInt32()));
},
onLeave: function (retval) {
}
});
});
}
setTimeout(() = > {
main()
}, 200 );
|
明文出来了
![图片描述](upload/attach/202107/904015_RJQ9H844Y8EQGSG.png)
![图片描述](upload/attach/202107/904015_TYXGMHERSVQ5SPW.png)
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2021-7-8 18:58
被admin编辑
,原因: 勿私自留群号