jjyjjy003159 发表于 2023-8-16 12:57

VMP 3.5 JCC爆破

使用软件:易语言VMP3.5   Unicorn   X32dbgOllyDbg

首先用易语言写一个最简单的程序用VMP 3.5虚拟化函数
(由于为了后期分析方便,字符串比较函数就不用虚拟了,而且爆破点也不是在字符串比较函数那里)
VMP其他保护都不用开,调试器检测那些,因为这里只分析他虚拟机里面的JCC模拟

程序代码
然后用VMP3.5给他关键函数虚拟掉
然后载入x32dbg(Ollydbg也行)
通过FF 55 FC 5F 5E断点
直接定位到函数头部
004010A9 | E9 29430C00            | jmp 3.3.1.vmp.4C53D7                  |
进去jmp以后就是
004C53D7 | 68 99055F98            | push 985F0599                           |
004C53DC | E8 499AFFFF            | call 3.3.1.vmp.4BEE2A                   |

这个是典型的 VMP3.5入口特征
不过我们的目标并不是这个虚拟机,因为这个虚拟机只模拟到第一个call
但是第一个call并不是字符串比较函数
所以这个虚拟机直接跳过
不用看了
这里怎么定位他跳到哪个地址呢
可以用Unicorn模拟引擎来定位,因为代码段内存并没有被映射
所以unicorn就会错误8(未映射的内存地址)
如果没有unicorn模拟引擎的框架呢
也可以使用运行到返回或者   记录日志
这里就不详细说怎么定位了
我这里通过unicorn定位到了他最后的返回地址应该是
0x401194

通过这个函数以后,我们依然是一样的,找到下一个虚拟机

然后利用同样的方法找到地址
**** Hidden Message *****

实际上如果你够熟练了
你甚至可以通过unicorn模拟ZF位来判断这个JCC指令 爆破应该是0x0 还是 0x1   也可以把两种不同的结果执行的不同虚拟机地址打印出来

想实现更复杂的JCC,还需要对这个地址有更详细的判断,最好能够用unicorn模拟出两种不同shr指令的结果



繁花丶 发表于 2023-8-16 13:19

看看软件下载下载

1987916 发表于 2023-8-16 13:20

感谢分享

愤怒的亚索 发表于 2023-8-16 13:27


感谢分享

jjyjjy003159 发表于 2023-8-16 13:31

繁花丶 发表于 2023-8-16 13:19
看看软件下载下载

Unicorn可以去B站找周壑的教程,他那里面有详细的unicorn框架和很多测试

DavidLiu 发表于 2023-8-16 13:51

谢谢老师的分享!太牛了

ck63304521 发表于 2023-8-16 14:51

yang519 发表于 2023-8-16 14:55


感谢分享

192939 发表于 2023-8-16 14:55

谢谢分享

陈冠希 发表于 2023-8-16 15:04

感谢分享
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: VMP 3.5 JCC爆破