一个delphi程序没有加壳前代码特征如下
044450A0 > 55 PUSH EBP
044450A1 8BEC MOV EBP,ESP
044450A3 83C4 D8 ADD ESP,-28
044450A6 53 PUSH EBX
044450A7 56 PUSH ESI
044450A8 57 PUSH EDI
044450A9 33C0 XOR EAX,EAX
044450AB 8945 DC MOV DWORD PTR SS:[EBP-24],EAX
044450AE 8945 E4 MOV DWORD PTR SS:[EBP-1C],EAX
044450B1 8945 E0 MOV DWORD PTR SS:[EBP-20],EAX
044450B4 8945 EC MOV DWORD PTR SS:[EBP-14],EAX
044450B7 8945 E8 MOV DWORD PTR SS:[EBP-18],EAX
044450BA B8 78484404 MOV EAX,GJ80_o.04444878
044450BF E8 3023D5FF CALL GJ80_o.041973F4 //注意这个call
044450C4 8B1D B4B94404 MOV EBX,DWORD PTR DS:[444B9B4]
044450CA 33C0 XOR EAX,EAX
ASProtect 1.23 RC4 - 1.3.08.24 加壳后,到入口的代码如下
0446B69D 0000 ADD BYTE PTR DS:[EAX],AL
0446B69F 001CAD 46040000 ADD BYTE PTR DS:[EBP*4+446],BL
0446B6A6 0000 ADD BYTE PTR DS:[EAX],AL
0446B6A8 0000 ADD BYTE PTR DS:[EAX],AL
0446B6AA 0000 ADD BYTE PTR DS:[EAX],AL
0446B6AC 0000 ADD BYTE PTR DS:[EAX],AL
0446B6AE 0000 ADD BYTE PTR DS:[EAX],AL
0446B6B0 0000 ADD BYTE PTR DS:[EAX],AL
0446B6B2 0000 ADD BYTE PTR DS:[EAX],AL
0446B6B4 0000 ADD BYTE PTR DS:[EAX],AL
0446B6B6 0000 ADD BYTE PTR DS:[EAX],AL
0446B6B8 0000 ADD BYTE PTR DS:[EAX],AL
0446B6BA 0000 ADD BYTE PTR DS:[EAX],AL
0446B6BC 0000 ADD BYTE PTR DS:[EAX],AL
0446B6BE 0000 ADD BYTE PTR DS:[EAX],AL
0446B6C0 0000 ADD BYTE PTR DS:[EAX],AL //上面抽取的代码可以找到
0446B6C2 00E8 ADD AL,CH //疑问: 这里原来的call变成这个样子了。应该怎样恢复呢?
0446B6C4 3C BD CMP AL,0BD //抽取后的
0446B6C6 D2FF SAR BH,CL //抽取后的
0446B6C8 8B1D E4244704 MOV EBX,DWORD PTR DS:[44724E4]
0446B6CE 33C0 XOR EAX,EAX
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!