?
00531001 > 60 pushad 00531002 E8 03000000 call 0053100A 00531007 - E9 EB045D45 jmp 45B014F7 0053100C 55 push ebp 0053100D C3 retn一开始就发现情形不太对,当然专职搞破解的朋友马上看得出来,这是加壳以后的程序,一开始便运行的是壳的程序,
?
解压或解密出实际的代码,然后跳到实际入口去执行,那么脱壳即可啦,那我们再继续看
?
046620D1 81EC 00040000 sub esp, 400 046620D7 55 push ebp 046620D8 8BEC mov ebp, esp 046620DA 50 push eax 046620DB EB 0E jmp short 046620EB 046620DD 838B 84240804 0>or dword ptr [ebx+4082484], 0 046620E4 00EB add bl, ch 046620E6 01F0 add eax, esi 046620E8 EB 04 jmp short 046620EE 046620EA 54 push esp 046620EB ^ EB F1 jmp short 046620DE 046620ED 6BEB 0C imul ebp, ebx, 0C 046620F0 B7 6B mov bh, 6B 046620F2 8D40 FB lea eax, dword ptr [eax-5] 046620F5 EB 01 jmp short 046620F8 046620F7 09EB or ebx, ebp 046620F9 06 push es 046620FA 9B wait 046620FB 0D EBF4E7E8 or eax, E8E7F4EB 04662100 EB 0D jmp short 0466210F 04662102 9C pushfd 04662103 FE89 45ECEB03 dec byte ptr [ecx+3EBEC45] 04662109 BB 4B62EB06 mov ebx, 6EB624B 0466210E - 66:EB F3 jmp short 00002104在046620EB处 jmp short 046620DE,然而反汇编出来并没有开始为0x046620DE的指令
?
只有046620DD 是 or dword ptr[ebx+....], 0,这是怎么回事呢
我们把046620DD的字节改为int 3即0xCC再看一下

直接输入16进制CC一个字节

再看反汇编窗口

居然变成了
046620DE 8B8424 08040000 mov eax, dword ptr [esp+408]
恰好在jmp的目的地址,这不是欺负老实人吗?
?
不错,这就是花指令,而且是花指令的一种,让你反汇编了以后也是乱的
当然,花指令直接汇编级别的加密,如果你逆向360的程序,你会发现,加载就出现异常了,只能使用静态反汇编
父老常讲,道高一尺,魔高一丈,
世界是美好的,也是丑陋的,既要勇于奉献,也要知道保护自己,才是真正的道理
?
好吧,关于函数的调用,我们就扯这么多,回想起<黑客帝国>,有时候都不知道这世界是不是真实,至少代码应该是真实的吧
好像,又是夜深人静的时候了...