当前位置:   article > 正文

Lua脚本解密_小白一键解密lua脚本

小白一键解密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);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

将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;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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

在这里插入图片描述

使用命令反编译出lua脚本

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

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/84248
推荐阅读
相关标签
  

闽ICP备14008679号