近日分析某一款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源码

某Android手游的lua源码逆向分析与还原的更多相关文章

  1. Lua源码编译之CL编译器编译

    通过使用VC下的CL编译器,可方便地编译Lua源码,而无需构造工程并设置各种选项: 以下以源码Lua5.3.1版本为例,将通过CL编译选项直接编译源码,为方便编译将采用批处理脚本,脚本放置在Lua解压 ...

  2. 用VC编译lua源码,生成lua语言的解释器和编译器

    用VC编译lua源码,生成lua语言的解释器和编译器 1.去网址下载源码 http://www.lua.org/download.html 2.装一个VC++,我用的是VC6.0 3.接下来我们开始编 ...

  3. Android Small插件化框架源码分析

    Android Small插件化框架源码分析 目录 概述 Small如何使用 插件加载流程 待改进的地方 一.概述 Small是一个写得非常简洁的插件化框架,工程源码位置:https://github ...

  4. 用vs2013编译lua源码方法(一)

    用vs2013编译lua源码方法 来源:网络    编辑:admin 1.下载lua源码:lua-5.2.3.tar.gz,解压 2.用vs2013建立一个win32工程: 1)下载后解压到一个目录下 ...

  5. 国内Lua先驱的Lua源码总结

    http://www.codingnow.com/temp/readinglua.pdf <Lua源码欣赏> By 云风

  6. android应用商店完整版源码

    这个是从一个安卓学习的网站上转载过来的,android应用商店完整版源码,大家可以看看一下吧. _op><ignore_js_op> <ignore_js_op>< ...

  7. windows下编译lua源码

    所有的lua源码都放在了 src 文件夹下,当然,不同的lua版本目录结构有可能不一样,但是都会有 src 这个文件夹,只有这个才是我们编译必须的.而且lua越做越精简了,5.1的版本里面还有一些te ...

  8. 用vs2013编译lua源码方法

    1.下载lua源码:lua-5.2.3.tar.gz,解压 2.用vs2013建立一个win32工程: 1)下载后解压到一个目录下,这里假设解压到  F:\lua-5.2.3  注意下载的版本,如果是 ...

  9. Android版的疯狂猜图游戏源码完整版分享

    这个游戏源码是在安装教程网那么分享过来的,Android版的疯狂猜图游戏源码完整版分享,也是本人之前很早以前发的一款游戏源码的,大家如果想了解一下,可以看看吧,不说多了,上一个图先吧.   > ...

随机推荐

  1. weex开发前配置

    weex 环境配置:win10 node java git weex-toolkit :npm install weex-toolkit -g在安装weex-toolkit的时候,尽量不要使用cnpm ...

  2. 北大ACM(POJ1019-Number Sequence)

    Question:http://poj.org/problem?id=1019 问题点:打表. Memory: 392K Time: 16MS Language: C++ Result: Accept ...

  3. https与http的访问,应对苹果ATS验证问题

    为应对2017年1月1日苹果ATS的问题,微信.微博等等APP要求挂载的网页必须https访问,需要添加ssl认证. 一.SSL认证 选取了阿里云提供的免费SSL,使用期限为一年.电话咨询阿里客服,免 ...

  4. java_IO_1

    public class DirStudy { public static void main(String[] args) { File file = new File("F:/Eclip ...

  5. 06Microsoft SQL Server 完整性约束

    Microsoft SQL Server 完整性约束 标识 IDENTITY自动编号 CREATE TABLE table_name( id ,), NAME ) not null, sex ) de ...

  6. Luogu P3110 [USACO14DEC]驮运Piggy Back

    解题思路 看到下面很多人都在说什么遇到了之后要不要背着走,其实根本不需要,同样的我也是跑了三遍$SPFA$,求出了以$1$为起点到个点的$dist$,和以$2$为起点到个点的$dist$,还有以$n$ ...

  7. java环境初级部署及项目搭建

    一.网页地址 Java各版本下载地址: http://www.oracle.com/technetwork/cn/java/archive-139210-zhs.html Eclipse官方下载地址: ...

  8. 阿里云安装nodejs

    cd进入root目录下: cd /root 下载node.js安装包 wget https://nodejs.org/dist/v8.11.2/node-v8.11.2-linux-x64.tar.x ...

  9. 微信小程序官方指南手册,教你如何使用微信小程序!

    2017年1月9日,小程序如约而至.程序员们都讨论的热火朝天,但是真正使用过微信小程序的又有几个呢?下面今天我们给大家介绍下微信小程序到底应该如何使用? 首先,你的微信必须是最新版本的,微信官方是从要 ...

  10. mac下Redis安装和使用

    前言 本篇文章主要讲述了Mac下Redis的安装和使用的经验,并将python如何操作Redis做了简单介绍. 1. redis 安装 和启动 1.1 用brew安装 查看系统是否已经安装了Redis ...