0x00 事件起因
作为一个Youkia社区的老用户,它算得上是一个美好的回忆,而它的游戏:pvzol,也是非常的经典。当时有人用.NET Framework为框架做了一个助手,方便用户挂机。但是部分游戏服务器无法使用,需要手动Patch内存补丁,刚好有人就做了这玩意儿,售价38RMB一个月。本来想着买了就行了,毕竟作为一个游戏的VIP2级用户。但是卖家极其不负责任的态度以及特别想要圈钱的行为,让我恼火。
![手刃白菜之逆向某款第三方辅助插件插图 手刃白菜之逆向某款第三方辅助插件插图](https://static.esw.eswlnk.com/2021/09/2021090702540057.png)
![手刃白菜之逆向某款第三方辅助插件插图1 手刃白菜之逆向某款第三方辅助插件插图1](https://static.esw.eswlnk.com/2021/09/2021090703021852.png)
问了下为啥我打不补丁,并且也没有显示注册界面,结果接下来直接将我踢出群聊,并且告诉我这一切都是加密锁导致的,好家伙,那咱就冻手吧!
![手刃白菜之逆向某款第三方辅助插件插图2 手刃白菜之逆向某款第三方辅助插件插图2](https://static.esw.eswlnk.com/2021/09/2021090703030410.png)
0x01 配置环境
拿到补丁源文件后,运行一下,发现会自动删除而且本地释放了 tem.vbs
,这我可被吓得不轻,毕竟这玩意儿的行为太像小马了,而且软件的图标也是马,给我吓得不轻。
![手刃白菜之逆向某款第三方辅助插件插图3 手刃白菜之逆向某款第三方辅助插件插图3](https://static.esw.eswlnk.com/2021/09/2021090703202760.png)
360论坛的相关负责人也是很快的回复了我的帖子,如果这个exe文件有后门的话,那么后续也会有专门人员跟进。
我也是赶紧看了下本地有无额外的TCP连接,并且拉到微步沙箱去看了看。结果显示并没有额外的网络流量产生,那咱们就可以在虚拟机中放心地跑了。
以下是本次逆向分析时所使用的环境:
系统 | Windows 7 Enterprise EN |
调试器 | XW-Ollydbg |
监控 | Huorong Sword |
Unpacker | UPX Unpacker |
文本编辑 | Notepad |
0x02 逆向分析
EP Section分析
首先使用EXEinfo PE看一下PE段名,是否被强制加密,如果是普通壳那就直接脱。
![手刃白菜之逆向某款第三方辅助插件插图4 手刃白菜之逆向某款第三方辅助插件插图4](https://static.esw.eswlnk.com/2021/09/2021090703185047.png)
EP段显示:UPX 3.91
,这里我用吾爱提供的脱壳机直接脱掉,如果不想使用脱壳机,你也可以自己下硬件断点自己找一下OEP,不过系统不同也会导致脱壳后的问题,建议在win xp
环境下对upx脱壳
脱掉UPX壳后,再次检查信息,显示该文件有 E language即易语言编写。
![手刃白菜之逆向某款第三方辅助插件插图5 手刃白菜之逆向某款第三方辅助插件插图5](https://static.esw.eswlnk.com/2021/09/2021090703250681.png)
动态分析
IDA不是很会,不过我对ollydbg比较熟悉,所以我直接将该插件在OD中运行,自动停在OEP上。
因为这个插件除了UPX加壳后就没有其他加密,所以直接单步下去就行,遇到崩溃的call
自己注释一下加断点,然后重来接着跑。下面是我自己画的一个分析图,包含了这个插件的验证流程:
![手刃白菜之逆向某款第三方辅助插件插图6 手刃白菜之逆向某款第三方辅助插件插图6](https://static.esw.eswlnk.com/2021/09/2021090703565547-669x1024.png)
PS:逆向详细的过程已经录制了教程,想要观看的小伙伴可以到本站视频集锦观看:
本站视频集锦获取信息CALL
![手刃白菜之逆向某款第三方辅助插件插图7 手刃白菜之逆向某款第三方辅助插件插图7](https://static.esw.eswlnk.com/2021/09/2021090704014490.png)
这个CALL进去后会从 https://rt22226478.icoc.vc/nd.jsp?id=6&id=6
获取已经注册了的用户QQ,并且通过文本正则的方式获取BANINT
和BANEND
的中间文本,该CALL中有内存暗桩,必须jmp跳转后才能步过。
内存暗桩CALL
![手刃白菜之逆向某款第三方辅助插件插图8 手刃白菜之逆向某款第三方辅助插件插图8](https://static.esw.eswlnk.com/2021/09/2021090704074785.png)
这里有个jnz
跳转,跟CALL进去后,就会来到内存暗桩出,并且也有个jnz
跳转,改为jmp即可跳过分配内存错误。
![手刃白菜之逆向某款第三方辅助插件插图9 手刃白菜之逆向某款第三方辅助插件插图9](https://static.esw.eswlnk.com/2021/09/2021090704094486.png)
过了这个内存暗桩CALL后,我们来到了插件的算法区域,由于我对这个反汇编和汇编的理解与认知还不够到位,所以我暂时也写出来注册机,只能定点爆破一下。
机器码获取CALL
下图就是该程序获取PC的机器码,并且推衍注册码的过程,实在技术不精,无法得知运算过程。
![手刃白菜之逆向某款第三方辅助插件插图10 手刃白菜之逆向某款第三方辅助插件插图10](https://static.esw.eswlnk.com/2021/09/2021090704153441.gif)
![手刃白菜之逆向某款第三方辅助插件插图11 手刃白菜之逆向某款第三方辅助插件插图11](https://static.esw.eswlnk.com/2021/09/2021090704135030-1024x507.png)
接着有一个自动删除的暗桩,最初就是这里吓得我半死,不过自己单步跟踪过后,发现这个vbs的功能只是删除自身,并不会移动文件到哪里去。
释放vbs CALL
![手刃白菜之逆向某款第三方辅助插件插图12 手刃白菜之逆向某款第三方辅助插件插图12](https://static.esw.eswlnk.com/2021/09/2021090704165283.png)
vbs的大致内我提取出来,就是下面的内容:
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Wscript.Sleep(1000)
fso.DeleteFile("C:\Users\xxx\Desktop\助手插件\助手插件0.11.exe")
fso.DeleteFile("C:\Users\xxx\Desktop\助手插件\tem.vbs")
既然这是一个关键call,那么我就有理由猜想会有调用该call的命令,所以我决定搜索call 00403E78
这个命令,果不其然,在一个关键地方搜索到了这个call
主暗桩 CALL
跟着释放vbs的命令,我来到了检测OD的子程序中
![手刃白菜之逆向某款第三方辅助插件插图13 手刃白菜之逆向某款第三方辅助插件插图13](https://static.esw.eswlnk.com/2021/09/2021090704255110.png)
并且,这个地方调用了两次暗桩CALL,明显地表达了这个插件作者想要反OD的急切心情,这里我们可以直接头部retn
或者将jnz
命令改为jmp
即可。
![手刃白菜之逆向某款第三方辅助插件插图14 手刃白菜之逆向某款第三方辅助插件插图14](https://static.esw.eswlnk.com/2021/09/2021090704275723-1024x338.png)
由于在获取信息时也会调用内存暗桩CALL,所以建议在内存call那里retn
或者改jmp
注册验证 CALL
在解决所有的暗桩后,我成功运行了这个插件程序,并且找到了登录验证的call
![手刃白菜之逆向某款第三方辅助插件插图15 手刃白菜之逆向某款第三方辅助插件插图15](https://static.esw.eswlnk.com/2021/09/2021090704322820.png)
我们将je
直接nop
掉后,插件就会直接显示注册成功。如果你不想要这个注册成功的窗口,可以把下方的call
也nop
掉。
0x03 插件速度优化,实现脱机
我成功找到了获取信息的call
,那么我们可以直接将获取信息CALL nop
掉,这时会出现未知错误
的提示框
![手刃白菜之逆向某款第三方辅助插件插图16 手刃白菜之逆向某款第三方辅助插件插图16](https://static.esw.eswlnk.com/2021/09/2021090704383122.png)
我们将jnz指令改为jmp后就可以直接跳过未知错误,来到功能界面,并且不会产生额外网络连接,下方是我录制打开插件的实际效果,没有多余的验证。
![手刃白菜之逆向某款第三方辅助插件插图17 手刃白菜之逆向某款第三方辅助插件插图17](https://static.esw.eswlnk.com/2021/09/2021090704460574.gif)
最后只剩下了两个本地写ini
配置文件的功能,如果觉得不好,你可以将我打包的文件自己反汇编一遍,删除不必要的功能即可。
![手刃白菜之逆向某款第三方辅助插件插图18 手刃白菜之逆向某款第三方辅助插件插图18](https://static.esw.eswlnk.com/2021/09/2021090704480310.png)
0x04 分析拓展
在反汇编的文本中,发现了以下内容:异编工作室,百度后没有相关的内容,猜测可能是相应的易语言模块作者或者软件作者工作室的名称。
![手刃白菜之逆向某款第三方辅助插件插图19 手刃白菜之逆向某款第三方辅助插件插图19](https://static.esw.eswlnk.com/2021/09/2021090704521451.png)
并且该作者所使用的的网络前端属于:凡科建站,后端没有实质上的校验功能。
![手刃白菜之逆向某款第三方辅助插件插图20 手刃白菜之逆向某款第三方辅助插件插图20](https://static.esw.eswlnk.com/2021/09/2021090704544468-1024x542.png)
KELEPAN.COM
这个域名也出现在了反汇编文本中,当前这个域名正在出售中,经过百度查询,这个网站曾经可能是用于发布辅助软件等一系列工具,包含众多Flash页游。
本文相关插件下载:
学习了
内存补丁在主程序打开后拖放使用