我的系统是win 2003
版本(peid0.92)Armadillo 3.00a - 3.61 -> Silicon Realms Toolworks,运行为双进程,软件计数(关机后运行才计数)25次,再运行需要注册码。
od载入程序,无论如何如何下断也异常退出,后把od改名,现象消失,按照前辈指点的双标准进程壳进行脱壳,找到magic jump后修改,下401000内存访问断点,程序异常终止,无法到达oep。如下:
===================================================
0047E000 > $ 60 PUSHAD
0047E001 . E8 00000000 CALL ACSrv.0047E006
0047E006 $ 5D POP EBP
0047E007 . 50 PUSH EAX
0047E008 . 51 PUSH ECX
0047E009 . EB 0F JMP SHORT ACSrv.0047E01A
0047E00B B9 DB B9
0047E00C > EB 0F JMP SHORT ACSrv.0047E01D
0047E00E > B8 EB07B9EB MOV EAX,EBB907EB
0047E013 . 0F90EB SETO BL
0047E016 . 08FD OR CH,BH
0047E018 . EB 0B JMP SHORT ACSrv.0047E025
0047E01A > F2: PREFIX REPNE: ; 多余的前缀
0047E01B .^ EB F5 JMP SHORT ACSrv.0047E012
0047E01D >^ EB F6 JMP SHORT ACSrv.0047E015
0047E01F F2 DB F2
===================================================
下断BP OpenMutexA
0012F56C 00463CAD /CALL 到 OpenMutexA
0012F570 001F0001 |Access = 1F0001
0012F574 00000000 |Inheritable = FALSE
0012F578 0012FBAC \MutexName = "94::DA85812AEA"
0012F57C 0012FEFC
0012F580 00000000
0012F584 00477839 ACSrv.00477839
===============================================
ctrl+G 键入汇编
pushad
PUSHFD
PUSH 12FBAC
XOR EAX,EAX
PUSH EAX
PUSH EAX
CALL KERNEL32.CreateMutexA
POPFD
POPAD
JMP KERNEL32.OpenMutexA
==============================================
下断BP GetModuleHandleA+5
十几次F9得到:
00AF9705 8B0D C04CB200 MOV ECX,DWORD PTR DS:[B24CC0]
00AF970B 89040E MOV DWORD PTR DS:[ESI+ECX],EAX
00AF970E A1 C04CB200 MOV EAX,DWORD PTR DS:[B24CC0]
00AF9713 393C06 CMP DWORD PTR DS:[ESI+EAX],EDI
00AF9716 75 16 JNZ SHORT 00AF972E
00AF9718 8D85 B4FEFFFF LEA EAX,DWORD PTR SS:[EBP-14C]
00AF971E 50 PUSH EAX
00AF971F FF15 D0B0B100 CALL DWORD PTR DS:[B1B0D0]
00AF9725 8B0D C04CB200 MOV ECX,DWORD PTR DS:[B24CC0]
00AF972B 89040E MOV DWORD PTR DS:[ESI+ECX],EAX
00AF972E A1 C04CB200 MOV EAX,DWORD PTR DS:[B24CC0]
00AF9733 393C06 CMP DWORD PTR DS:[ESI+EAX],EDI
00AF9736 0F84 AD000000 JE 00AF97E9----------------〉magic jump
00AF973C 33C9 XOR ECX,ECX
00AF973E 8B03 MOV EAX,DWORD PTR DS:[EBX]
00AF9740 3938 CMP DWORD PTR DS:[EAX],EDI
00AF9742 74 06 JE SHORT 00AF974A
00AF9744 41 INC ECX
00AF9745 83C0 0C ADD EAX,0C
00AF9748 ^ EB F6 JMP SHORT 00AF9740
00AF974A 8BC1 MOV EAX,ECX
00AF974C C1E0 02 SHL EAX,2
00AF974F 50 PUSH EAX
00AF9750 E8 D9100200 CALL 00B1A82E
00AF9755 59 POP ECX
00AF9756 8B0D BC4CB200 MOV ECX,DWORD PTR DS:[B24CBC]
修改为jmp 00af97e9之后下00401000内存访问断点
=================================================
00B1375F 8B04B0 MOV EAX,DWORD PTR DS:[EAX+ESI*4]
00B13762 3341 34 XOR EAX,DWORD PTR DS:[ECX+34]
00B13765 8B0D 8890B200 MOV ECX,DWORD PTR DS:[B29088]
00B1376B 3341 70 XOR EAX,DWORD PTR DS:[ECX+70]
00B1376E 8B0D 8890B200 MOV ECX,DWORD PTR DS:[B29088]
============================================================
被调试的程序无法处理异常,紧接着进程终止。
怎么到不了oep?请高手指点一二,感谢!
[课程]FART 脱壳王!加量不加价!FART作者讲授!