能力值:
( LV2,RANK:10 )
|
-
-
2 楼
我试下改了一下,先具体修改某一个地址,但到写入的时候就说非法,望高人指点一下
|
能力值:
( LV9,RANK:850 )
|
-
-
3 楼
用Hiew7.2
我估计你说的是不脱壳对它进行补丁,使其正版化的问题?
如果是这样,你先找到要修的地址,注册必须是物理偏移地址。
如果这段代码是在壳中,则必须使用hiew 查看到。
如果这段代码是在解压之后,那么它的地址,就是你在OD中看到的。
看上面那张图,应该是在解压之前的?
那就必须用Hiew找到物理偏移。
下面是我曾经写过的一篇,没有发表的东东中的一部分。
……
靠在OD,中无法定位,只是因为它还是未脱壳文件,还得转到Hiew7.2中去,
scroll to 0040D3B0 再按F3,发现转到实际的偏移:
00003FAF 61 popad
00003FB0 7508 jne 000003FBA------------在这里按F3,修改为为jmp 000004D00 //注意前面要多加个零
然后再来两个Nop
同样,来到00404D00 处,写上相应代码,然后按F9--Update,OK!!!!
保存一下吧。
用C语言来打补丁看看:
///////////////////////////////////////////////////////////////////
//不脱壳,对Aspack2,12的壳进行补丁
#include "stdio.h"
#define path "Crackme.exe"
static char patch1[7]={0xE9,0x4B,0x0D,0x00,0x00,0x90,0x90};
static char patch2[23]={0xC7,0x05,0xF9,0x57,0x40,0x00,0x90,0x90,0x90,0x90,0xC6,0x05,0xFD,0x57,0x40,0x00,0x90,0x68,0x34,0x5A,0x40,0x00,0xC3};
main()
{
FILE *f;
if ((f=fopen(path,"rb+"))==NULL) //以可读可写的方式打开
{
printf("cannot open file to readandwrite\n");
exit(0);
}
fseek(f,0x3FB0,0);
fwrite(patch1,sizeof(patch1),1,f);
rewind(f);
fseek(f,0x4D00,0);
fwrite(patch2,sizeof(patch2),1,f);
fclose(f);
}
//////////////////////////////////////////////////////////////////
|
能力值:
( LV13,RANK:410 )
|
-
-
4 楼
先使用VirtaulProtect使其头部可写,然后写00吧。应该是可以的,但是不推荐可能会造成一些问题,尤其是DLL
|
能力值:
(RANK:650 )
|
-
-
5 楼
楼上正解,3楼的不知所云+误导
其实楼主昨天在unpack.cn已经过问这样的问题了
fly回答是无意义的anti, 确实是无意义的anti
push esp
push 40 //PAGE_EXECUTE_READWRITE
push 1000 //size
push 400000 //base
call VirtualProtect
mov dword ptr [400000], 0
注意进制
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
谢谢shoooooo,也谢谢各位,虽然自己也知道是毫无意义,但因为初学asm写点东西,之前和朋友聊起这个anti,搞了几天不行,只是心有不甘而已
|