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,并且通过文本正则的方式获取BANINT
和BANEND
的中间文本,该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
掉后,插件就会直接显示注册成功。如果你不想要这个注册成功的窗口,可以把下方的call
也nop
掉。
0x03 插件速度优化,实现脱机
我成功找到了获取信息的call
,那么我们可以直接将获取信息CALL nop
掉,这时会出现未知错误
的提示框
未知错误
我们将jnz指令改为jmp后就可以直接跳过未知错误,来到功能界面,并且不会产生额外网络连接,下方是我录制打开插件的实际效果,没有多余的验证。
GIF
最后只剩下了两个本地写ini
配置文件的功能,如果觉得不好,你可以将我打包的文件自己反汇编一遍,删除不必要的功能即可。
0x04 分析拓展
在反汇编的文本中,发现了以下内容:异编工作室,百度后没有相关的内容,猜测可能是相应的易语言模块作者或者软件作者工作室的名称。
文本内容
并且该作者所使用的的网络前端属于:凡科建站,后端没有实质上的校验功能。
凡科建站
KELEPAN.COM
这个域名也出现在了反汇编文本中,当前这个域名正在出售中,经过百度查询,这个网站曾经可能是用于发布辅助软件等一系列工具,包含众多Flash页游。