本帖最后由 skyxiaoyu 于 2017-3-18 22:44 编辑
2017年3月18日新增内容
解密部分源代码。
我特地说明几点:
1. 这个工具不是luac的通用解密工具,luac也无法做通用解密工具,稍微有经验的人都会修改opcode进行加密。
2. 这个工具是提供来解决cocos的lua解密的快捷方法的,其实没有这个工具,知道原理的人也可以轻松解出。
3. 这个工具是我在使用过程中发现有这样一个工具就更好然后顺手就撸的一个工具,然后发出来给有需求的同学使用,省得浪费时间重复造轮子,没有其他原因。
以下附上解密部分的源代码(工具:aardio),需要的同学请使用或者查看然后自己撸一个自己想要的:
[AAuto] 纯文本查看 复制代码 //批量处理文件
var file = 0;
fsys.enum( input_dir, //指定要遍历的目录
file_type, //指定查询文件名,支持windows掩码
function(dir,filename,fullpath,findData){ //指定触发器
if(filename){
file = file + 1
//打开文件
var file_content = string.load(fullpath)
//先去除头部的sign签名
//如果没有签名的,就不用去除了
var file_content_fix_head
file_content_fix_head = string.replace(file_content, tostring(mainForm.xxtea_sign.text), "", 1);
//然后执行xxtea的解密
var file_decrypt_content = string.xxtea.decrypt(file_content_fix_head, tostring(mainForm.xxtea_key.text))
//得到解密后的文件,进行保存
//首先拼凑出完整的路径
var temp_dir = dir
var save_path = string.replace(temp_dir, "@"++mainForm.dir_input.text, "")
var save_path_all
if(mainForm.check_zip.checked){
save_path_all = mainForm.dir_out.text ++ save_path ++ filename
thread.command.print("解密完成 ---- > ", save_path ++ filename)
}
else{
save_path_all = mainForm.dir_out.text ++ save_path ++ string.replace(filename, "@luac", "lua")
thread.command.print("解密完成 ---- > ", save_path ++ string.replace(filename, "@luac", "lua"))
}
string.save(save_path_all, file_decrypt_content);
}
}
);
if (file == 0) {
if(mainForm.check_zip.checked){
thread.command.print("抱歉,没有发现任何zip文件。请检查。" )
}
else{
thread.command.print("抱歉,没有发现任何lua文件。请检查。" )
}
return -6;
}
thread.command.print("")
thread.command.print("代码解密已经全部完成。Author:skyxiaoyu([url]www.52pojie.cn[/url])" )
------------------------------------------------------------------------------------------------------------
以下是原正文内容
简单地说几句:
这是一个可以解密xxtea加密的lua代码文件的工具。
cocos-lua、quick-cocos都是使用xxtea对lua文件进行加密,加密后将sign追加在文件头部作为标识。
加密的key则是直接写在代码里面的。怎么去找到这个key,需要自己去翻阅cocos在加密这块的代码。
然后如果没有做二次处理的,通常很容易找到,而如果加密了,就需要跟进二次处理的算法去进行反推。
使用这个工具,需要假设你自己已经找到了key。
此工具仅仅是帮助你快速进行文件处理,而非是能帮助进行暴力破解的。
也希望使用此工具的,更多的用于学习与研究,而非其他目的。
以下使用网上下载的一份cocos-lua代码为例,进行工具的使用演示:
这是网络上下载的一款正在运营的商业游戏的包体。
为了避免一些问题,我隐藏了它的正式名字。
将它改名为rar或者zip,然后解压,得到文件的目录。
进入到lib目录,如果能看到libcocos2dlua.so。说明这是一个cocos-lua制作的游戏。
这不是唯一的判断方法,却是最快捷的判断方法。
进入到lua的逻辑目录,可以看到文件结构了。
用sublime打开,看不到东西。
notepad++,就可以看到位于头部的签名了。
打开工具,准备开始解密。
到这一步时,你必须掌握了sign和key。sign位于lua文件的头部,很容易找到。
key的寻找可以简单也可以容易,并不在这里讨论的范围。
依次填写好sign,key,选择输入的目录和输出的目录。
加密的模式在引擎中有两种,一种是打包为zip,一种是加密为luac。
两种模式都可以进行快速的解密。
在输出的log中,我添加了红框内的内容,防止被恶意转载。
解出来的文件,已经是lua的明文了。
所有的代码都被正常的解密。
可以藉此阅读与学习商业化的产品做了哪些措施去避免你可能想不到的问题与坑。
或提高自己的代码水平。
本工具基于win10开发,经朋友测试win7 x64没问题。
其他操作系统不保证兼容性。
使用aardio开发,不需要安装直接运行,也无需安装其他环境。
祝好:)
上工具了:
xxtea_decrypt.rar
(365.5 KB, 下载次数: 3871)
|