技术宅的结界

 找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 127|回复: 0
收起左侧

【分享】逆向分析一款Halo 2 PC版的五属性外挂

[复制链接]

1043

主题

2335

帖子

5万

积分

用户组: 管理员

一只技术宅

UID
1
精华
217
威望
294 点
宅币
18229 个
贡献
36857 次
宅之契约
0 份
在线时间
1738 小时
注册时间
2014-1-26
发表于 2019-8-28 16:00:32 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有帐号?立即注册→加入我们

x
就是这玩意儿:

halo2trn.png

它运行起来后是这个样子的:

20190828134912.png

并且会自动让浏览器打开一个网页:(这应该是作者自己的官网,然而看样子作者咕了?)

dev.png

为了观察这个外挂到底做了什么,或者它是往哪里写入了什么来实现的作弊,我决定先用IDA看看它的行为,再来分析它写入的地址。

20190828135220.png

这直接按F5就啥都有了。简而言之:
  • 入口点是WinMain,典型的Win32 App
  • 很多地方直接调用了Windows API,并且根据API名称可以轻易看出它是干啥的。而且都能在MSDN上查到。
  • 根据它调用API的顺序和传递的参数(GetTempPathGetTempFileName,SizeofResource,LoadResourceCreateDirectoryCreateFileWriteFileCloseHandleCreateProcessWaitForSingleObjectDeleteFileRemoveDirectory)可以看出它把自己的资源释放到了临时文件夹,并且生成了临时文件名,然后写入了文件,再执行了一个可执行程序,等它结束,最后删除这些临时文件。删除临时文件的做法规规矩矩很老实。
  • 它其实有两个资源,用eXeScope可以看到,其中一个叫ARCHIVE,另一个叫DECOMPRESSOR。eXeScope为了显示ARCHIVE的Hex内容卡住了。
    20190828140305.png
  • 临时目录有个“CET”的前缀
    cet.png


根据它的行为,我转到了%TEMP%,发现确实存在一个cet开头的文件夹(cetrainer),点进去看发现确实就是它的东西:

cetr.png

这里说一下:CET是Cheat Engine Trainer的缩写。

xtr.png

这里面的“Halo2_TRN-STN.exe”的内容和之前提到的资源“DECOMPRESSOR”的内容一毛一样。那么可以假定它就是解压器了。但它要解压的内容(资源“ARCHIVE”)似乎既不是zip,又不是RAR、7z,也不是gzip或者zlib的数据。不知道是啥。

20190828141218.png

此外,它解压用的命令行是这个样子的:(请注意sprintf那一行)

sprintf.png

我感觉我似乎并没有用过什么解压器它使用“-ORIGIN”指定数据的来源。实际上,我试着用IDA解析这个解压器的内容,但我发现它似乎有壳,至少有花指令,不好弄。先不管它。

不过,至少我们手头上已经有解压好了的数据了,先拷贝出来,免得被它清理了。

ce.png

这图标似乎非常眼熟,它好像就是Cheat Engine,点开后发现还真的是。

cet6.png

但光有Cheat Engine本体还不够,它自己并不知道该怎么Cheat。那这玩意儿到底是怎么运行的呢?我随手把CET_Archive.dat往解压器上一拖,就得到了一个新冒出来的文件:

unh.png

cetcet.png

这个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源文件了。

xdc.png

把output.xml重命名为CET_TRAINER.ct,就可以用Cheat Engine查看它的各个功能对应的脚本了:

ctr.png
ce6.png

对于它而言一个重要功能是要阉割掉xlive的内存检测,从而使外挂生效,这部分它是特征识别一些代码,然后将其替换为一条jmp指令:

aobxlive.png

锁能量护盾和HP则是把游戏读取HP的指令替换为FPU加载钦定值的方式来实现:

Health.png

其中0x40400000作为C语言float类型的浮点数是3.0f

锁弹药上限,则是通过禁用弹药消耗计算来实现:

ammo.png

总结:这款外挂其实就是把Cheat Engine,以及需要它来运行的lua脚本,打包为一个压缩包,再和解压器一起打包为一个exe。非常容易解开。
如果有人想玩弄它的话请回帖下载。本站对下载此软件导致的任何后果包括中毒等不负任何责任,请自行承担风险。

游客,如果您要查看本帖隐藏内容请回复


本版积分规则

QQ|申请友链||Archiver|手机版|小黑屋|技术宅的结界 ( 滇ICP备16008837号|网站地图

GMT+8, 2019-9-20 11:29 , Processed in 0.113130 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表