peng1990sr 发表于 2019-7-14 01:10

某LuaJit游戏解密教程~~

引子~~最近挺闲的,玩会手游,想充值点钱买把武器~奈何没有充值渠道{:1_936:}
所以只能自己动手了~在MT管理器分析了2天“DEX”无果~~
没有成功,无奈只能从LUA入手了。
1、APKtools反编译文件

2、打开assets/res/本来想找lua文件的,结果全是各种图片~咋办!!
俗话说得好,找不到媳妇心不死~~
我直接按这吾爱大牛们的教程,具体太多了,我估计列出来这个帖子都装不下~.~不好意思,都是好人啊{:1_887:}
将lib里面最大的so文件拉到ida里面,话说~吾爱虚拟机那啥ida里面的py什么东西老出错,还是找人帮忙弄的。。
又一村啊又一村,乱点居然看到了unzipfile,然后看到了game.zip,感觉有戏。。然后一顿操作后,具体不好意思说的, 终于找到了zip文件,原来一直在那里,只是你不知道~~

3、打不开啊,打不开,这个东西~!~

一阵心灰意冷,实在不行就算了,结果翻so文件,看到了 大牛们说的那个xxtea字符~~
再奔一次吧,万一成了呢~好吧,其实是打开方式的时候不小心点到了文本,看见上面有一串字符串

4、死马当活马医吧,打开string窗口(好吧,大牛们一直说这个string窗口,但是这个string窗口我把IDA翻了无数遍都没找到,去百度了快捷键才知道Shift+F12可以搞)
貌似转运了,好像不合适吧,管他的,直接搜索文本上面的字符,还真有结果~!


点进去,然后把hei54拉到一个叫xxtea软件里面,和那个字符串一起放进去,结果就成功了。。其实我是按着lua的套路干的
没想到zip也可以搞~顺利的无语了~~看着解密完成一顿欣喜啊,然后打开解密后的zip文件,居然可以解压了,差点把楼上的妹子都吼下来了。。
5、结果冷水冰凉冰凉的,。,打开乱嘛,无语了,用不用这么复杂啊,你连充值渠道都没有的游戏,有就没那么复杂了。,。(虽然我不一定能看懂这个玩意,只学过几天C )

6、没办法只能又翻so文件吧,直接到string窗口里,搜索lua,反正你这个总有吧,拉到最下面,感觉像落款的东西luajit2.1事什么鬼,没办法,百度吧

7、直接把下面的落款复制到百度上搜索,第一个就点进了https://www.freebuf.com/column/177810.html这个链接~真的是时来运转啊。看了一阵看不懂,拉到做下面,
第一句话就是本文所指luajit,皆指luajit2.1.0-beta2版本。好吧版本一样,能搞吧~


8、下载那个修正的源码。。py的,什么鬼,又是一顿百度,配置了一个2.7和3.7合体版的python环境。。
F12右键,在此处打开命令窗口。。

py -3 main.py * >1.lua (随便找了一个解密~)


然后就解出来了,幸福来的太快了。
9、我靠,里面有几百个文件,肿么办,肿么办,没法只能百度了。找了一个批量加密LuaJit的脚本。


@echo off
if exist out rd /s /q out
mkdir out

setlocal enabledelayedexpansion

cls
:input
set input=:
set /p input= 拖入要编译的lua文件夹:
if "%input%"==":" goto input
if not exist "%input%" goto input
set "input=%input:"=%"

:output
set output=:
set /p output= 拖入要编译后输出的目标文件夹:

if "%output%"==":" goto output
if not exist "%output%" goto output

for %%i in ("%input%") do if /i "%%~di"==%%i goto input
pushd %cd%
cd /d "%input%">nul 2>nul || echo cmd was runing error
set cur_dir=%cd%
popd
set /a num = 0
echo 正在目标文件夹中创建对应目录结构:
for /r %input%%%a in (*) do xcopy %%a %output% /t /s
echo 创建完成,开始:
for /f "delims=" %%i in ('dir /b /a-d /s "%input%"') do (set /a num += 1
set pt=%%~fi & set "pt=!pt:%input%=%output%!"
luajit -b %%~fi !pt!                                     \\看了一阵,貌似只有这里有用吧。。。py -3 main.py %%~fi >!pt! 改成这个,保存为BAT,搞定
echo 编译后: !pt!)
echo 编译脚本数量:%num%
ATTRIB %output%/*.* +R
echo 编译完成,开始删除空白文件夹:


终于不用手工操作了,美滋滋~~

10、解密是解密了,也修改了几个好像是买东西修改到1块的LUA脚本。然后怎么放回去,没办法~
只能又下载了一个LuaJit加密文件,然后makefile操作一顿。。弄出来了一个EXE文件。
然后又用那个加密的脚本bat加密回去~然后打开解密后的game.zip,将修改后的文件替换回去、。。。

11、最后打开xxtea解密加密软件,用相同的key替换回去。

12、最最最后,打开闪退,失败告终。。。好像每次打开这软件都要重新下载一遍game.zip文件。。算了这么复杂,我不搞了成么

13、链接:https://pan.baidu.com/s/1RQjFks6m5ltdk1YDQJWUcw   提取码:jr88有软件和游戏的原始程序


借此贴证明这几天的努力没有白费
好吧,无用功~~~~~~~

感谢 https://www.freebuf.com/column/177810.html


批量加密和解密.rar
ljd-master.rar
LuaJIT-2.1.0-beta2.rar
XXTEA.rar





salala159 发表于 2019-7-14 23:19

看到楼主这么用心,我就说下吧,针对cocos2dluajit的游戏怎么改: 首先识别到脚本是luajit,其实楼主就可以放弃解密脚本了,即使是解密了也是中间语言形式,修改了也还原不回去。那问题来了,怎么改呢?静态文件改不了可以改动态内存啊!楼主可以注入一个so,去修改内存,lua和native层进行交互有一个统一的接口 luatofunction,楼主可以在这个接口层坐下文章。其次可以改协议,一般cocos游戏的发包逻辑都在so里面,不会在脚本里面,所以,我认为终极大法就是改协议喽……

zhangzhaoshuai 发表于 2019-7-14 09:12

有时间去学习下谢谢分享

peng1990sr 发表于 2019-7-14 08:03

mmji 发表于 2019-7-14 06:32
如果真是这种情况的话,可以尝试抓包修改一下,应该有文件md5校验之类的,抓包修改一下应该能过

嗯嗯,谢谢了,我学学看,再试试~

zy1234 发表于 2019-7-14 01:44

就当拿来练手了

cyhcuichao 发表于 2019-7-14 03:29

有软件教程吗

mmji 发表于 2019-7-14 06:32

好像每次打开这软件都要重新下载一遍game.zip文件
如果真是这种情况的话,可以尝试抓包修改一下,应该有文件md5校验之类的,抓包修改一下应该能过

peng1990sr 发表于 2019-7-14 08:03

cyhcuichao 发表于 2019-7-14 03:29
有软件教程吗

什么软件的教程,我没有视频,我都是瞎蒙的。。

gunxsword 发表于 2019-7-14 09:02

感谢分享,功能最后成功没!

peng1990sr 发表于 2019-7-14 09:11

gunxsword 发表于 2019-7-14 09:02
感谢分享,功能最后成功没!

额,还在实验中

forrest888 发表于 2019-7-14 10:02

谢谢了,我学学看
页: [1] 2 3 4
查看完整版本: 某LuaJit游戏解密教程~~