最近在学习脱壳。遇到一个未知壳,入口很乱
00439451 > 3E:0FA4C1 64 shld ecx,eax,64
00439456 0FCF bswap edi
00439458 F6DC neg ah
0043945A F7C5 D150D34A test ebp,4AD350D1
00439460 1C 23 sbb al,23
00439462 C6C2 71 mov dl,71
00439465 0FC8 bswap eax
00439467 D1D6 rcl esi,1
00439469 0FCD bswap ebp
0043946B 89CB mov ebx,ecx
0043946D 41 inc ecx
0043946E 0FCF bswap edi
00439470 1AE2 sbb ah,dl
00439472 64: prefix fs:
然后我不经意 的往上拉了一下,突然发现,很像upx壳的出口。只是中间隔了一小段的全零。
然后在00439428 下段到oep搞定。
00439418 /74 07 je short chess.00439421
0043941A |8903 mov dword ptr ds:[ebx],eax
0043941C |83C3 04 add ebx,4
0043941F ^|EB D8 jmp short chess.004393F9
00439421 \FF96 98F40300 call dword ptr ds:[esi+3F498]
00439427 61 popad
00439428 - E9 EDD1FCFF jmp chess.0040661A
0043942D 0000 add byte ptr ds:[eax],al
0043942F 0000 add byte ptr ds:[eax],al
00439431 0000 add byte ptr ds:[eax],al
00439433 0000 add byte ptr ds:[eax],al
00439435 0000 add byte ptr ds:[eax],al
00439437 0000 add byte ptr ds:[eax],al
00439439 0000 add byte ptr ds:[eax],al
0043943B 0000 add byte ptr ds:[eax],al
0043943D 0000 add byte ptr ds:[eax],al
0043943F 0000 add byte ptr ds:[eax],al
00439441 0000 add byte ptr ds:[eax],al
00439443 0000 add byte ptr ds:[eax],al
00439445 0000 add byte ptr ds:[eax],al
00439447 0000 add byte ptr ds:[eax],al
00439449 0000 add byte ptr ds:[eax],al
0043944B 0000 add byte ptr ds:[eax],al
0043944D 0000 add byte ptr ds:[eax],al
0043944F 0000 add byte ptr ds:[eax],al
00439451 > 3E:0FA4C1 64 shld ecx,eax,64
这是一个很简单的一个壳。用单步向下跟踪F8,实现向下的跳。不实现向上的跳也很容易到达oep。我这里想说的是,偶尔把代码往上拉拉,或许你会发现意想不到的惊喜!
[培训]科锐逆向工程师培训第53期2025年7月8日开班!