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



    近日分析某一款Android上面的手游,反编译后再起asset目录下可以看到加密过的脚本,lib目录下发现lua的so 初步怀疑其使用lua脚本实现的

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

    lib目录下so的名称

    1. 解密函数定位。

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

    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位。完成对哈希表的操作,使用该哈希表进行异或解密。

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

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

  • 相关阅读:
    系统角色权限问题
    解析JQuery Ajax
    JavaScriptSerializer序列化时间处理
    Javascript加载talbe(包含分页、数据下载功能)
    代理模式
    工厂模式
    单例模式
    Oracle内置函数
    Oracle大数据SQL语句优化
    Oracle大数据查询优化
  • 原文地址:https://www.cnblogs.com/konf/p/7209690.html
Copyright © 2020-2023  润新知