用PEID查得UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo [Overlay]的一个壳
用OD载入后得到的入口
0042B000 > 90 nop
0042B001 B9 9608BD01 mov ecx,1BD0896
0042B006 90 nop
0042B007 90 nop
0042B008 68 20B04200 push 1111.0042B020
0042B00D 5E pop esi
0042B00E 68 98050000 push 598
0042B013 5A pop edx
0042B014 FF3432 push dword ptr ds:[edx+esi]
0042B017 310C24 xor dword ptr ss:[esp],ecx
0042B01A 8F0432 pop dword ptr ds:[edx+esi]
0042B01D 83EA 04 sub edx,4
0042B020 ^ 75 F2 jnz short 1111.0042B014
0042B022 90 nop
0042B023 90 nop
0042B024 7E 75 jle short 1111.0042B09B ;//F4下断后他的地址变为call 0042B1A6 然后F7进去
###########################
0042B01A 8F0432 pop dword ptr ds:[edx+esi]
0042B01D 83EA 04 sub edx,4
0042B020 ^ 75 F2 jnz short 1111.0042B014
0042B022 90 nop
0042B023 90 nop
0042B024 E8 7D010000 call 1111.0042B1A6 ;//*********
0042B029 0000 add byte ptr ds:[eax],al
0042B02B 0000 add byte ptr ds:[eax],al
0042B02D 0040 00 add byte ptr ds:[eax],al
#################################################
0042B024 7E 75 jle short 1111.0042B09B ;//F4下断后他的地址变为call 0042B1A6 然后F7进去得到的地址为
0042B1A6 55 push ebp
0042B1A7 8BEC mov ebp,esp
0042B1A9 81C4 C0FEFFFF add esp,-140
0042B1AF 8BC5 mov eax,ebp
0042B1B1 83C0 04 add eax,4
0042B1B4 8BD5 mov edx,ebp
0042B1B6 53 push ebx
0042B1B7 56 push esi
0042B1B8 57 push edi
0042B1B9 33DB xor ebx,ebx
0042B1BB 8B38 mov edi,dword ptr ds:[eax]
0042B1BD 8D4D C8 lea ecx,dword ptr ss:[ebp-38]
0042B1C0 83EF 05 sub edi,5
然后一直拉到段尾,在RETN下断
0042B232 8D85 C2FEFFFF lea eax,dword ptr ss:[ebp-13E>
0042B238 50 push eax
0042B239 E8 7C010000 call 1111.0042B3BA
0042B23E 5F pop edi
0042B23F 5E pop esi
0042B240 5B pop ebx
0042B241 8BE5 mov esp,ebp
0042B243 5D pop ebp
0042B244 C3 retn ;//F4下断运行到这然后F7进去
###########################################################
得到现在的地址
004252F0 60 pushad ;//到这里才是程序的入口然后用ESP定律
004252F1 BE 00904100 mov esi,1111.00419000
004252F6 8DBE 0080FEFF lea edi,dword ptr ds:[esi+FFF>
004252FC 57 push edi
004252FD 83CD FF or ebp,FFFFFFFF
00425300 EB 10 jmp short 1111.00425312
00425302 90 nop
00425303 90 nop
00425304 90 nop
00425305 90 nop
00425306 90 nop
00425307 90 nop
00425308 8A06 mov al,byte ptr ds:[esi]
###############################################
0042543C 83C3 04 add ebx,4
0042543F ^ EB D8 jmp short 1111.00425419
00425441 FF96 E0920200 call dword ptr ds:[esi+292E0]
00425447 61 popad
00425448 - E9 B3BBFDFF jmp 1111.00401000 ;//程序断在这里,取消断点F8进去
0042544D 0000 add byte ptr ds:[eax],al
0042544F 0000 add byte ptr ds:[eax],al
00425451 0000 add byte ptr ds:[eax],al
##############################################
00401000 E8 9B270000 call 1111.004037A0 ;//F8进来后得到这个地址,请问版主这是程序的OEP吗?
00401005 50 push eax
00401006 E8 A7220100 call 1111.004132B2 ; jmp 到
0040100B 0000 add byte ptr ds:[eax],al
0040100D 0000 add byte ptr ds:[eax],al
0040100F 90 nop
00401010 55 push ebp
00401011 8BEC mov ebp,esp
00401013 53 push ebx
00401014 56 push esi
如果这里算是OEP的话,但脱不了壳,请各位高手看看好吗?
[课程]Android-CTF解题方法汇总!