破解之前,介绍一下ncftpd是unix类(如linux,freebsd,solaris,sco等)下的一个ftp服务器软件。该软件以安全性高,重负载特性好而著称。其对教育用户免费,对商业用户收取$99~199美元不等,对试用用户则有连接数限制。好,我们开始!
第一步:安装ida pro 4.17 for windows。
过程略。(当然如果你精通unix,会用unix下的dasm脚本,就不必了)
第二步:下载ncftpd。 from http://www.ncftp.com
过程略。(有很多unix版本,各取所需。就是没有windows版本。)
第三步:用winzip解包(同样如果你会用unix的话请用 tar -zxvf XXXXXX命令解包。)
以ncftpd-2.7.1-freebsd4.4-i386-export.tar.gz为例。
第一次解除压缩得到ncftpd-2.7.1-freebsd4.4-i386-export.tar
第二次解除tar,得到原始文件。
从中提出ncftpd文件。
第三步:反汇编ncftpd。
打开ida,选择目标文件ncftpd,以elf文件格式和自己计算机相对应的cpu进行反汇编。
第四步:哈哈,写不下去了^_^。因为要用到unix了 :)。如果大家有用过ncftpd就知道如果没有licence,在登 陆ncftpd的时候会出现“unregistered copy”的提示信息。哼哼,很眼熟吧。熟悉windows破解的大 侠可能已经知道该怎么做了。对,在ida中搜索“unregistered copy”字符串。我们来到下面:
以下代码,请从下往上看:
.text:0804C090
.text:0804C090 ; Attributes: bp-based frame
.text:0804C090
.text:0804C090 sub_0_804C090 proc near ; CODE XREF: sub_0_804E478+A6p
.text:0804C090
.text:0804C090 var_18 = dword ptr -18h
.text:0804C090
.text:0804C090 push ebp
.text:0804C091 mov ebp, esp
.text:0804C093 sub esp, 8
.text:0804C096 mov al, ds:byte_0_8098720<===>ds:byte_0_8098720应该为非0h非66h。
.text:0804C09B test al, al
.text:0804C09D jz loc_0_804C1A0<==========>去 " (unregistered copy)"
.text:0804C0A3 cmp al, 66h
.text:0804C0A5 jz loc_0_804C12C<==========>不感兴趣,应该是注册为其它版。
.text:0804C0AB cmp ds:byte_0_80984A0, 0<====>ds:byte_0_80984A0必为0h
.text:0804C0B2 jz short loc_0_804C0EE<====>去 " (licensed copy)"
.text:0804C0B4 cmp dword_0_80833E0, 3
.text:0804C0BB jle short loc_0_804C0CC
.text:0804C0BD mov ds:dword_0_8097D20, 1
.text:0804C0C7
.text:0804C0C7 locret_0_804C0C7: ; CODE XREF: sub_0_804C090+99j
.text:0804C0C7 leave
.text:0804C0C8 retn
.text:0804C0C8
.text:0804C0C9 align 4
.text:0804C0CC
.text:0804C0CC loc_0_804C0CC: ; CODE XREF: sub_0_804C090+2Bj
.text:0804C0CC push 8085F10h
.text:0804C0D1 push 3Eh
.text:0804C0D3 push 1
.text:0804C0D5 push offset aSorryTheBanner ; "Sorry, the \"banner\" option is not avail"...
.text:0804C0DA call _fwrite
.text:0804C0DF mov [esp+18h+var_18], 1
.text:0804C0E6 call sub_0_804ECE4
.text:0804C0EB add esp, 10h
.text:0804C0EE
.text:0804C0EE loc_0_804C0EE: ; CODE XREF: sub_0_804C090+22j<======>不用我说了吧
.text:0804C0EE push edx
.text:0804C0EF push 50h
.text:0804C0F1 push offset aNcftpdServer ; "NcFTPd Server"
.text:0804C0F6 push offset byte_0_80984A0
.text:0804C0FB call sub_0_806E298
.text:0804C100 add esp, 0Ch
.text:0804C103 push 50h
.text:0804C105 push offset aLicensedCopy ; " (licensed copy)"<=====>哈哈,看到正解了
.text:0804C10A
.text:0804C10A loc_0_804C10A: ; CODE XREF: sub_0_804C090+10Bj
.text:0804C10A ; sub_0_804C090+157j
.text:0804C10A push offset byte_0_80984A0
.text:0804C10F call sub_0_806E4E8
.text:0804C114 add esp, 10h
.text:0804C117  
