前言
情况是这样,最近学习网络认证破解的时候,老是遇到很多VMP加壳的软件,对于常规性加VMP壳来说,很简单就可以过去(这里的常规VMP加壳指的是关键代码被加壳了,其他代码没动的情况下)。本人也是小白一个,最开始学习逆向破解就是看的世恒的破解教程一期,就是针对单机软件的破解以及一些破解的基础思路手法这些,有兴趣的朋友可以去看看,世恒讲解的很详细,个人觉得适合0基础的小白。只要把世恒的破解视频教程一期认认真真的学习完毕,很多简单的软件基本是手到擒来(前提是认真学习,最好是做好笔记,本人就是这样学习的)。
VMP3.12过虚拟机检测概述
其实VMP壳检测虚拟机一直都有这个功能,几个版本都存在,前几个版本我在各大论坛上面转了一下,方法各式各样,基本都能够过去,但是3.x版本的虚拟机检测方式好像不太一样了,具体检测点有两个,可以看看吾爱破解大佬的分析教程,这位大佬分析的很透彻,有兴趣的朋友可以去研究下!参考链接:https://www.52pojie.cn/thread-635613-1-1.html,然后我自己就各种折腾,到处找资料,后来在看雪论坛看到了这种姿势。参考链接:https://bbs.pediy.com/thread-225937.htm但是,看了看雪这种办法,对于经常玩逆向的大佬来说肯定就明白了怎么操作了,我看了半天,反复看了无数遍还是没搞定!不过呢,学习嘛,就是各种折腾,刚刚又在参考看雪的这种办法在这儿折腾的时候就折腾出来了。好了,废话就不多说了,直接进入正题!
VMP3.12过虚拟机检测实例
如下图所示软件,代码全被VMP加壳了,还检测虚拟机:
这个软件也是我折腾了好久的,而且遇见过不止一次这种,特恶心人!直接根据看雪论坛出的方法载入OD后下LocalAlloc断点,然后运行程序,如图所示:
如上第二幅图所示,程序断了下来,然后查看寄存器窗口,查看ESP寄存器,右键寄存器窗口,选择“数据窗口中跟随”后,查看数据窗口,可以看见程序断在了LocalAlloc处。如图所示:
到了这里,就需要查看程序基质了,在数据窗口中搜索基质。点击快捷栏的“e”就可以查看程序的基质是多少,如图所示:
如上图箭头所指的就是这个程序,前面的00400000就是程序基质,其实这里可以理解为任务管理器里面查看程序进程,到进程的数据基质,然后在数据窗口中查找,如图所示:
如上第三幅图选中部分所示,这三个地址就是一个明显的特征,前面两个地址可以理解为模块默认加载基地址 + 模块当前加载基地址,这第三个地址0000001F
就是关键判断,把它置0以后,虚拟机检测就过了,如图所示:
然后直接取消LocalAlloc断点并且运行程序即可,如图所示: