首页
社区
课程
招聘
[原创]EASYCHM自校验分析
发表于: 2005-7-7 14:39 7510

[原创]EASYCHM自校验分析

2005-7-7 14:39
7510
[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期)

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 110
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
支持,学习。。。
2005-7-7 15:42
0
雪    币: 133
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
把脱壳后文件的校验码写入替换原校验码试试,呵呵
2005-7-7 15:49
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
4
我晕~ 你前面的格式...  
2005-7-7 17:35
0
雪    币: 214
活跃值: (86)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
不错~~支持。
不过如果是VB的 软件呢???
2005-7-8 14:09
0
雪    币: 214
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
支持,学习
2005-7-9 00:30
0
雪    币: 219
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
最初由 Phoenix 发布
把脱壳后文件的校验码写入替换原校验码试试,呵呵


指的是哪种校验码
2005-7-9 11:10
0
雪    币: 133
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
完整性校验咯
2005-7-9 15:54
0
游客
登录 | 注册 方可回帖
返回
//