【逆向-程序脱壳】VMProtect完美脱壳教程-掌控安全最强

catgames   ·   发表于 2018-7-8   ·   技术文章投稿区

Hello~大家好,我是CatGames,不知我之前的黑客图片啊,和.Net反汇编工具大家用的怎么样了,反正我觉的OK。

好啦~让我们进入正题吧。今天 我们来搞一次简单的脱壳教程,你问我为啥简单?掌控安全全都是人才,全都是大佬,哪敢说这是一个技术性的啊,最多就是玩玩~

祝掌控安全越做越好~咳咳,不扯了,进入正题~


1.查看程序

这是我自己写的一个VB的小程序,长得有点丑,别介意。然后自己加了一个壳,是VMProtect v.1.6x - 2.03的壳。

接下来我们国际惯例,用PEID,EXEinfo PE 查一下壳 

可以看到是加了VMP的壳的,VMP壳的介绍我会放在帖子的最后哦。


2.拉到OD去啦~

push 0xE131EEA3 这其实就是被VM过的OEP,你问我啥是Push?push 就是把什么什么东西压入栈中,你懂吧?就那个右下角的框框!

(注:为了帖子的精华呢我们举个栗子,VC++6.0编译的程序 大家都知道它的OEP开头是push ebp,那大家知道这个push ebp是什么意思吗?push ebp的意思是把ebp压入栈中,就相当于 int main() {} 程序的main函数哦!如果我讲的不够详细大家方可百度看看!)

接下来我们用到一个函数。


3.Ctrl+G搜索VirtualProtectEx(虚拟地址处理)

来到这里之后呢,我们在这个7D85E1FF这里按下键盘上的F2。下一个断点,运行程序,看看程序的变化。

Alt+M 来到这里

我们可以看到有PE文件头,等等等之类的。

我们数一下这里有几个段。

到这个VMP1这里一共是有五个段,啥意思呢?意思是我们运行程序五次,记住,不要第六次哦,第六次就跑飞了,程序跑到虚拟地址里去了。

这是运行五次之后,堆栈的状态

这是运行第六次之后,堆栈的状态

程序已经跑到虚拟地址里面去了,那我们就跑第五次就可以啦

现在是一个很好的返回时机,我们在.text的代码段下一个内存访问断点。然后F9运行,这样我们就跑出了VMP段了。

来到这里之后呢,一直往下跟可以跟到OEP。

我们直接查看,点击M

然后右键.text在反汇编窗口中查看

然后右键分析代码

可以来到他的JMP头

往下面看都是有很多的JMP

那么我们就去它的尾巴看看

从模块中删除分析,然后呢,点击M。

ctrl+F搜索76 62 35

这是VB的程序,我们要找到这个,然后可以看到00401368 我们记住这个。

回到反汇编窗口,空格汇编,把我们之前的push 0xxxxxxx改成我们的push 0x401368

然后下面的这个CALL,它CALL的是上面的JMP,那我们也修改一下这个CALL。

修改完是这样的,然后接着我们需要修复转存。

记得不要忘了右键在此处从新的EIP哦


4.修复转存

我们需要打开Import REConstructor 这款工具呢就不做多的介绍了。

找到我们需要修复的进程

然后去OD看看dump的OEP是多少,

114C,复制下来,点击自动搜索,获取导入表,然后啥的就不说了。

还有LordPE我们修正镜像大小,然后完整转存,这都是正常的修复,都懂。

然后把Import REConstructor 的修复储存到我们LordPE dump出来的软件上就可以啦,我们先点开软件看看吧。

一个是我们原版的,一个是脱壳后的,我们给脱壳后的进行查壳看看。

当当当,脱壳完成。

然后我们打开软件,看看是否可以运行。

没有毛病!掌控安全最强


其他的区段优化我就不讲了,都是优化软件内存的!!!




最后如果觉得说的不对,不好的地方欢迎在评论区提出来,那么这一次的教程就到这里,大牛随便看看就可以了哦!!!

如果喜欢我的帖子请点赞评论,大老板可以打赏一下哦!

最后祝掌控安全越做越好!人才倍出~

Welcome CatGames.cn

用到的软件我已经放到了,附件,解压密码老规矩,zkaq.org 一定要回复帖子才可以看到哦,因为程序比较害羞,hhhhhhhhhhhhhhhhhhhh~拜拜!

打赏我,让我更有动力~

8 Reply   |  Until 5个月前 | 3081 View

catgames
发表于 2018-7-8

push ebp如果还是不懂的话 其实就是一个程序的入口,push是一个压栈指令,把什么什么压入栈中!

就相当于下面这个

int main()

{


}

 

评论列表

  • 加载数据中...

编写评论内容

admin
发表于 2018-7-8

支持原创! 5金币奖励

评论列表

  • 加载数据中...

编写评论内容

admin
发表于 2018-7-8

排版再调整下更好,功底有待改进

评论列表

  • 加载数据中...

编写评论内容

defeatempty
发表于 2018-7-8

中文:尊敬的楼主,您订购的十五字已到账,请注意查收.英语:Dear landlord, fifteen words you ordered have arrived, please note that check.日语:尊敬するさん、ご注文の十字は帐ので、ご査収下さい.德语:Sehr geehrter Vermieter, wenn Sie bestellten 15 Zeichen berücksichtigt worden gutgeschrieben, beachten Sie bitte, dass der Check.法语:Cher propriétaire, si vous avez commandé 15 caractères a été crédité sur le compte, sil vous plaît noter que lenregistrement.韩语:汪汪汪汪汪汪汪汪汪汪汪汪.

评论列表

  • 加载数据中...

编写评论内容

鱼儿快飞
发表于 2018-7-13

很想学习一下

评论列表

  • 加载数据中...

编写评论内容

鱼儿快飞
发表于 2018-7-13

请问解压密码是多少

评论列表

  • 加载数据中...

编写评论内容

t617162120
发表于 2018-11-6

 看不懂

评论列表

  • 加载数据中...

编写评论内容

一抹微笑
发表于 5个月前

1

评论列表

  • 加载数据中...

编写评论内容
LoginCan Publish Content
返回顶部 投诉反馈

掌控者 © 2016. All Rights Reserved. 掌控者

Powered by 掌控者 Version 2.1.3