【分享】逆向分析一款Halo 2 PC版的五属性外挂
就是这玩意儿:它运行起来后是这个样子的:
并且会自动让浏览器打开一个网页:(这应该是作者自己的官网,然而看样子作者咕了?)
为了观察这个外挂到底做了什么,或者它是往哪里写入了什么来实现的作弊,我决定先用IDA看看它的行为,再来分析它写入的地址。
这直接按F5就啥都有了。简而言之:
[*]入口点是WinMain,典型的Win32 App
[*]很多地方直接调用了Windows API,并且根据API名称可以轻易看出它是干啥的。而且都能在MSDN上查到。
[*]根据它调用API的顺序和传递的参数(GetTempPath,GetTempFileName,SizeofResource,LoadResource,CreateDirectory,CreateFile,WriteFile,CloseHandle,CreateProcess,WaitForSingleObject,DeleteFile,RemoveDirectory)可以看出它把自己的资源释放到了临时文件夹,并且生成了临时文件名,然后写入了文件,再执行了一个可执行程序,等它结束,最后删除这些临时文件。删除临时文件的做法规规矩矩很老实。
[*]它其实有两个资源,用eXeScope可以看到,其中一个叫ARCHIVE,另一个叫DECOMPRESSOR。eXeScope为了显示ARCHIVE的Hex内容卡住了。
[*]临时目录有个“CET”的前缀
根据它的行为,我转到了%TEMP%,发现确实存在一个cet开头的文件夹(cetrainer),点进去看发现确实就是它的东西:
这里说一下:CET是Cheat Engine Trainer的缩写。
这里面的“Halo2_TRN-STN.exe”的内容和之前提到的资源“DECOMPRESSOR”的内容一毛一样。那么可以假定它就是解压器了。但它要解压的内容(资源“ARCHIVE”)似乎既不是zip,又不是RAR、7z,也不是gzip或者zlib的数据。不知道是啥。
此外,它解压用的命令行是这个样子的:(请注意sprintf那一行)
我感觉我似乎并没有用过什么解压器它使用“-ORIGIN”指定数据的来源。实际上,我试着用IDA解析这个解压器的内容,但我发现它似乎有壳,至少有花指令,不好弄。先不管它。
不过,至少我们手头上已经有解压好了的数据了,先拷贝出来,免得被它清理了。
这图标似乎非常眼熟,它好像就是Cheat Engine,点开后发现还真的是。
但光有Cheat Engine本体还不够,它自己并不知道该怎么Cheat。那这玩意儿到底是怎么运行的呢?我随手把CET_Archive.dat往解压器上一拖,就得到了一个新冒出来的文件:
这个CET_TRAINER.CETRAINER是什么呢?我把它拖进Cheat Engine的界面想看看它到底是什么内容,结果发现它直接运行了:
(并且还弹出了它那个作者的官网)
经过上网搜寻发现,Cheat Engine允许用户编写lua脚本用于对目标进程进行注入或者内存分配等。而这个CETRAINER文件其实是一个受保护的Cheat Engine脚本,它是经过Xor加密后再经过zlib压缩的。
不过解密似乎十分简单的样子,直接爆破就行,用不了多久。
然后我找到了一个专门用来解密Cheat Engine脚本的软件:https://github.com/albertopoljak/CEtrainer-decrypter
除了这个Java版的,还有一个python版的:https://github.com/AlexAltea/cetrainer-unpacker
然后我把这个CETRAINER文件丢给那个Java版的,立刻我就得到了output.xml源文件了。
把output.xml重命名为CET_TRAINER.ct,就可以用Cheat Engine查看它的各个功能对应的脚本了:
对于它而言一个重要功能是要阉割掉xlive的内存检测,从而使外挂生效,这部分它是特征识别一些代码,然后将其替换为一条jmp指令:
锁能量护盾和HP则是把游戏读取HP的指令替换为FPU加载钦定值的方式来实现:
其中0x40400000作为C语言float类型的浮点数是3.0f
锁弹药上限,则是通过禁用弹药消耗计算来实现:
总结:这款外挂其实就是把Cheat Engine,以及需要它来运行的lua脚本,打包为一个压缩包,再和解压器一起打包为一个exe。非常容易解开。
如果有人想玩弄它的话请回帖下载。本站对下载此软件导致的任何后果包括中毒等不负任何责任,请自行承担风险。
**** Hidden Message *****
学习学习 感谢分享! 内置CE? 学习学习 感谢分享!
页:
[1]