软件名称:易达清单大师4.5
下载地址:http://www.soft365.com.cn/Software.asp?id=48
壳类型:Armadillo
用FI4.01查壳为Armadillo 3.7 {glue} SRT .text1
用Armadillo finder protected显示如下:
////////////////////////////////////////
C:\Inbuild\清单大师4.5[国标广东版]0925\QDDS4.ExE
★ 目标为Armadillo保护
★ 特征识别 = 48A038E0
保护系统级别为 (专业版)
◆所用到的保护模式有◆
屏蔽调试器
使用策略代码衔接模式
使用 Nanomites 处理模式
【备份密钥设置】
固定的备份密钥
【程序压缩设置】
较好/较慢地压缩方式
【其它保护设置】
////////////////////////////////////////
破解过程:
1、OD载入,忽略所有异常,用ISDEBUGERPRESENT隐藏OD。
2、运行ArmMutex.osc转换双进程为单进程。
3、下断HE GetModuleHandleA
///////////////////////////////////////
0012EC6C 5D175394 /CALL 到 GetModuleHandleA 来自 5D17538E
0012EC70 5D1753E0 \pModule = "kernel32.dll"
0012ED2C 77F45BB0 /CALL 到 GetModuleHandleA 来自 SHLWAPI.77F45BAA
0012ED30 77F44FF4 \pModule = "KERNEL32.DLL"
0012F540 00D26E03 /CALL 到 GetModuleHandleA 来自 QDDS4.00D26DFD
0012F544 00000000 \pModule = NULL
0012BB18 0169F613 /CALL 到 GetModuleHandleA 来自 0169F60D
0012BB1C 016B0B58 \pModule = "kernel32.dll"
0012BB20 016B1BB4 ASCII "VirtualAlloc"
0012BB18 0169F630 /CALL 到 GetModuleHandleA 来自 0169F62A
0012BB1C 016B0B58 \pModule = "kernel32.dll"
0012BB20 016B1BA8 ASCII "VirtualFree"
/////////////////////////////////////////
出现"不知如何回避位于0160E1AD的命令.请尝试更改EIP或忽略程序异常"
按SHIFT F9跳过,不知这里是不是问题所在?
清除硬件断点,再按ALT F9返回:
/////////////////////
01689705 8B0D C04C6B01 MOV ECX,DWORD PTR DS:[16B4CC0]
0168970B 89040E MOV DWORD PTR DS:[ESI+ECX],EAX
0168970E A1 C04C6B01 MOV EAX,DWORD PTR DS:[16B4CC0]
01689713 393C06 CMP DWORD PTR DS:[ESI+EAX],EDI
01689716 75 16 JNZ SHORT 0168972E
01689718 8D85 B4FEFFFF LEA EAX,DWORD PTR SS:[EBP-14C]
0168971E 50 PUSH EAX
0168971F FF15 D0B06A01 CALL DWORD PTR DS:[16AB0D0] ; kernel32.LoadLibraryA
01689725 8B0D C04C6B01 MOV ECX,DWORD PTR DS:[16B4CC0]
0168972B 89040E MOV DWORD PTR DS:[ESI+ECX],EAX
0168972E A1 C04C6B01 MOV EAX,DWORD PTR DS:[16B4CC0]
01689733 393C06 CMP DWORD PTR DS:[ESI+EAX],EDI
01689736 0F84 AD000000 JE 016897E9 ;;;这里修改Magic jump为jmp 016897E9
0168973C 33C9 XOR ECX,ECX
0168973E 8B03 MOV EAX,DWORD PTR DS:[EBX]
01689740 3938 CMP DWORD PTR DS:[EAX],EDI
01689742 74 06 JE SHORT 0168974A
01689744 41 INC ECX
01689745 83C0 0C ADD EAX,0C
01689748 ^ EB F6 JMP SHORT 01689740
0168974A 8BC1 MOV EAX,ECX
//////////////////
修改Magic jump为jmp 016897E9
清除所有断点,ALT+M 调出Memory map,在00401000处右击设置内存访问断点,F9运行,程序异常,然后进程退出,请问是什么原因?
参考论坛内很多帖子,没有COPYMEM II应该是这样没错了.
[课程]Linux pwn 探索篇!