Lua脚本解密

文章目录

前言

前段时间的O泡果奶病毒火了一把,虽然平时很少看android,却也来了兴趣,大致看了一下,也搜了搜,知道了关键点在lua上,可惜之前没接触过lua,当时并没有把脚本解出来。今天看到了一个lua解密的帖子,就试了下,没想到真的成功了,在此作一下记录吧

分析

android目录结构

在这里插入图片描述

关键的lua逻辑目录

在这里插入图片描述

关键文件是main.lua

使用编辑器看也不是luac文件

在这里插入图片描述

当我看到这个帖子时,翻看了下android的目录,果然看到了libluajava.so文件

在这里插入图片描述

又了解到libluajava.so文件会使用luaL_loadbuffer或者luaL_loadbufferx函数对Lua脚本进行加载,通常解密也在这个位置

使用ida打开,找到函数位置

在这里插入图片描述

在github上找到函数的原型,了解到每个参数传递的是什么

LUALIB_API int luaL_loadbufferx (lua_State *L, const char *buff, size_t size,
                                 const char *name, const char *mode) {
  LoadS ls;
  ls.s = buff;
  ls.size = size;
  return lua_load(L, getS, &ls, name, mode);
}

将ida中的伪代码稍微改一下,形成以下代码

unsigned char* decrypt(const unsigned char* buffer, size_t size) {
	unsigned char* debuffer = (unsigned char*)malloc(size);
	debuffer[0] = 27;
	int t = 0;
	for (int i = 1; i < size; i++) {
		t += size;
		debuffer[i] = buffer[i] ^ (t
			+ ((unsigned int)(((unsigned __int64)(-2139062143LL * t) >> 32) + t) >> 7)
			+ ((signed int)(((unsigned __int64)(-2139062143LL * t) >> 32) + t) < 0));
	}
	return debuffer;
}

将main.lua读取后调用此函数返回debuffer数据,解出luac文件

在这里插入图片描述

使用命令反编译出lua脚本

java -jar unluac_2015_06_13.jar main.luac > out.lua

在这里插入图片描述

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值