破解XFtpSvr =====> 请进 (5千字)

发布者:Editor
发布于:2001-07-01 12:49

软件名称:XNETECH FTP Server 0.1.1.616
软件简介:基于Windows95/98/NT/2000的FTP服务器;支持RFC-959标准中所有基本的FTP命令;支持多线程、断点续传等功能;不限制用户数,允许不同用户使用不同的路径;不同用户可以赋予不同的的权限;对用户的目录进行容量的限制;自动识别IP地址,并对不同的IP地址赋予不同的的权限;扩展FTP命令集,使用FTP客户端软件能管理FTP服务器;远程查看FTP服务器的当前状态;远程增加或删除用户的帐户;远程断开任何用户或IP地址的FTP连接;远程启动或停止FTP服务器的运行;远程查看用户的帐户; 允许匿名访问;简单而强大的图形介面,操作十分简单;无须进行安装设置即可运行;
下载地址(软件主页):http://xnetech.363.net/
破解难度:very easy
破解人:Edea[BCG]    (QQ:3849036)

首先,用FI检查,发现该软件用UPX加壳,用UPX -d脱之。
用Wdasm反汇编,在反汇编的同时,打开软件(嘿嘿,为了节约时间)。点Help/Register Info,填入:
UserName=Edea
Company=BCG
RegisterNO=9876543210
点OK,对话框消失,没任何反映(我晕~~~),经过N(N<=1)分钟的努力,我发现该软件把我填的注册信息放到了软件目录中得xftpsvr.ini里。
反汇编完成,又经过N(N<=2)分钟的努力,在反汇编出来的代码中,找到这么一段:
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00499218(C)
|
:00499226 8B9324040000            mov edx, dword ptr [ebx+00000424]
:0049922C 8BC3                    mov eax, ebx
:0049922E E8557CF9FF              call 00430E88
:00499233 8B9328040000            mov edx, dword ptr [ebx+00000428]
:00499239 8BC3                    mov eax, ebx
:0049923B E8287CF9FF              call 00430E68
:00499240 8B932C040000            mov edx, dword ptr [ebx+0000042C]
:00499246 8BC3                    mov eax, ebx
:00499248 E85F7CF9FF              call 00430EAC
:0049924D 8B9330040000            mov edx, dword ptr [ebx+00000430]
:00499253 8BC3                    mov eax, ebx
:00499255 E8727CF9FF              call 00430ECC
:0049925A E825F3FDFF              call 00478584                    ----->关键CALL
:0049925F 84C0                    test al, al
:00499261 7519                    jne 0049927C                    ----->嘿嘿,关键跳转点
:00499263 A1C4624A00              mov eax, dword ptr [004A62C4]
:00499268 C70001000000            mov dword ptr [eax], 00000001

* Possible StringData Ref from Code Obj ->"XNETECH FTP SERVER - http://xnetech.363.net/ "
                                        ->"[UnRegister]"
                                  |
:0049926E BAC0924900              mov edx, 004992C0
:00499273 8BC3                    mov eax, ebx
:00499275 E82A84F9FF              call 004316A4
:0049927A EB0C                    jmp 00499288

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00499261(C)
|

* Possible StringData Ref from Code Obj ->"XNETECH FTP Server - http://xnetech.363.net/"
                                  |
:0049927C BA04934900              mov edx, 00499304
:00499281 8BC3                    mov eax, ebx
:00499283 E81C84F9FF              call 004316A4

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0049927A(U)
|
:00499288 8BC3                    mov eax, ebx
:0049928A 8B10                    mov edx, dword ptr [eax]
:0049928C FF9280000000            call dword ptr [edx+00000080]
:00499292 8BC3                    mov eax, ebx
:00499294 E82B040000              call 004996C4
:00499299 8BC3                    mov eax, ebx
:0049929B E8C8020000              call 00499568
:004992A0 33C0                    xor eax, eax
:004992A2 5A                      pop edx
:004992A3 59                      pop ecx
:004992A4 59                      pop ecx
:004992A5 648910                  mov dword ptr fs:[eax], edx
:004992A8 68B5924900              push 004992B5

***********************************************************************************************

该软件在启动的时候会检查储存在xftpsvr.ini里的注册码,判断注册与否。
退出程序,打开TRW2000(我的最爱),下断点bpx 0049924D,然后再运行程序,被拦下:

************************************************************************************************

0177:0049924D  MOV      EDX,[EBX+0430]
0177:00499253  MOV      EAX,EBX
0177:00499255  CALL    00430ECC
0177:0049925A  CALL    00478584              ------>F8跟入
0177:0049925F  TEST    AL,AL
0177:00499261  JNZ      0049927C
0177:00499263  MOV      EAX,[004A62C4]
0177:00499268  MOV      DWORD [EAX],01
0177:0049926E  MOV      EDX,004992C0
0177:00499273  MOV      EAX,EBX
0177:00499275  CALL    004316A4
0177:0049927A  JMP      SHORT 00499288
0177:0049927C  MOV      EDX,00499304
0177:00499281  MOV      EAX,EBX


Call from 0049925A:
0177:00478584  PUSH    EBP
0177:00478585  MOV      EBP,ESP
0177:00478587  PUSH    BYTE +00
0177:00478589  PUSH    EBX
0177:0047858A  XOR      EAX,EAX
0177:0047858C  PUSH    EBP
0177:0047858D  PUSH    DWORD 004785DC
0177:00478592  PUSH    DWORD [FS:EAX]
0177:00478595  MOV      [FS:EAX],ESP
0177:00478598  LEA      EAX,[EBP-04]
0177:0047859B  PUSH    EAX
0177:0047859C  MOV      CX,2710
0177:004785A0  MOV      EDX,[004A7AFC]          ----->"BCG"==>EDX
0177:004785A6  MOV      EAX,[004A7AF8]          ----->"Edea"==>EAX
0177:004785AB  CALL    004785EC                ----->算注册码的Call,如果要写注册机就跟入
0177:004785B0  MOV      EAX,[EBP-04]            ----->真注册码==>EAX
0177:004785B3  MOV      EDX,[004A7B00]          ----->假注册码==>EDX
0177:004785B9  CALL    00403FC8                ----->比较真假注册码
0177:004785BE  JNZ      004785C4                ----->不相等吗?去死吧!
0177:004785C0  MOV      BL,01
0177:004785C2  JMP      SHORT 004785C6
0177:004785C4  XOR      EBX,EBX
0177:004785C6  XOR      EAX,EAX
0177:004785C8  POP      EDX


我的注册码:
UserName=Edea   
Company=BCG
RegisterNO=C86428289719A64C3ADEC11B45C91EEA


这个软件破解很简单,我的本意是想写一下这个软件的注册机,可惜功力不够,在程序中转晕了头。希望各位兄弟(特别是伪哥)能帮忙写出注册机,让小弟学习学习。


声明:该文观点仅代表作者本人,转载请注明来自看雪