VMP脱壳&小白入门级脱壳教程&VMP脱壳教程&VMP3.8.4脱壳插件&脱壳插件&易语言脱壳&VMP脱壳教程

最近事情比较多,时隔了将近两个月没有更新个人博客了,再前几天偶然发现到一个VMP脱壳的插件,故而下载下来试了试,发现还可以,所以想到了出一个博客来记录一下

插件界面

这个插件一共用到了四个dll文件,其中一个为插件本体,其余为必须运行库,将除了Ollydbg Plugin.dll 文件以外的dll文件放到OD 根目录即可加载上该插件

使用教程

在装上该插件以后,OD随便载入一个程序,右键即可看到该插件

1、首先随便写了一个易语言的程序,然后套壳

我这里所使用的VMP版本为3.8.4。我们将加壳的复杂性以及内存保护等全部打开

然后对文件进行加壳,将会得到一个名为1234.vmp.exe的文件

这里我们就得到了两个文件,一个为原本文件,一个为加了vmp3.8.4之后的保护文件

两个文件均可以正常打开

2、将被保护文件拖到OD中进行逆向

我这里所用的OD为小曾老师的OD,其实各个版本的OD都大差不差

然后我们在GetVersion位置下断点,将程序断在GetVersion位置

使用ctrl+G组合键,输入GetVersion即可跳转到对应位置,再该位置下断点

F9将程序运行起来,并让其在该位置断下,我们即可使用该插件中的寻找OEP功能找到程序原本的入口点

该位置非常符合易语言的程序入口的特征,在该位置右键,并将该位置设置为新EIP

然后我们即可使用插件中的还原OEP功能,对OEP进行还原

修复完成后,将该程序dump出来,并新加一个区段用来存储我们后续的IAT表

你们也可以采用其他dump工具,我这里采用的是OD插件

注意模块不要选择错误

然后单击获取EIP作为OEP

然后再选择转储

我将其命名为dump1

这样我们即得到了一个“脱壳后”的文件,但是该文件现在无法打开,因为文件中的IAT我们并没有修复完成

3、修复IAT

我们将获得的新文件dump1.exe放入到CFF工具中,新增加一个区段,斌且大小为10000,该区段是为了存储我们后续所修复的IAT

这样我们就获得一个新区段

直接关闭该工具并全部选是即可(两个提示),你也可以选择自行手动保存

然后将我们所新加区段的文件拖入到OD中

然后单击执行,让程序断在入口点的位置(部分OD在载入后直接为入口点位置,注意甄别),不同语言的入口点特征也不同,需要自行判断,我这里所用的为易语言程序

当程序在入口点位置断下后,我们继续右键使用该插件,选择IAT_FIX

然后我们即可单击L按钮来查看日志,等待完成提示出现

修复完成之后,我们需要去寻找关键代码位置,将其中一个Call改为Call LoadStringA

我们需要依次进入几个call(至于查找方式在本篇文章中不进行细致讲解,如果各位需要,那么等我下次有时间时再出一篇文章,在本篇文章中,各位可以先看一个需要进入的call的附近特征)

(1)在入口点下方不远处,回车进入该call

(2)第二个call就在一进来的这个位置,回车再次进入该call

(3)第三个call也在进来的不远处,回车再次进入该call

(4)第四个call的位置在不远处的连着两个call中的第一个,继续回车进入

(5)第五个call的位置可以记一下附近的这个特征,然后继续进入这个call

然后将这个call里面的内容替换为

56 E8 82 3E 00 00 FF 74 24 10 8B 74 24 10 8B 40 0C 56 FF 74 24 10 50 FF 15 B0 55 46 00 85 C0 75 02 20 06 5E

选中call中的这些内容,然后右键—→二进制—>二进制粘贴

注意不要选择到retn

敲黑板!!!重点!!!

该函数内有两个call,当我们粘贴后!如果发现两个call都被改变的话!我们需要选择第一个call,然后右键—→撤销此处修改!!!

然后我们选择第二个call,空格,将该汇编代码改为

call LoadStringA

然后我们双击EIP,回到程序运行位置,也就是程序入口点

然后打开工具UIF

输入被脱壳程序的PID,代码段开始和结束位置以及我们所新加的区段的位置

单击M 进入内存界面

然后依次填写代码开始地址(.text区段开始),代码结束地址(.rdata区段开始),新区段地址

然后勾选上修复输入表,单击开始

等结束之后,我们在内存区域右键,并将模式修改为地址

然后ctrl+G输入UIF所提示的IAT RVA并加上提示的镜像基址

注意!!是在内存窗口位置打开!不要打开错了!

我们就会跳转到该位置。将第一行的地址复制下来稍后使用

然后我们将该程序dump出来,我们命名为dump2

dump出来之后先不要关闭该程序,打开工具Scylla,并选择OD所载入的程序(dump1),然后填写VA(即刚复制的地址)以及填写大小(即UIF所提示的IAT大小)

然后点击获取输入表

然后选择修复转储后文件,选择刚才dump出来的新文件dump2

我们即可得到dump2_SYC.exe

至此,我们脱壳+修复已完成

[an error occurred while processing the directive]
Copyright © 2088 迷你世界杯_竞猜世界杯 - xhfzmy.com All Rights Reserved.
友情链接