如何从 Android .apk 资产文件夹中解压缩 LUA 脚本?
2016-6-21 1:44:11
收藏:0
阅读:78
评论:2
我正在尝试反向工程一款 Android 游戏,以找出它们计算背后的逻辑。
解压缩 .apk 文件后,/assets/lua 文件夹中有 lua 脚本,并且它们都有 .lua 扩展名。但是,如果用文本/十六进制编辑器打开,它们就不可读了。
例如:这个文件
所有文件的内容都以“droi.lua”标识结尾,这使我想这不是一个 LUA 脚本,而是一种针对 Android 的压缩 LUA 脚本。 Android 有一种机制用于压缩发布目的的文件。
有人曾经遇到过这种情况吗?有没有办法使这样的文件可读?
是否有任何方法/程序可以解压缩从.apk 资产中提取的文件(例如 png、lua 等)?
点赞
用户2879085
我会试着调试它并在应用程序加载脚本时暂停它。我会假设应用程序在某个时候解密/解压缩/...文件并将它们存储在内存中,以便可以正确访问/执行它们。如果您能够在正确的位置设置断点,然后搜索应用程序的内存,您应该能够找到它。
这种方法的优点是它不在乎使用了什么样的加密或压缩,并且您不必理解算法。
我以前没有在Android上尝试过这样的事情,但是我已经成功地在Windows上使用过Cheat Engine这样的工具。
由于有Cheat Engine for Android的版本,因此这应该相对简单。
另一个想法是使用Preferences Manager之类的应用程序,检查是否可以找到任何有趣的东西,如加密密钥或可能隐藏的开发人员选项,该选项可以以某种方式使您看到未加密的文件内容。
2018-05-07 08:22:55
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
将下面翻译成中文并且保留原本的 markdown 格式
该文件中的数据熵非常高(Shannon熵约为7.98,理论上最大值为8)。我将其与压缩的或7zipped文本文件的熵进行了比较,得到的熵大约为6至7之间。
高熵结合它似乎没有任何可识别的头字节,提示我它可能是加密的。
如果我是你,我会在应用程序中查找嵌入的对称加密密钥。
如果您感兴趣,这里是我用来计算熵的 Python 脚本:
import sys import math print('Calculating entropy of: {}'.format(sys.argv[1])) with open(sys.argv[1], 'rb') as fp: data = fp.read() # Trim off droi.lua data = data[:-8] # Calculate the frequency of each byte value in the file frequencies = [] for b in range(256): ctr = 0 for byte in data: if byte == b: ctr += 1 frequencies.append(float(ctr) / len(data)) # Shannon entropy ent = 0.0 for freq in frequencies: if freq > 0: ent = ent + freq * math.log(freq, 2) ent = -ent print('Shannon entropy:') print(ent)