008C27B5 > 9C pushfd
008C27B6 60 pushad
008C27B7 E8 00000000 call 2.008C27BC
008C27BC 5D pop ebp
008C27BD 83ED 07 sub ebp,7
008C27C0 8D8D 67FAFFFF lea ecx,dword ptr ss:[ebp-599]
008C27C6 8039 01 cmp byte ptr ds:[ecx],1
008C27C9 0F84 42020000 je 2.008C2A11
008C27CF C601 01 mov byte ptr ds:[ecx],1
008C27D2 8BC5 mov eax,ebp
008C27D4 2B85 FBF9FFFF sub eax,dword ptr ss:[ebp-605]
008C27DA 8985 FBF9FFFF mov dword ptr ss:[ebp-605],eax
008C27E0 0185 2BFAFFFF add dword ptr ss:[ebp-5D5],eax
008C27E6 8DB5 6FFAFFFF lea esi,dword ptr ss:[ebp-591]
008C27EC 0106 add dword ptr ds:[esi],eax
008C27EE 55 push ebp
上面是原程序代码,是北斗的壳用ESP定律跟随到以下
008C2A25 61 popad
008C2A26 9D popfd
008C2A27 - E9 D425F0FF jmp 2.007C5000 大跳转
008C2A2C 8BB5 F3F9FFFF mov esi,dword ptr ss:[ebp-60D]
008C2A32 0BF6 or esi,esi
008C2A34 0F84 97000000 je 2.008C2AD1
008C2A3A 8B95 FBF9FFFF mov edx,dword ptr ss:[ebp-605]
之后直接跳到以下代码
007C5000 > 9C pushfd 这个应该是入口了。
007C5001 60 pushad
007C5002 E8 00000000 call 1.007C5007
007C5007 5D pop ebp
007C5008 81ED CD474100 sub ebp,1.004147CD
007C500E 36:8B0424 mov eax,dword ptr ss:[esp]
007C5012 8DB5 D2494100 lea esi,dword ptr ss:[ebp+4149D2]
007C5018 3E:8986 9C00000>mov dword ptr ds:[esi+9C],eax
007C501F 36:8B4424 04 mov eax,dword ptr ss:[esp+4]
007C5024 3E:8986 9400000>mov dword ptr ds:[esi+94],eax
007C502B 36:8B4424 08 mov eax,dword ptr ss:[esp+8]
007C5030 3E:8986 A400000>mov dword ptr ds:[esi+A4],eax
脱完之后了。直接用ImportREC_fix修复时找iat失败,有peid深度扫描的时候可以查到是dephi6-7写的程序。是不是没脱干净呢。
[课程]Linux pwn 探索篇!