修改前的代码和修改方法
004C51C4 pushfd
004C51C5 pushad
004C51C6 call 004C51CB
004C51CB pop ebp
004C51CC mov eax,7 修改为sub ebp,7(ebp的值为入口点的内存值)
004C51D1 sub ebp,eax NOP
004C51D3 lea esi,dword ptr ss:[ebp-48C] 修改为mov ebx,-48C和add ebx,ebp, 记下此处的48C这个值就称A1。
004C51D9 mov al,byte ptr ds:[esi] 修改为mov al,0(al的值为eax的最低二位)
004C51DB cmp al,0 NOP(EXE文件在ebp-48C的值为0,DLL则为1,所以可以将以下的判断语句NOP, 如果修改DLL文件, 此处有点不同。 )
004C51DD je short 004C51F1 NOP(下面的修改代码写到NOP这里,也可以在这里写点花代码)
004C51DF mov esi,ebp NOP
004C51E1 lea esi,dword ptr ss:[ebp-464] NOP
004C51E7 mov al,byte ptr ds:[esi] NOP
004C51E9 cmp al,1 NOP
004C51EB je 004C5433 NOP
004C51F1 mov byte ptr ds:[esi],1 修改为mov byte ptr ds:[ebx],1(往上移到NOP处)
004C51F4 mov edx,ebp
004C51F6 sub edx,dword ptr ss:[ebp-4D0] 修改为sub ebx,44和sub edx,dword ptr ss:[ebx]
004C51FC mov dword ptr ss:[ebp-4D0],edx 修改为mov dword ptr ss:[ebx],edx(edx的值为基址)
004C5202 add dword ptr ss:[ebp-4A0],edx 修改为add ebx,30和add dword ptr ss:[ebx],edx
004C5208 lea esi,dword ptr ss:[ebp-45C] 修改为add ebx,44和lea esi,dword ptr ss:[ebx]
004C520E add dword ptr ds:[esi],edx
004C5210 pushad 二进制代码修改为50 51 52 53 54 55 56 57
004C5211 push 40 修改为mov ebx,40和push ebx
004C5213 push 1000 和下面一句一起修改为mov ebx,1000和push ebx和push ebx
004C5218 push 1000
004C521D push 0 修改为sub ebx,1000和push ebx
004C521F call dword ptr ss:[ebp-428] 修改为mov ebx,ebp和add ebx,-428和call dword ptr ss:[ebx], 记下此处的428这个值, 就称A2。
004C5225 test eax,eax NOP
004C5227 je 004C5597 NOP
004C522D mov dword ptr ss:[ebp-4A8],eax 修改为sub ebx,80和mov dword ptr ss:[ebx],eax004C5233 call 004C5238 以下四句(含本句)NOP掉,修改为mov ebx,ebp和add ebx,3DC
004C5238 pop ebx NOP
004C5239 mov ecx,368 NOP
004C523E add ebx,ecx NOP
004C5240 push eax
004C5241 push ebx
004C5242 call 004C54F8 004C54F8的上一行代码是JMP语句,NOP掉,本句修改为call 004C54F3
004C5247 popad 修改到此, 有兴趣的可以继续
004C5248 mov esi,dword ptr ds:[esi]
004C524A mov edi,ebp