近日分析某一款Android上面的手游,反编译后再起asset目录下可以看来加密过的本子,lib目录下发现lua的so
初始质疑其选拔lua本子已毕的
近些年分析某一款Android上边的手游,反编译后再起asset目录下得以看看加密过的剧本,lib目录下发现lua的so
开首思疑其应用lua本子完结的
- 解密函数定位
- 动态跟踪解密函数流程
- 静态分析解密函数流程
- 编写程序进行解密
- 解密函数定位
- 动态跟踪解密函数流程
- 静态分析解密函数流程
- 编写程序举行解密
lib目录下so的名称
lib目录下so的名称
1. 解密函数定位。
IDA加载SO,导出函数搜索关键字loadbuffer,定位到lua脚本加载的地方。Android
so中使用lua脚本需采纳loadbuffer函数举行加载该脚本。
1. 解密函数定位。
IDA加载SO,导出函数搜索关键字loadbuffer,定位到lua脚本加载的地点。Android
so中使用lua脚本需选择loadbuffer函数进行加载该脚本。
2. 动态跟踪解密函数流程。
开行游戏后,动态调节该so,loadbuffer上一步的操作为其解密函数跟踪分析。(最后跳转的函数为bt_decrypt)
1.getFileData函数
2.doGetFileData
3.bt_decrypt函数
2. 动态跟踪解密函数流程。
先导游戏后,动态调试该so,loadbuffer上一步的操作为其解密函数跟踪分析。(最后跳转的函数为bt_decrypt)
1.getFileData函数
2.doGetFileData
3.bt_decrypt函数
3. 静态分析解密函数流程。
1.分析bt_decrypt函数,有分明的底部判断操作。
分析其操作为读取第八位后即1,左移两位1<<2 == 4 在加40的位移
刚好4c对应的操作及函数_Z13decrypt_basicPhi
2.分析decrypt_basic函数,有过滤掉前32位无效操作以及读取第九位作为偏移量进行函数操作。
偏移的函数列表
3.分析逐个函数操作,以encrypt_hash_odd为例。(主要对HASH_BITS举办操作,步骤2中的解密最后索要改哈希表进行异或解密)
4.原理总括:读取加密脚本的第九位判断,使用相应偏移函数对哈希表前32字节进行操作,最终将修改的位数填充到哈希表128位。完结对哈希表的操作,使用该哈希表举办异或解密。
3. 静态分析解密函数流程。
1.分析bt_decrypt函数,有强烈的尾部判断操作。
解析其操作为读取第八位后即1,左移两位1<<2 == 4 在加40的位移
刚好4c对应的操作及函数_Z13decrypt_basicPhi
2.分析decrypt_basic函数,有过滤掉前32位无效操作以及读取第九位作为偏移量举办函数操作。
偏移的函数列表
3.分析各类函数操作,以encrypt_hash_odd为例。(主要对HASH_BITS举办操作,步骤2中的解密最终索要改哈希表举办异或解密)
4.规律总括:读取加密脚本的第九位判断,使用相应偏移函数对哈希表前32字节进行操作,最终将修改的位数填充到哈希表128位。完结对哈希表的操作,使用该哈希表进行异或解密。
4.编纂解密程序解密脚本文件夹验证
解密后结果可以平昔看出lua源码
4.编制解密程序解密脚本文件夹验证
解密后结果可以直接看到lua源码