本来不想破解(要学习),但受朋友所托,看雪论坛精华里(我是说所有)又没有此程序的破解,那就姑且凑个数吧!
目标:jfept.exe(金锋文件加密器4.0)
aspack2.1加的壳,Dephi程序,(垃圾代码真多!)脱壳后分析如下:
使用4个服务器进行验证:
如果与第一个服务器连接成功了,就注册成功;
如果与第一个服务器的连接不成功,就改用第二个服务器进行连接;
如果4个服务器都连接不上,则注册失败;
可以从这里入手,但此程序是dephi程序,且作者故意在这段程序中加了不少障碍,故跟踪
比较困难,比如关键调用用静态反汇编是看不着的。
分析(一)
:00481436
CODE:00481436 loc_481436:
; CODE XREF: CODE:004813F5j
CODE:00481436
mov edx, offset aIEKBVSI___ ; "正在通过互联网获取注册码..."
CODE:0048143B mov
eax, ebx
CODE:0048143D
call sub_433E88
CODE:00481442
xor edx, edx
CODE:00481444
mov eax, [ebx+2E0h]
CODE:0048144A mov
ecx, [eax]
CODE:0048144C
call dword ptr [ecx+5Ch]
CODE:0048144F
push offset aHttpWww_jinfen
; "http://www.jinfengsoft.com/reg/jfept/us"...
CODE:00481454
lea edx, [ebp-18h]
CODE:00481457 mov
eax, [ebx+2DCh]
CODE:0048145D
call sub_433E58
CODE:00481462
push dword ptr [ebp-18h]
CODE:00481465 lea
edx, [ebp-1Ch]
CODE:00481468
mov eax, [ebx+2D4h]
CODE:0048146E
call sub_433E58
CODE:00481473
push dword ptr [ebp-1Ch]
CODE:00481476 push
offset a_htm ; ".htm"
CODE:0048147B
lea eax, [ebp-14h]
CODE:0048147E
mov edx, 4
CODE:00481483 call
sub_40412C
CODE:00481488
mov edx, [ebp-14h]
CODE:0048148B
mov eax, ebx
CODE:0048148D
call sub_481A18
CODE:00481492 test
al, al
CODE:00481494
jnz loc_481733 ; 成功!退出
CODE:0048149A
push offset aHttpWww_jinf_0
; "http://www.jinfengsoft.com/reg/jfept/us"...
CODE:0048149F
lea edx, [ebp-24h]
CODE:004814A2 mov
eax, [ebx+2DCh]
从服务器取得注册码子程序:
call sub_481A18
上面这段程序看似简单,实则复杂,很多调用都是这么使用的:
mov eax, [ebx+2E0h]
mov
ecx, [eax]
call dword ptr [ecx+5Ch]
这增加了代码不可读性,且注册码并不在程序中计算,真正的注册是付费后填写注册表单
,作者在在服务器上建立用户资料,再由用户查询服务器在线注册。
基于上面分析,本软件应该功能是完整的(我是说不象有的软件注册前功能不完整-废话),因此爆破可行。
(二)爆破分析
文件存在一个注册标记,启动时查询注册表,检查是否是注册版,若不是则将注册标记置零。经分析注册标记存在于两个地方:
mov ecx, offset aRegvalue_1 ; "RegValue"
CODE:004CD49B
mov edx, offset
unk_CODE_4CD640
CODE:004CD4A0
mov eax, edi
CODE:004CD4A2
call sub_CODE_4C5E58
CODE:004CD4A7
mov ds:byte_BSS_4D1BAD,
0 ; 就是这里,程序中多次比较这个地址,另一个地址是在程序段:
mov ecx, offset aRegvalue_0
; "RegValue"
CODE:004CCCDF
mov edx, offset aReg_0 ; "Reg"
CODE:004CCCE4
mov eax, edi
CODE:004CCCE6
call sub_CODE_4C5E58
CODE:004CCCEB mov
ds:byte_BSS_4D1BAD, 0
其实与上面一样,只是地址不同而已。
我们的工作就是将这条指令修改为:
mov ds:byte_BSS_4D1BAD, 1就大功告成了,修改如下:
使用十六进制编辑器打开jfepr.exe寻找:
8CC7 E86D91FFFF C605AD1B4D0000--改为->>8CC7 E86D91FFFF C605AD1B4D0001
C605AD1B4D0000 C705B01B4D006F000000--改为:C605AD1B4D0001 C705B01B4D006F000000
至于60次使用限制,这个很有意思,我打开金锋文件加密器4.0后,在程序中的状态条上有一个时间
我数了一下,正好10秒就弹出“注册”或“退出”并使菜单不可用,因此,只需将时钟interval置0即可,程序总共有8个timer,而10秒的timer就只有timer3一个,因此可使用资源黑客修改这个timer的interval=0就行了。收工。
by softdim[CCG]
ohmanyong@sina.com
- 标 题:金锋文件加密器4.0 (3千字)
- 作 者:softdim[CCG]
- 时 间:2002-9-29 10:37:09
- 链 接:http://bbs.pediy.com