• 标 题:金锋文件加密器4.0 (3千字)
  • 作 者:softdim[CCG]
  • 时 间:2002-9-29 10:37:09
  • 链 接:http://bbs.pediy.com

本来不想破解(要学习),但受朋友所托,看雪论坛精华里(我是说所有)又没有此程序的破解,那就姑且凑个数吧!
目标: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