记某VMP3.5软件学习版制作过程

VMP3.5还没发售两个月,都开始有3.5版本加壳的软件卖了

VMP升级版本要重新购买授权,这个软件作者还真是把安全放到了首位。


先谈VMP3.5,官网这样表明,3.5版本改进了反调试功能。

实际体验下来,

SharpOD失效了(这个反反调插件通杀3.4以下版本)

同时检测IDA软件。

混淆与虚拟代码变为动态释放的shellcode

新增了一个接口调用后加密一段代码,用于保护只执行一次的代码

具体原理我没看,

反调试大概是利用了一些奇怪的构造调用NtQueryInformationProcess,而SharpOD没处理好。

IDA则应该检测的是IDA创建的几个内核对象


软件利用Process Dumper dump下来完整的镜像,拖到IDA里一看,好家伙,启动流程基本全加了虚拟化或混淆,尽管字符串没加密,但其引用都不见了。

软件限制了使用次数与时间,利用API Monitor软件监控文件注册表操作也没找到什么端倪,怀疑是联网验证,在其初始化Url的时候下了断点却发现不是验证用的。

没办法只能调试。

我不想用VT调试器,选择了CE的VEH调试器。

为了能让CE在进程启动前附加,我写了个小程序,CreateSuspend目标进程,在OEP初写入Jmp $,待CE附加后再写回原始代码,继续执行

我定位了一个输出文本的函数,确认到了它输出体验次数的函数,

这个函数现在还在这里,这函数执行完就不见了。

接下来就比较简单了,分析其启动流程,去给一个个VM函数标注作用,最后定位了一个修改点,开始写爆破工具。


成品是一个DLL,我要让软件启动时加载我的DLL,由于进程主体有VMP保护,我找了个它依赖的DLL,用CFF Explorer在其导入表中添加了我的DLL。

至此爆破完成。

发表评论

电子邮件地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据