找回密码
 注册
搜索
热搜: 回贴

脱壳技术,脱Crunch/PE -* BitArts的壳(3千字),Crunch

2010-1-30 18:18| 发布者: admin| 查看: 85| 评论: 0|原作者: 段誉


脱壳技术,脱Crunch/PE -> BitArts的壳(3千字),Crunch
2008年06月23日 星期一 下午 03:18
脱Crunch/PE -> BitArts的壳。

这个壳不难,我没有发现他有反跟踪的功能,不如软件的作者以前给他的作品加的PEcompact修改版的壳难!

为了遵守论坛上的约定,我不说软件的名字。

其实这个壳挺简单的,好了,开始吧!

运行trw,载入程序。

BitArts:005A2000 start proc near

BitArts:005A2000 push ebp

BitArts:005A2001 call 5A2006 <---这要按F8,因为并不是真正的call,只是jmp的变形。在脱aspr的壳是也会经常的碰到这种情况,那么要如何来判断什么时候按F8什么时候按F10呢?我发现,如果这个call是调用很近的地址的时候,比如上面的call 5A2006,这个5A2006就是下面的地址,所以要按F8,否则程序就会运行了,达不到跟踪的目的。相反的如果调用是比较远的地址时可以用F10代过,但是也要看情况而定。

BitArts:005A2006 pop ebp

BitArts:005A2007 sub ebp, 6

BitArts:005A200A mov eax, ebp

BitArts:005A200C push ebp

BitArts:005A200D pusha

BitArts:005A200E mov [ebp 348Ah], ebp

BitArts:005A2014 sub eax, [ebp 3465h]

BitArts:005A201A mov [ebp 2519h], eax

BitArts:005A2020 push ebp

BitArts:005A2021 mov ebx, 1ECDh

BitArts:005A2026 add ebx, ebp

BitArts:005A2028 push ebx

BitArts:005A2029 push dword ptr fs:0

BitArts:005A202F mov fs:0, esp

BitArts:005A2035 cmp byte ptr [ebp 3690h], 0

BitArts:005A203C jnz short loc_5A2047

BitArts:005A203E mov byte ptr [ebp 3690h], 1

BitArts:005A2045 jmp short loc_5A205C

下面就一直按F10,不过你要注意看ECX里面的数据,因为通常都是ECX在做记数器,看着ECX用F7来跳过一段一段的解压过程。这里有个小技巧,假设你现在的位置是:

5A611C:jmp005A6074 <-----你现在的位置。

5A6121: mov ecx,13

你会看到这个jmp是向前跳转的,这时按F6,然后把光棒放到5A6121的位置上,按F7。通常的情况下你会安全着陆的,在脱aspr的壳时用这样的方法也可以跳过重复的步骤。

从5A6121这开始再跳过一个jmp就很快的来到了程序真正的入口了,有个jmp eax。

好了,用命令makepe dump.exe就行了,到此脱壳结束。

运行一下dump.exe,发现logo出现后就马上推出了,用trw分别载入dump.exe和未脱壳的程序跟踪对比后发现:

:004C9C05 BA9CA64C00 mov edx, 004CA69C

:004C9C0A 8B45FC mov eax, dword ptr [ebp-04]

:004C9C0D E8CAA10100 call 004E3DDC

:004C9C12 8B45A4 mov eax, dword ptr [ebp-5C]

:004C9C15 50 push eax

:004C9C16 8D559C lea edx, dword ptr [ebp-64]

:004C9C19 A1787C4E00 mov eax, dword ptr [004E7C78]

:004C9C1E 8B00 mov eax, dword ptr [eax]

:004C9C20 E8A78BF8FF call 004527CC

:004C9C25 8B459C mov eax, dword ptr [ebp-64]

:004C9C28 8D55A0 lea edx, dword ptr [ebp-60]

:004C9C2B E878ECF3FF call 004088A8

:004C9C30 8B55A0 mov edx, dword ptr [ebp-60]

:004C9C33 58 pop eax

:004C9C34 E86BA5F3FF call 004041A4

:004C9C39 85C0 test eax, eax

:004C9C3B 7F05 jg 004C9C42 <-----这里要跳过才行。

:004C9C3D E81E9EF3FF call 00403A60 <-----这儿会退出的,我没有试全nop后行不行。



* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:004C9C3B(C)

|

:004C9C42 6A00 push 00000000

:004C9C44 6880000000 push 00000080

:004C9C49 6A03 push 00000003

:004C9C4B 6A00 push 00000000

:004C9C4D 6A03 push 00000003

:004C9C4F 68000000C0 push C0000000

:004C9C54 8D4D98 lea ecx, dword ptr [ebp-68]





好了,修改后,运行一下,没有发现有什么问题。算是脱壳成功吧!





小球

2002.5.4




最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 23:36 , Processed in 0.167842 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部