今天这是我第一次发贴,以后我将经常在此教大家脱壳。以前有迷乱教大家破解,将我教的脱壳结合。
由于时间关系,我不能用视频教程教大家,只能用手写。
今天我们进入第一课,我们来脱这个壳UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo
这是以泡泡堂刷点卷挂为例,我会放到下面以便你们学。
首先我们查壳,这是必要的。UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo
我们用OD载入会有个选择我们点否,来到这
00457B40 > 60 PUSHAD
00457B41 BE 00B04300 MOV ESI,刷点券外.0043B000
00457B46 8DBE 0060FCFF LEA EDI,DWORD PTR DS:[ESI+FFFC6000]
00457B4C 57 PUSH EDI
00457B4D 83CD FF OR EBP,FFFFFFFF
00457B50 EB 10 JMP SHORT 刷点券外.00457B62
00457B52 90 NOP
对于UPX的壳我们用F8单步往下走。
00457B69 ^72 ED JB SHORT 刷点券外.00457B58
00457B6B B8 01000000 MOV EAX,1 这里我们F4,运行所选
00457B70 01DB ADD EBX,EBX
走到这,我们遇到一个跳转,他是个往回跳的跳,我们不能让他跳回去,所以就在他的下一个非空跳F4。继续走
00457B7F ^73 EF JNB SHORT 刷点券外.00457B70 这又是个跳,但他没有实现。不管他
00457B81 75 09 JNZ SHORT 刷点券外.00457B8C
00457B83 8B1E MOV EBX,DWORD PTR DS:[ESI]
00457B85 83EE FC SUB ESI,-4
我们可以在下面点点可以看到写了这个跳没有实现,不管它。继续走
00457C0D ^E9 4CFFFFFF JMP 刷点券外.00457B5E 这又是个跳,实现了,我们在下一个F4
00457C12 5E POP ESI
00457C13 8DBE 00500500 LEA EDI,DWORD PTR DS:[ESI+55000]
00457C19 8B07 MOV EAX,DWORD PTR DS:[EDI]
00457C1B 09C0 OR EAX,EAX
继续走
00457C48 57 PUSH EDI ; 刷点券外.00456009
00457C49 48 DEC EAX
00457C4A F2:AE REPNE SCAS BYTE PTR ES:[EDI]
00457C4C 55 PUSH EBP
00457C4D FF96 08CC0500 CALL DWORD PTR DS:[ESI+5CC08]
00457C53 09C0 OR EAX,EAX
00457C55 74 07 JE SHORT 刷点券外.00457C5E
00457C57 8903 MOV DWORD PTR DS:[EBX],EAX
00457C59 83C3 04 ADD EBX,4
00457C5C ^EB D8 JMP SHORT 刷点券外.00457C36
00457C5E FF96 0CCC0500 CALL DWORD PTR DS:[ESI+5CC0C]
00457C64 61 POPAD 这就是壳的出口,我们也F4运行所选
00457C65 -E9 D295FAFF JMP 刷点券外.0040123C
我们走到这,就是壳的出口了。我在往前走就到了。来到这
0040123C 68 508A4100 PUSH 刷点券外.00418A50 这就是壳的出口,直接右键DUMP
00401241 E8 F0FFFFFF CALL 刷点券外.00401236 ; JMP to MSVBVM60.ThunRTMain
00401246 0000 ADD BYTE PTR DS:[EAX],AL
00401248 0000 ADD BYTE PTR DS:[EAX],AL
0040124A 0000 ADD BYTE PTR DS:[EAX],AL
0040124C 3000 XOR BYTE PTR DS:[EAX],AL
0040124E 0000 ADD BYTE PTR DS:[EAX],AL
00401250 40 INC EAX
我们就可以直接DUMP了。。
右键后点击[脱壳在当前调试的进程]
这个壳就脱掉了。