晨曦照相 发表于 2020-3-17 17:36

upx脱壳

本帖最后由 晨曦照相 于 2020-3-17 21:59 编辑

使用esp定律、单步到达了下列位置:
0046E7A8    E8 8C040000   call NOTEPAD.0046EC39
0046E7AD^ E9 57FDFFFF   jmp NOTEPAD.0046E509
0046E7B2- FF25 34174000   jmp dword ptr ds:            ; msvcrt._unlock
0046E7B8- FF25 38174000   jmp dword ptr ds:            ; msvcrt.__dllonexit
0046E7BE- FF25 D8174000   jmp dword ptr ds:            ; msvcrt._lock
我感觉快到oep了,但是为什么会有三个连起来的jmp?
感觉是作者为了保护程序设置的,如何规避?

Hacker_Xi 发表于 2020-3-17 18:08

jmp直接跳过,断点到jmp的下一行试试看?
或者你把壳发出来,看看什么问题

新手12138 发表于 2020-3-17 18:37

emmm大概这样就可以了吧

晨曦照相 发表于 2020-3-17 18:25

Hacker_Xi 发表于 2020-3-17 18:08
jmp直接跳过,断点到jmp的下一行试试看?
或者你把壳发出来,看看什么问题

好的,我这就把文件发一下https://pan.baidu.com/s/11k14LrbQBnuLNXmiw4yDyw 2333

晨曦照相 发表于 2020-3-17 18:28

0046E7A8    E8 8C040000   call NOTEPAD.0046EC39
0046E7AD^ E9 57FDFFFF   jmp NOTEPAD.0046E509
0046E7B2- FF25 34174000   jmp dword ptr ds:            ; msvcrt._unlock
0046E7B8- FF25 38174000   jmp dword ptr ds:            ; msvcrt.__dllonexit
0046E7BE- FF25 D8174000   jmp dword ptr ds:            ; msvcrt._lock
0046E7C4    68 1DE84600   push NOTEPAD.0046E81D
0046E7C9    64:FF35 0000000>push dword ptr fs:
0046E7D0    8B4424 10       mov eax,dword ptr ss:
0046E7D4    896C24 10       mov dword ptr ss:,ebp
0046E7D8    8D6C24 10       lea ebp,dword ptr ss:
0046E7DC    2BE0            sub esp,eax
0046E7DE    53            push ebx
0046E7DF    56            push esi
0046E7E0    57            push edi
0046E7E1    A1 F0CB4800   mov eax,dword ptr ds:
0046E7E6    3145 FC         xor dword ptr ss:,eax
0046E7E9    33C5            xor eax,ebp
0046E7EB    50            push eax
0046E7EC    8965 E8         mov dword ptr ss:,esp
0046E7EF    FF75 F8         push dword ptr ss:            ; kernel32.7C816040
0046E7F2    8B45 FC         mov eax,dword ptr ss:
0046E7F5    C745 FC FEFFFFF>mov dword ptr ss:,-0x2
0046E7FC    8945 F8         mov dword ptr ss:,eax
0046E7FF    8D45 F0         lea eax,dword ptr ss:
0046E802    64:A3 00000000mov dword ptr fs:,eax
0046E808    C3            retn
0046E809    8B4D F0         mov ecx,dword ptr ss:
0046E80C    64:890D 0000000>mov dword ptr fs:,ecx
0046E813    59            pop ecx                                  ; kernel32.7C816037
0046E814    5F            pop edi                                  ; kernel32.7C816037
0046E815    5F            pop edi                                  ; kernel32.7C816037
0046E816    5E            pop esi                                  ; kernel32.7C816037
0046E817    5B            pop ebx                                  ; kernel32.7C816037
0046E818    8BE5            mov esp,ebp
0046E81A    5D            pop ebp                                  ; kernel32.7C816037
0046E81B    51            push ecx
0046E81C    C3            retn
0046E81D    8BFF            mov edi,edi
0046E81F    55            push ebp
0046E820    8BEC            mov ebp,esp
0046E822    FF75 14         push dword ptr ss:
0046E825    FF75 10         push dword ptr ss:
0046E828    FF75 0C         push dword ptr ss:
0046E82B    FF75 08         push dword ptr ss:            ; NOTEPAD.<ModuleEntryPoint>
0046E82E    68 C0E14600   push NOTEPAD.0046E1C0                  ; ASCII ";\r鹚H"
0046E833    68 F0CB4800   push NOTEPAD.0048CBF0
0046E838    E8 F3FAFFFF   call NOTEPAD.0046E330
0046E83D    83C4 18         add esp,0x18
0046E840    5D            pop ebp                                  ; kernel32.7C816037
0046E841    C3            retn
0046E842    8BFF            mov edi,edi
0046E844    55            push ebp
0046E845    8BEC            mov ebp,esp
0046E847    81EC 28030000   sub esp,0x328
0046E84D    A3 F00A4900   mov dword ptr ds:,eax
0046E852    890D EC0A4900   mov dword ptr ds:,ecx
0046E858    8915 E80A4900   mov dword ptr ds:,edx          ; ntdll.KiFastSystemCallRet
0046E85E    891D E40A4900   mov dword ptr ds:,ebx
0046E864    8935 E00A4900   mov dword ptr ds:,esi
0046E86A    893D DC0A4900   mov dword ptr ds:,edi
0046E870    66:8C15 080B490>mov word ptr ds:,ss
0046E877    66:8C0D FC0A490>mov word ptr ds:,cs
0046E87E    66:8C1D D80A490>mov word ptr ds:,ds
0046E885    66:8C05 D40A490>mov word ptr ds:,es
0046E88C    66:8C25 D00A490>mov word ptr ds:,fs
0046E893    66:8C2D CC0A490>mov word ptr ds:,gs

