某Android手游的lua源码逆向分析与还原



近日分析某一款Android上面的手游,反编译后再起asset目录下可以看来加密过的本子,lib目录下发现lua的so
初始质疑其选拔lua本子已毕的

近些年分析某一款Android上边的手游,反编译后再起asset目录下得以看看加密过的剧本,lib目录下发现lua的so
开首思疑其应用lua本子完结的

  • 解密函数定位
  • 动态跟踪解密函数流程
  • 静态分析解密函数流程
  • 编写程序进行解密
  • 解密函数定位
  • 动态跟踪解密函数流程
  • 静态分析解密函数流程
  • 编写程序举行解密

lib目录下so的名称

lib目录下so的名称

图片 1

图片 2

1. 解密函数定位。

IDA加载SO,导出函数搜索关键字loadbuffer,定位到lua脚本加载的地方。Android
so中使用lua脚本需采纳loadbuffer函数举行加载该脚本。

图片 3

1. 解密函数定位。

IDA加载SO,导出函数搜索关键字loadbuffer,定位到lua脚本加载的地点。Android
so中使用lua脚本需选择loadbuffer函数进行加载该脚本。

图片 4

2. 动态跟踪解密函数流程。

开行游戏后,动态调节该so,loadbuffer上一步的操作为其解密函数跟踪分析。(最后跳转的函数为bt_decrypt)

1.getFileData函数

图片 5

2.doGetFileData

图片 6

3.bt_decrypt函数

图片 7

2. 动态跟踪解密函数流程。

先导游戏后,动态调试该so,loadbuffer上一步的操作为其解密函数跟踪分析。(最后跳转的函数为bt_decrypt)

1.getFileData函数

图片 8

2.doGetFileData

图片 9

3.bt_decrypt函数

图片 10

3. 静态分析解密函数流程。

1.分析bt_decrypt函数,有分明的底部判断操作。

图片 11

图片 12

分析其操作为读取第八位后即1,左移两位1<<2 == 4 在加40的位移
刚好4c对应的操作及函数_Z13decrypt_basicPhi

2.分析decrypt_basic函数,有过滤掉前32位无效操作以及读取第九位作为偏移量进行函数操作。

图片 13

偏移的函数列表

图片 14

3.分析逐个函数操作,以encrypt_hash_odd为例。(主要对HASH_BITS举办操作,步骤2中的解密最后索要改哈希表进行异或解密)

图片 15

4.原理总括:读取加密脚本的第九位判断,使用相应偏移函数对哈希表前32字节进行操作,最终将修改的位数填充到哈希表128位。完结对哈希表的操作,使用该哈希表举办异或解密。

3. 静态分析解密函数流程。

1.分析bt_decrypt函数,有强烈的尾部判断操作。

图片 16

图片 17

解析其操作为读取第八位后即1,左移两位1<<2 == 4 在加40的位移
刚好4c对应的操作及函数_Z13decrypt_basicPhi

2.分析decrypt_basic函数,有过滤掉前32位无效操作以及读取第九位作为偏移量举办函数操作。

图片 18

偏移的函数列表

图片 19

3.分析各类函数操作,以encrypt_hash_odd为例。(主要对HASH_BITS举办操作,步骤2中的解密最终索要改哈希表举办异或解密)

图片 20

4.规律总括:读取加密脚本的第九位判断,使用相应偏移函数对哈希表前32字节进行操作,最终将修改的位数填充到哈希表128位。完结对哈希表的操作,使用该哈希表进行异或解密。

4.编纂解密程序解密脚本文件夹验证

图片 21

解密后结果可以平昔看出lua源码

图片 22

4.编制解密程序解密脚本文件夹验证

图片 23

解密后结果可以直接看到lua源码

图片 24

发表评论

电子邮件地址不会被公开。 必填项已用*标注