[Cracker] : bios
[时间] : 2005.07.6
[声明] : 只做技术交流,不做商业用途,如果你手头宽裕并喜欢这个软件的话请支持正版软件。
[软件信息]Easy CHM是国华软件推出的一款强大的CHM电子书或CHM帮助文件的快速制作工具。使用EasyCHM只需要三个步骤就可以完成CHM的制作:1、用户指定一个目录,EasyCHM会自动导入全部目录及文件;2、设置CHM编译选项;3、开始制作。EasyCHM非常适合个人和单位制作高压缩比的带有全文检索及高亮显示搜索结果的网页集锦、CHM帮助文件、专业的产品说明、公司介绍、CHM电子书等等。
[软件说明] : EASYCHM2.0
[保护方式] : 序列号 + 自校验
[限制方式] :时间限制
[外壳保护] : UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo [Overlay]
[编译器/语言]: Borland Delphi 6.0 - 7.0
[下载地址] : http://www.etextwizard.com/cn/download/ecdown.html
[目的] : 脱壳后自校验的去除
[分析过程]
PEID检测为UPX加的壳,UPX Shell脱壳后检测为DELPHI程序,运行EASYCHM_UNPACK程序弹
出
本程序已经被修改!
本程序可能被病毒或人为修改!
本程序将无法运行.
请重新安装!
看来程序有自校验.
一.下断
1. bpx setfilepointer/bpx createfilea
bpx setfilepointer
00402EB8 E8 4BE4FFFF call <jmp.&KERNEL32.SetFilePointer>
00402F02 E8 01E4FFFF call <jmp.&KERNEL32.SetFilePointer>
00409EA2 E8 39D7FFFF call <jmp.&KERNEL32.SetFilePointer>
有三处断点,F9运行后断在最后一个断点,ALT+B将前两个断点删除.
00409E9D 8B45 F8 mov eax,dword ptr ss:[ebp-8]
00409EA0 50 push eax
00409EA1 53 push ebx
00409EA2 E8 39D7FFFF call <jmp.&KERNEL32.SetFilePointer>;断点
00409EA7 8945 F8 mov dword ptr ss:[ebp-8],eax
00409EAA 8B45 F8 mov eax,dword ptr ss:[ebp-8]
00409EAD 8B55 FC mov edx,dword ptr ss:[ebp-4]
按F9 运行后断在00409EA2处,继续按F9 10次后单步跟踪,因为按F9 11次后出现错误窗口,只有重来了.F8直到0053CF63处进入系统领空,很快弹出错误窗口
...........................................
0053CE0B /74 51 je short EasyCHM_.0053CE5E
0053CE0D |EB 04 jmp short EasyCHM_.0053CE13
0053CE0F |55 push ebp
0053CE10 |03A7 448B45F8 add esp,dword ptr ds:[edi+F8458B44]
0053CE16 |8B80 FC020000 mov eax,dword ptr ds:[eax+2FC]
0053CE1C |8B55 F8 mov edx,dword ptr ss:[ebp-8]
0053CE1F |8990 24010000 mov dword ptr ds:[eax+124],edx
0053CE25 |C780 20010000 24C>mov dword ptr ds:[eax+120],EasyCHM_.0053C024
0053CE2F |EB 04 jmp short EasyCHM_.0053CE35
0053CE31 |75 13 jnz short EasyCHM_.0053CE46
0053CF2C 8B55 F8 mov edx,dword ptr ss:[ebp-8]
0053CF2F 8B45 F8 mov eax,dword ptr ss:[ebp-8]
0053CF32 E8 850E0000 call EasyCHM_.0053DDBC
0053CF37 8BD3 mov edx,ebx
0053CF39 80F2 01 xor dl,1
0053CF3C 8B45 F8 mov eax,dword ptr ss:[ebp-8]
0053CF5C A2 148BD38B mov byte ptr ds:[8BD38B14],al
0053CF61 45 inc ebp
0053CF62 F8 clc
0053CF63 E8 6CDAFFFF call EasyCHM_.0053A9D4 ;关键call jmp to
ERROR
0053CF68 EB 06 jmp short EasyCHM_.0053CF70
0053CF6A 55 push ebp
0053CF6B 44 inc esp
CTRL+F2重新运行,取消00409EA2处断点,CTRL+G 0053CF63 ,F2设断,F9运行到此,F7跟进
77F9FF64 8B1C24 mov ebx,dword ptr ss:[esp]
77F9FF67 51 push ecx
77F9FF68 53 push ebx
77F9FF69 E8 6F6CFFFF call ntdll.77F96BDD ;JMP to error
77F9FF6E 0AC0 or al,al
77F9FF70 74 0C je short ntdll.77F9FF7E
77F9FF72 5B pop ebx
77F9FF73 59 pop ecx
CTRL+F2重新运行
0053CF4D 03A7 448B45F8 add esp,dword ptr ds:[edi+F8458B44]
0053CF53 E8 2CD5FFFF call EasyCHM_.0053A484
0053CF58 EB 04 jmp short EasyCHM_.0053CF5E; 修改为jmp short
EasyCHM_.0053CF68
0053CF5A 75 13 jnz short EasyCHM_.0053CF6F
0053CF5C A2 148BD38B mov byte ptr ds:[8BD38B14],al
0053CF61 45 inc ebp
0053CF62 F8 clc
0053CF63 E8 6CDAFFFF call EasyCHM_.0053A9D4// 一定要跳过此CALL或将
其NOP
0053CF68 EB 06 jmp short EasyCHM_.0053CF70
0053CF6A 55 push ebp
右键复制到可执行文件保存为UNPACK后启动正常.
可在点新建按钮时又弹出
本程序已经被修改!
本程序可能被病毒或人为修改!
本程序将无法运行.
请重新安装!
看来程序还有检验.
OD截入修改后的UNPACK程序,bpx messageboxa 下断,运行程序,点新建按钮断在
0047E7CE处.
0047E7C6 56 push esi
0047E7C7 8B45 FC mov eax,dword ptr ss:[ebp-4]
0047E7CA 8B40 30 mov eax,dword ptr ds:[eax+30]
0047E7CD 50 push eax
0047E7CE E8 F595F8FF call <jmp.&user32.MessageBoxA>//JMP TO
ERROR
0047E7D3 8945 F8 mov dword ptr ss:[ebp-8],eax
0047E7D6 33C0 xor eax,eax
0047E7D8 5A pop edx
向上分析程序,
0047E642 C3 retn
0047E643 90 nop
0047E644 E8 770AF9FF call EasyCHM_.0040F0C0
0047E649 84C0 test al,al
0047E64B 74 07 je short EasyCHM_.0047E654
0047E64D 6A 00 push 0
0047E64F E8 B497F8FF call <jmp.&user32.PostQuitMessage>
0047E654 C3 retn
0047E655 8D40 00 lea eax,dword ptr ds:[eax]
再开一OD载入EASYCHM_UNPACK分析到
00476E18 ^\E9 DFD4F8FF jmp EasyCHM_.004042FC
00476E1D ^ EB ED jmp short EasyCHM_.00476E0C
00476E1F 8B45 FC mov eax,dword ptr ss:[ebp-4]
00476E22 807D FB 00 cmp byte ptr ss:[ebp-5],0
00476E26 74 0F je short EasyCHM_.00476E37 //修改为JMP short
EasyCHM_.00476E2D
00476E28 E8 F7D0F8FF call EasyCHM_.00403F24 //关键CALL JMP TO ERROR
00476E2D 64:8F05 0000000>pop dword ptr fs:[0]
00476E34 83C4 0C add esp,0C
00476E37 8B45 FC mov eax,dword ptr ss:[ebp-4]
00476E3A 5B pop ebx
00476E3B 8BE5 mov esp,ebp
00476E3D 5D pop ebp
00476E3E C3 retn
或将00476E28 E8 F7D0F8FF call EasyCHM_.00403F24 改为NOP
右键复制到可执行文件保存为EASYCHM2后启动正常,新建工程能打开了,可是新建按钮失
效了.
二.总结:用BPX SETFILEPOINTER ,BPX CREATEFILEA两个基本上都能拦截到文件自校验.此后一路F8到出错位置,将其NOP或跳过.在第二次校验时用BPX MESSAGEBOXA拦截,向上分析程序,不断设断,一路F8到出错位置,将其NOP或跳过,基本上能解决文件自校验.
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)