sevp 发表于 2015-1-29 10:19:57

VMProtectIsValidImageCRC()这个内存校验该怎么过

本帖最后由 sevp 于 2015-1-29 12:21 编辑

对一个程序打补丁vmp的壳子
如果去挂钩某一个地址 然后jmp走,修改寄存器的值 ,修改完之后再跳回来还原hook,这样走一回就崩了

但是使用硬件断点断下,手动修改寄存器的值 就不会崩溃
猜测是使用了VMProtectIsValidImageCRC()校验内存

请问下各位大大,这个校验怎么处理
http://www.unpack.cn/thread-71059-1-1.html找到了一片文章 但是视频链接失效了。。。


飘云 发表于 2015-1-29 11:06:25

搞复杂了吧?既然硬件断点能修改不挂,那么就编程写个dll eip劫持

tonier.lu 发表于 2015-1-29 11:16:17


顶....
顶....

sevp 发表于 2015-1-29 11:20:58

本帖最后由 sevp 于 2015-1-29 11:28 编辑

飘云 发表于 2015-1-29 11:06
搞复杂了吧?既然硬件断点能修改不挂,那么就编程写个dll eip劫持
不知道大大所说的eip劫持是不是我所说的第一个patch代码段某处, jmp走修改寄存器

我是通过dll劫持实现的,修改完之后,把代码段某处又还原回来了,但后面还是程序退出了

硬件断点补丁去修改也是可以的,但是目标程序是个dll(加了vmp),调用者exe如果是se加壳的话,我自己的veh捕获硬件断点异常处理函数会失效,所以还是想通过监视这个dll的解码并且patch来实现

飘云 发表于 2015-1-29 11:56:17

sevp 发表于 2015-1-29 11:20
不知道大大所说的eip劫持是不是我所说的第一个patch代码段某处, jmp走修改寄存器

我是通过dll劫持实现 ...

hook api了么? 既然都用到VEH了,还硬patch干嘛呢?

sevp 发表于 2015-1-29 12:16:42

飘云 发表于 2015-1-29 11:56
hook api了么? 既然都用到VEH了,还硬patch干嘛呢?
没hook api。我就在某个地址下了硬断,然后自己的veh函数中处理,这样是可行的,不需要监视解码,执行到这里就段下来跳到我自己的veh中,我在这里面修改寄存器的值
但是上面那种方法,如果是使用了se的壳的话,处理会失败,不知道se对硬断方面做了什么手脚

所以还是想使用监视解码的方法,在壳段我找到了解码函数,首先挂这个解码函数等待解码完毕,这里一切正常,不会退出
等待解码完毕后对 解码后的text段的某个地址hook,hook完了之后再还原回去,程序就退出了。


飘云 发表于 2015-1-29 12:25:30

sevp 发表于 2015-1-29 12:16
没hook api。我就在某个地址下了硬断,然后自己的veh函数中处理,这样是可行的,不需要监视解码,执行到 ...

你修改了代码被CRC了,肯定退出。
SE 是可以VEH的。你hook一个合适的API,待代码段解密,然后再VEH,

sevp 发表于 2015-1-29 15:04:26

飘云 发表于 2015-1-29 12:25
你修改了代码被CRC了,肯定退出。
SE 是可以VEH的。你hook一个合适的API,待代码段解密,然后再VEH,
非常感谢,按照你说的方法已解决

同时想再问个问题,,设置硬断的时候除了SetThreadContext还有什么别的方法没,用SetThreadContext每次都要先把主线程挂起
页: [1]
查看完整版本: VMProtectIsValidImageCRC()这个内存校验该怎么过