赞
踩
前段时间的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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。