大家好,今天我教大家脱ASPACK的壳。
首先一样先查壳。
然后用OD载入照样点否。来到
0040D001 > 60 PUSHAD
0040D002 E8 03000000 CALL Notepad.0040D00A 这里有个CALL,这是用来调动子程序的。我们F7进去,不然它的程序就运行了。
0040D007 -E9 EB045D45 JMP 459DD4F7
0040D00C 55 PUSH EBP
0040D00D C3 RETN
0040D00E E8 01000000 CALL Notepad.0040D014
进入后来到这
0040D00A 5D POP EBP ; Notepad.0040D007
0040D00B 45 INC EBP
0040D00C 55 PUSH EBP
0040D00D C3 RETN 这是返回,F8这了就会返回
0040D00E E8 01000000 CALL Notepad.0040D014
0040D013 EB 5D JMP SHORT Notepad.0040D072
返回到这
0040D008 EB 04 JMP SHORT Notepad.0040D00E F8单步走直接跳到了CALL
0040D00A 5D POP EBP
0040D00B 45 INC EBP
0040D00C 55 PUSH EBP
0040D00D C3 RETN
0040D00E E8 01000000 CALL Notepad.0040D014 这个CALL,我们F7进去
0040D013 EB 5D JMP SHORT Notepad.0040D072
到这
0040D014 5D POP EBP ; Notepad.0040D013
0040D015 BB EDFFFFFF MOV EBX,-13
0040D01A 03DD ADD EBX,EBP
0040D01C 81EB 00D00000 SUB EBX,0D000
0040D022 83BD 22040000 00 CMP DWORD PTR SS:[EBP+422],0
0040D029 899D 22040000 MOV DWORD PTR SS:[EBP+422],EBX
0040D02F 0F85 65030000 JNZ Notepad.0040D39A 这里一个跳,没有实现,我们回车进去。F4让它实现。
0040D39A B8 CC100000 MOV EAX,10CC 就是这里F4
0040D39F 50 PUSH EAX
0040D3A0 0385 22040000 ADD EAX,DWORD PTR SS:[EBP+422]
0040D3A6 59 POP ECX
0040D3A7 0BC9 OR ECX,ECX
0040D3A9 8985 A8030000 MOV DWORD PTR SS:[EBP+3A8],EAX
0040D3AF 61 POPAD 这里上节课我们将过这就是壳的出口了。但是在这不一样,我们继续F8往下走
0040D3B0 75 08 JNZ SHORT Notepad.0040D3BA
走走走
进到这
004010CC 55 PUSH EBP 壳的真正出口了用上节课的方法直接DUMP
004010CD 8BEC MOV EBP,ESP
004010CF 83EC 44 SUB ESP,44
004010D2 56 PUSH ESI
004010D3 FF15 E4634000 CALL DWORD PTR DS:[4063E4] ; kernel32.GetCommandLineA
004010D9 8BF0 MOV ESI,EAX
004010DB 8A00 MOV AL,BYTE PTR DS:[EAX]
004010DD 3C 22 CMP AL,22
今天课程就到这。。
我发现个问题,我复制到这里面的代码在跳的地方少了这个符号“∧”“∨”这就是跳的符号,往哪跳就不用说了吧。。