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。
至此爆破完成。