unix軟體ncftpd 2.7.1之破解(11千字)
ncftpd
2.7.1之破解
(by: slgx)
注:這是我第一次寫unix下的破解教程,不當之處多多包涵。如要轉載請保留作者姓名,謝謝!
破解之前,介紹一下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
push eax
.text:0804C118
push 50h
.text:0804C11A
push offset aReady_ ; "
ready."
.text:0804C11F
push offset byte_0_80984A0
.text:0804C124
call sub_0_806E4E8
.text:0804C129
jmp short locret_0_804C0C7
.text:0804C129
.text:0804C12B
align 4
.text:0804C12C
.text:0804C12C loc_0_804C12C:
; CODE XREF: sub_0_804C090+15j
.text:0804C12C
cmp ds:byte_0_80984A0, 0
.text:0804C133
jz short
loc_0_804C157
.text:0804C135
push 8085F10h
.text:0804C13A
push 3Eh
.text:0804C13C
push 1
.text:0804C13E
push offset aSorryTheBanner
; "Sorry, the \"banner\" option is not avail"...
.text:0804C143
call _fwrite
.text:0804C148
mov [esp+18h+var_18],
1
.text:0804C14F call
sub_0_804ECE4
.text:0804C154
add esp, 10h
.text:0804C157
.text:0804C157
loc_0_804C157:
; CODE XREF: sub_0_804C090+A3j
.text:0804C157
push ecx
.text:0804C158
push 50h
.text:0804C15A
push offset aNcftpdServer
; "NcFTPd Server"
.text:0804C15F
push offset byte_0_80984A0
.text:0804C164
call sub_0_806E298
.text:0804C169 add
esp, 0Ch
.text:0804C16C
push 50h
.text:0804C16E
push offset asc_0_8075AC6 ; " ("
.text:0804C173
push offset byte_0_80984A0
.text:0804C178 call
sub_0_806E4E8
.text:0804C17D
add esp, 0Ch
.text:0804C180
push 50h
.text:0804C182
push offset byte_0_8098720
.text:0804C187 push
offset byte_0_80984A0
.text:0804C18C
call sub_0_806E4E8
.text:0804C191
add esp, 0Ch
.text:0804C194 push
50h
.text:0804C196
push offset asc_0_8075AC9 ; ")"
.text:0804C19B
jmp loc_0_804C10A
.text:0804C1A0
.text:0804C1A0
.text:0804C1A0 loc_0_804C1A0:
; CODE XREF: sub_0_804C090+Dj<=====> 這又是多少?對了是.text:0804C09D
.text:0804C1A0
cmp ds:byte_0_80984A0,
0
.text:0804C1A7 jz
short loc_0_804C1CB<=================================>原來是從這裡跳過去的!
.text:0804C1A9 push
8085F10h
.text:0804C1AE
push 3Ch
.text:0804C1B0
push 1
.text:0804C1B2
push offset aNcftpdMustBeLi ;
"NcFTPd must be licensed prior to using "...
.text:0804C1B7
call _fwrite
.text:0804C1BC
mov [esp+18h+var_18],
1
.text:0804C1C3 call
sub_0_804ECE4
.text:0804C1C8
add esp, 10h
.text:0804C1CB
.text:0804C1CB
loc_0_804C1CB:
; CODE XREF: sub_0_804C090+117j<=====>這是多少?就是.text:0804C1A7
.text:0804C1CB push
eax
.text:0804C1CC
push 50h
.text:0804C1CE
push offset aNcftpdServer ; "NcFTPd Server"
.text:0804C1D3 push
offset byte_0_80984A0
.text:0804C1D8
call sub_0_806E298
.text:0804C1DD
add esp, 0Ch
.text:0804C1E0 push
50h
.text:0804C1E2
push offset aUnregisteredCo ; " (unregistered copy)"<=====>我們將來到這裡
好了,拿起精神,把你所有的破解細胞調動起來。
嘗試一下你在windows下的經驗,我們往上看
.text:0804C1E7
jmp loc_0_804C10A
.text:0804C1E7 sub_0_804C090 endp
.text:0804C1E7
.text:0804C1EC
第五步:透過上面的分析我們知道關鍵點在ds:byte_0_8098720
ds:byte_0_80984A0 兩處地址中變數的賦值情況來決定是否為註冊版。
.bss:0809871C
db ? ; unexplored
.bss:0809871D
db ? ; unexplored
.bss:0809871E
db ? ; unexplored
.bss:0809871F
db ? ; unexplored
.bss:08098720
byte_0_8098720 db ?; DATA XREF: sub_0_804B1EC+54w<========================>第一處,對其修改的程式碼地址為.text:0804B240
.bss:08098720
; sub_0_804BDEC+Cr ...
.bss:08098721
db ? ; unexplored
.bss:08098722
db ? ; unexplored
.bss:08098723
db ? ; unexplored
.
.
.
.bss:0809849D
db ? ; unexplored
.bss:0809849E
db ? ; unexplored
.bss:0809849F
db ? ; unexplored
.bss:080984A0
byte_0_80984A0 db ?; DATA XREF: sub_0_804B1EC+D2w<===>第二齣,對其修改的程式碼地址為.text:0804B2BE
.bss:080984A0
; sub_0_804C090+1Br ...
.bss:080984A1
db ? ; unexplored
.bss:080984A2
db ? ; unexplored
.bss:080984A3
db ? ; unexplored
第六步:大結局。
.text:0804B232
mov ds:byte_0_8098940, 0
.text:0804B239
mov ds:byte_0_8098600, 0
.text:0804B240 mov
ds:byte_0_8098720, 0 ;大結局,自己看著辦。
.text:0804B247
mov ds:byte_0_80985C0,
0
.text:0804B24E mov
ds:byte_0_80987E0, 0
.text:0804B255
mov ds:byte_0_80982E0, 0
.text:0804B25C
mov ds:byte_0_8097CE0,
0
.text:0804B263 mov
ds:byte_0_8098580, 0
.text:0804B26A
mov ds:byte_0_8097FC0, 0
.text:0804B271
mov ds:byte_0_8098220,
0
.text:0804B278 mov
ds:byte_0_80988C0, 0
.text:0804B27F
mov ds:byte_0_8098660, 0
.text:0804B286
mov ds:byte_0_8098500,
0
.text:0804B28D mov
ds:byte_0_8098120, 0
.text:0804B294
mov ds:byte_0_8098180, 0
.text:0804B29B
mov ds:byte_0_80982A0,
0
.text:0804B2A2 mov
ds:byte_0_8098320, 0
.text:0804B2A9
mov ds:byte_0_8098380, 0
.text:0804B2B0
mov ds:byte_0_8098420,
0
.text:0804B2B7 mov
ds:byte_0_80980C0, 0
.text:0804B2BE
mov ds:byte_0_80984A0, 0 ;大結局,自己看著辦。
.text:0804B2C5 mov
ds:dword_0_8097D20, 0
.text:0804B2CF
mov dword_0_8083818, 0
.text:0804B2D9
mov dword_0_808381C,
0
.text:0804B2E3 mov
dword_0_8083820, 0
.text:0804B2ED
mov dword_0_8083824, 0Ah
.text:0804B2F7
mov ds:dword_0_80A3460,
1
.text:0804B301 mov
ds:dword_0_80987C0, 1
.text:0804B30B
mov ds:dword_0_8099C08, 12Ch
.text:0804B315
mov dword_0_8083474,
40000h
.text:0804B31F
mov dword_0_8083478, 40000h
.text:0804B329
mov ds:dword_0_8098368, 1
.text:0804B333 mov
ds:dword_0_8098700, 0
修改完成後把它安裝到unix下/usr/local/sbin/目錄中配置好指令碼執行一下試一試,看是不是搞定了。
完
其實不象windows在unix下很少遇到需要破解的軟體,現在提倡開放原始碼,很多商業軟體和共享軟體都有不錯
的開源軟體來替換(比如proftpd就不比ncftpd差),所以unix下的破解教程在網上就少了許多。本來這個教程
脫胎於我一年前在網上看到的一個老外linux逆向工程網站上的一篇破解ncftpd的文章,不過那是在linux下用
dasm反彙編指令碼為基礎的。今天,在freebsd下重灌了ncftpd,一時用不了linux的dasm指令碼,就試者用ida pro
把它給破了。希望大家有機會都來用一下unix,除了介面不如windows軟體外,在效能上可以說unix絕對是NO.1
。
相關文章
- 軟體破解初體驗之 MacroClip 2000.2.7 程式碼修改破解 (15千字)2001-10-09Mac
- 破解心得之CHMMaker(耶圃歟┢ (11千字)2002-01-27HMM
- 英語全文朗讀軟體---破解 (1千字)2000-10-04
- 一個超容易破解的軟體! (5千字)2001-01-21
- 奇怪的破解,國產軟體,我不說它的名字,你們猜猜 (11千字)2015-11-15
- 菜鳥破解錄(11)之 WinGlobe2.0 (7千字)2000-07-24
- 兩個月的破解回顧以及7個軟體的破解! (3千字)2000-12-28
- 軟體破解2008-06-02
- TDMD軟體狗破解方法(帶狗殺狗) (6千字)2001-10-25
- 軟體 system menachinc 的它用(附:序列號破解)
(1千字)2000-03-19
- mago進來,要漢化的軟體己破解 (1千字)2000-07-05Go
- 五筆打字練習軟體 (11千字)2002-09-28
- Crack之親歷手跡6---破解AuthorWare5的軟體狗() (2千字)2002-03-09
- 我的破解心得(11) (9千字)2001-03-13
- 一個典型的時間限制軟體的破解 (4千字)2001-01-29
- 菜鳥初鳴--最易破解的軟體 supercleaner (2千字)2001-10-11
- 破解一個CCG的軟體,改半位元組! (6千字)2002-01-27
- 股票賬戶管理軟體 1.12(破解手記) (9千字)2002-02-16
- 超級個人軟體 V2.5 破解過程! (3千字)2002-03-04
- 破解flash32(抓圖軟體)實站錄 (2千字)2000-05-28
- 破解勒索軟體2020-08-19
- 神奇登錄檔0.6破解 (11千字)2001-07-27
- 破解心得之WinImage篇 (15千字)2001-07-01
- 破解心得之eXeScope篇 (9千字)2001-07-01
- 破解ACD Systems試用軟體的三步曲 (1千字)2000-03-04
- 分析破解某個軟體公司出的理財東東!
(14千字)2015-11-15
- 《TxEdit 4.6》的註冊碼破解 (11千字)2001-07-28
- SuperCleaner2.30破解過程 (11千字)2002-02-04
- 破解 最新 SWF scanner V2.6.2 (11千字)2002-03-24
- 再貼:軟體管理專家(Flashsoft) 1.05的破解(高手莫入)
(3千字)2001-04-22
- hp unix dp軟體配置示例2013-06-11
- 爆笑破解之-----ACDSEE 3.0 (4千字)2001-03-18
- 菜鳥破解錄之 The Cleaner (4千字)2000-08-12
- 菜鳥破解錄之 DlgXRSizer (4千字)2000-08-17
- 什麼國產軟體不許破解,我就破就破!!!------FlashSoft1.07破解方法 (2千字)2001-05-19
- 軟體管理專家
v1.22a 之完美破解2004-06-30
- 菜鳥破解之軟體自己顯示註冊碼2015-11-15
- 鸚鵡螺網路助手1.70破解 (11千字)2001-02-01