弄掉VMP某个版本的CRC
2020-03-08 17:14:20 Author: bbs.pediy.com(查看原文) 阅读量:205 收藏

[原创]弄掉VMP某个版本的CRC

1天前 336

因为给一个程序打启动补丁,之前这个程序没加壳,现在加壳了,区段为vmp1,打启动补丁会被crc,所以试着弄了一下,发现挺简单的


程序拖入OD,然后找到要patch的位置,我要修改这个call


下个访问断点,重新开始,会停下来


停在这里以后,发现,ecx为扫描的地址,esi为储存代码的寄存器,每次扫描一次字节

这时候,我们patch那个call,然后将esi修改为patch前的字节数据,运行起来,发现crc并没有扫到我们的patch

于是构造一个shellcode对代码进行hook

039B0000 - movzx esi,byte ptr [ecx]
039B0003 - push eax
039B0004 - pushfd 
039B0005 - mov eax,xxxxxx.dll+5B5CE	
039B000A - cmp eax,ecx
039B000C - jne 039B0013
039B000E - mov esi,00000020
039B0013 - add eax,01
039B0016 - cmp eax,ecx
039B0018 - jne 039B001F
039B001A - mov esi,0000002A
039B001F - add eax,01
039B0022 - cmp eax,ecx
039B0024 - jne 039B002B
039B0026 - mov esi,00000005
039B002B - add eax,01
039B002E - cmp eax,ecx
039B0030 - jne 039B0037
039B0032 - mov esi,00000000
039B0037 - popfd 
039B0038 - pop eax
039B0039 - xor esi,eax
039B003B - jmp xxxxxx.dll+8809D4

因为我patch四个字节,所以我只加了四个cmp,代码写的可能不是最好的,但是逻辑一眼就可以看懂

最后的效果如下



汇编代码,相信有点基础的都可以看懂,我也就不过多的说了

可能帖子的内容不太符合时代,但是我也是第一次解除壳的crc,没写好或者有建议或者想补充请评论。

[招生]科锐逆向工程师培训(3月6日远程教学报名特惠, 第37期)

最后于 1天前 被刘铠文编辑 ,原因:


文章来源: https://bbs.pediy.com/thread-257979.htm
如有侵权请联系:admin#unsafe.sh