手刃逆向某款第三方辅助插件

2021-12-13 15:52:40 浏览数 (1)

0x00 事件起因

作为一个Youkia社区的老用户,它算得上是一个美好的回忆,而它的游戏:pvzol,也是非常的经典。当时有人用.NET Framework为框架做了一个助手,方便用户挂机。但是部分游戏服务器无法使用,需要手动Patch内存补丁,刚好有人就做了这玩意儿,售价38RMB一个月。本来想着买了就行了,毕竟作为一个游戏的VIP2级用户。但是卖家极其不负责任的态度以及特别想要圈钱的行为,让我恼火。

私信聊天记录

群聊天记录

问了下为啥我打不补丁,并且也没有显示注册界面,结果接下来直接将我踢出群聊,并且告诉我这一切都是加密锁导致的,好家伙,那咱就冻手吧!

加密说明

0x01 配置环境

拿到补丁源文件后,运行一下,发现会自动删除而且本地释放了 tem.vbs,这我可被吓得不轻,毕竟这玩意儿的行为太像小马了,而且软件的图标也是马,给我吓得不轻。

BBS论坛求助贴

360论坛的相关负责人也是很快的回复了我的帖子,如果这个exe文件有后门的话,那么后续也会有专门人员跟进。

我也是赶紧看了下本地有无额外的TCP连接,并且拉到微步沙箱去看了看。结果显示并没有额外的网络流量产生,那咱们就可以在虚拟机中放心地跑了。

以下是本次逆向分析时所使用的环境:

系统

Windows 7 Enterprise EN

调试器

XW-Ollydbg

监控

Huorong Sword

Unpacker

UPX Unpacker

文本编辑

Notepad

0x02 逆向分析

EP Section分析

首先使用EXEinfo PE看一下PE段名,是否被强制加密,如果是普通壳那就直接脱。

脱壳前 EXEINFO显示

EP段显示:UPX 3.91,这里我用吾爱提供的脱壳机直接脱掉,如果不想使用脱壳机,你也可以自己下硬件断点自己找一下OEP,不过系统不同也会导致脱壳后的问题,建议在win xp环境下对upx脱壳

脱掉UPX壳后,再次检查信息,显示该文件有 E language即易语言编写。

脱壳后 EXEINFO显示

动态分析

IDA不是很会,不过我对ollydbg比较熟悉,所以我直接将该插件在OD中运行,自动停在OEP上。

因为这个插件除了UPX加壳后就没有其他加密,所以直接单步下去就行,遇到崩溃的call自己注释一下加断点,然后重来接着跑。下面是我自己画的一个分析图,包含了这个插件的验证流程:

主要验证流程图

PS:逆向详细的过程已经录制了教程,想要观看的小伙伴可以到本站视频集锦观看:

本站视频集锦

获取信息CALL

获取信息CALLh

这个CALL进去后会从 https://rt22226478.icoc.vc/nd.jsp?id=6&id=6 获取已经注册了的用户QQ,并且通过文本正则的方式获取BANINTBANEND的中间文本,该CALL中有内存暗桩,必须jmp跳转后才能步过。

内存暗桩CALL

内存暗桩call

这里有个jnz跳转,跟CALL进去后,就会来到内存暗桩出,并且也有个jnz跳转,改为jmp即可跳过分配内存错误。

内存暗桩头部

过了这个内存暗桩CALL后,我们来到了插件的算法区域,由于我对这个反汇编和汇编的理解与认知还不够到位,所以我暂时也写出来注册机,只能定点爆破一下。

机器码获取CALL

下图就是该程序获取PC的机器码,并且推衍注册码的过程,实在技术不精,无法得知运算过程。

拼接机器码

接着有一个自动删除的暗桩,最初就是这里吓得我半死,不过自己单步跟踪过后,发现这个vbs的功能只是删除自身,并不会移动文件到哪里去。

释放vbs CALL

释放vbs的头部

vbs的大致内我提取出来,就是下面的内容:

代码语言:javascript复制
Dim fso

既然这是一个关键call,那么我就有理由猜想会有调用该call的命令,所以我决定搜索call 00403E78这个命令,果不其然,在一个关键地方搜索到了这个call

主暗桩 CALL

跟着释放vbs的命令,我来到了检测OD的子程序中

并且,这个地方调用了两次暗桩CALL,明显地表达了这个插件作者想要反OD的急切心情,这里我们可以直接头部retn或者将jnz命令改为jmp即可。

检测OD

由于在获取信息时也会调用内存暗桩CALL,所以建议在内存call那里retn或者改jmp

注册验证 CALL

在解决所有的暗桩后,我成功运行了这个插件程序,并且找到了登录验证的call

登录验证call

我们将je直接nop掉后,插件就会直接显示注册成功。如果你不想要这个注册成功的窗口,可以把下方的callnop掉。

0x03 插件速度优化,实现脱机

我成功找到了获取信息的call,那么我们可以直接将获取信息CALL nop掉,这时会出现未知错误的提示框

未知错误

我们将jnz指令改为jmp后就可以直接跳过未知错误,来到功能界面,并且不会产生额外网络连接,下方是我录制打开插件的实际效果,没有多余的验证。

GIF

最后只剩下了两个本地写ini配置文件的功能,如果觉得不好,你可以将我打包的文件自己反汇编一遍,删除不必要的功能即可。

0x04 分析拓展

在反汇编的文本中,发现了以下内容:异编工作室,百度后没有相关的内容,猜测可能是相应的易语言模块作者或者软件作者工作室的名称。

文本内容

并且该作者所使用的的网络前端属于:凡科建站,后端没有实质上的校验功能。

凡科建站

KELEPAN.COM这个域名也出现在了反汇编文本中,当前这个域名正在出售中,经过百度查询,这个网站曾经可能是用于发布辅助软件等一系列工具,包含众多Flash页游。

0 人点赞