若是跳过那三个jmp 下面的代码就有很多retn了
并且向上跳转的jmp和向下跳转的jmp在一块,不好下断点也不好f4

晨曦照相 发表于 2020-3-17 18:29

004BAF90 >60            pushad
004BAF91    BE 00604800   mov esi,NOTEPAD.00486000
004BAF96    8DBE 00B0F7FF   lea edi,dword ptr ds:
004BAF9C    57            push edi
004BAF9D    89E5            mov ebp,esp
004BAF9F    8D9C24 80C1FFFF lea ebx,dword ptr ss:
004BAFA6    31C0            xor eax,eax
004BAFA8    50            push eax
004BAFA9    39DC            cmp esp,ebx
004BAFAB^ 75 FB         jnz short NOTEPAD.004BAFA8
004BAFAD    46            inc esi
004BAFAE    46            inc esi
这是程序入口
在第二行用esp定律或者单步都能跟到前文所示的地方

晨曦照相 发表于 2020-3-17 20:51

新手12138 发表于 2020-3-17 18:37
emmm大概这样就可以了吧

你好,请问你是用的什么方法?

新手12138 发表于 2020-3-17 20:59

晨曦照相 发表于 2020-3-17 20:51
你好,请问你是用的什么方法?

就是esp定律啊 其实也就是pushf对应的popf 看到那些dll就应该是脱壳好了 我没去管跳过去那些call了 大多时候是不用管的吧

晨曦照相 发表于 2020-3-17 21:47

新手12138 发表于 2020-3-17 20:59
就是esp定律啊 其实也就是pushf对应的popf 看到那些dll就应该是脱壳好了 我没去管跳过去那些call了 大多 ...

好的,我试试

晨曦照相 发表于 2020-3-17 21:50

新手12138 发表于 2020-3-17 20:59
就是esp定律啊 其实也就是pushf对应的popf 看到那些dll就应该是脱壳好了 我没去管跳过去那些call了 大多 ...

直接在最后一个jmp下断是吗?
还是直接f4
遇到retn要管吗?
页: [1] 2
查看完整版本: upx脱壳