Grduw最新版破解過程(爆破keyfile,nag,時間限制,暗樁,字元加密)... (10千字)

看雪資料發表於2001-10-16

軟體名稱:Grduw 4.1.17
下載地址:http://gwbn.onlinedown.net/down/grduw410.zip
保護方法:keyfile
破解方法:爆破(去除nag,日期限制,字串加密)
破 解 人:TAE! 屬於 ChinA CrackinG GrouP (中國破解組織)
軟體介紹:強大的磁碟工具,我必備的軟體!
使用工具:TRW ,W32dasm ,UltraEdit ,還有就是一雙粗獷的大手咯,
(放心不是拆電腦,是敲鍵盤)外加一包香菸!

****************************************************************
唉,好久沒有寫教程了,希望大家還沒有把我忘記啊.                  *
另:誰有免費上網帳號告訴我一聲,小弟電話費透支了!先謝謝各位了:~) *
我的QQ:36550828                                                *
****************************************************************

    執行軟體,Shit!一個有計時的視窗冒了出來,要等待8 秒鐘!唉,浪費時
間就是浪費金錢和我的生命喲~~~ !所以……一定要幹掉它!程式好像沒有輸入
註冊碼的地方嘛~ ,那麼就是keyfile 咯?執行filemon ,別說你沒有哦!然後
就是找。找。找。哦~~~ 終於被我找到了,原來是Grduw.key ,嘿嘿,看你往哪
兒躲!在軟體目錄下建立檔案Grduw.key ,執行軟體,然後進入TRW 設定斷點在
createfilea 函式上!回到軟體中,點選"About" 按鈕,哈哈哈……被擋住了,
嘿嘿嘿,看我怎麼虐待你!一次pmodule 之後,來到了這裡:

* Reference To: KERNEL32.CreateFileA, Ord:0034h
                                  |
:0042A7B1 FF1538724400            Call dword ptr [00447238]
:0042A7B7 8BF0                    mov esi, eax
:0042A7B9 3BF7                    cmp esi, edi
:0042A7BB 7514                    jne 0042A7D1

再經過相當漫長的路程來到了下面這裡:

:0040140D E8DE080000              call 00401CF0
:00401412 85C0                    test eax, eax
:00401414 745F                    je 00401475  \\在這裡r fl z,然後g
:00401416 8B0DD0304500            mov ecx, dword ptr [004530D0]
:0040141C B856555555              mov eax, 55555556
:00401421 F7E9                    imul ecx
:00401423 8BCA                    mov ecx, edx
:00401425 C1E91F                  shr ecx, 1F
:00401428 03D1                    add edx, ecx
:0040142A 8D4C240C                lea ecx, dword ptr [esp+0C]
:0040142E 895664                  mov dword ptr [esi+64], edx
:00401431 8B15F0304500            mov edx, dword ptr [004530F0]
:00401437 52                      push edx
:00401438 E8D6640300              call 00437913
:0040143D 8D4660                  lea eax, dword ptr [esi+60]
:00401440 8BCE                    mov ecx, esi
:00401442 50                      push eax

哈哈,發現本來的計時按鈕已經變成"ok"了,再進入call 00401CF0中看看:

|:0040140D  , :0040859C  , :0040C6EE  , :0040E51C  , :0040F5C4 
|:0040F707  , :00410816  , :00412C3E  , :0041457D  , :00418DB0 
|
:00401CF0 56                      push esi
:00401CF1 8BF1                    mov esi, ecx
:00401CF3 8A463C                  mov al, byte ptr [esi+3C]
:00401CF6 84C0                    test al, al
:00401CF8 740E                    je 00401D08

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401D06(C)
|
:00401CFA 8BCE                    mov ecx, esi
:00401CFC E8BFA00100              call 0041BDC0
:00401D01 8A463C                  mov al, byte ptr [esi+3C]
:00401D04 84C0                    test al, al
:00401D06 75F2                    jne 00401CFA

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401CF8(C)
|
:00401D08 8B86B8050000            mov eax, dword ptr [esi+000005B8]
:00401D0E 5E                      pop esi
:00401D0F C3                      ret

    有很多地方呼叫這裡喔,經過嘗試,發現程式好像以eax 的值作為註冊標誌,
如果是0 就是註冊版,否則就未註冊,所以我們讓返回的值都為0 ,把00401d08
這一行改為xor eax ,eax 吧,別忘了添上幾個nop 喔!好了,所有的nag 都沒
有了。

    將日期調後一年,執行軟體,正常,調回來,shiiiit !!!軟體退出了!
還有保護!既然軟體退出了,好,就下斷點Exitprocess 吧,執行軟體,被中斷,
於是我想回到軟體的領空呀,但無論如何都不行,因為軟體執行完exitprocess
後就退出記憶體了,所以trw 無法回到軟體程式碼,呵呵,誰知道如何回到程式呼叫
此函式的程式碼處呢?冥思苦想,終於被我聰明的腦袋想到了,啊哈哈哈哈哈,天
才!我不是還有w32dasm 嗎?呵呵,用它反彙編軟體,然後點選" 輸入函式" 按
鈕,這時找到函式"KERNEL32.ExitProcess"雙擊它,這時來到下面的程式碼處:

:00401DD5 7508                    jne 00401DDF
* Reference To: KERNEL32.ExitProcess, Ord:007Dh
                                  |
:00401DD9 FF1560724400            Call dword ptr [00447260]

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00401D43(C), :00401D51(C), :00401DD5(C)
|
:00401DDF 668BC7                  mov ax, di
:00401DE2 5F                      pop edi
:00401DE3 5E                      pop esi
:00401DE4 83C44C                  add esp, 0000004C
:00401DE7 C20C00                  ret 000C

    我們將斷點設定在00401DD5這裡,然後執行程式,沒有被中斷。那麼我們再
次雙擊函式ExitProcess.來到這裡:

:0041AC56 7407                    je 0041AC5F
:0041AC58 50                      push eax

* Reference To: KERNEL32.ExitProcess, Ord:007Dh
                                  |
:0041AC59 FF1560724400            Call dword ptr [00447260]

    用上面方法設斷後,執行程式還是沒有被中斷,說明不是這裡呼叫ExitProcess
的。再次雙擊ExitProcess ,來到這裡,設定斷點在0041ADE6,執行程式,這回,
程式被中斷了了:


:0041ADE2 6683FF1F                cmp di, 001F    //1F就是16進位制的31
:0041ADE6 7708                    ja 0041ADF0    //將這裡改為nop
:0041ADE8 8B442414                mov eax, dword ptr [esp+14]
:0041ADEC 85C0                    test eax, eax
:0041ADEE 7508                    jne 0041ADF8    //將這裡改為jmp,跳過函式

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041ADE6(C)
|
:0041ADF0 6A00                    push 00000000

* Reference To: KERNEL32.ExitProcess, Ord:007Dh
                                  |
:0041ADF2 FF1560724400            Call dword ptr [00447260]

    (說說軟體的判斷過期的方法吧,第一次執行軟體時,程式在Filter分支下
建立6B5gj 這個鍵值,內容是加密後的軟體安裝日期,當你將日期向後調一年後,
再次執行軟體時,它就會讀取這個值,並寫入當前日期,那麼下次執行軟體後,
軟體讀取此值與當前日期比較,呵呵,自然就判斷為過期了。)嘿嘿嘿,軟體可
以無限制執行了,可是看看標題欄吧,字元變成" 非法版本" 了,呵呵,真是Shit!
為了美觀,我們crack 掉它!常規的,我用UltraEdit 開啟軟體,查詢unregistered
之類的字元,可是一個都沒找到,唉,連這都要加密,真是比人率還麻煩啊!對
於這個加密字串的破解有兩種方法,我下面就一一介紹!喂~~對,就是你!認
真聽呀,別忘了作筆記,Oky ?別總讓我管著你呀,自覺點,一會兒就下課了,
是不是約了MM,你可以說嘛~~!不說我怎麼知道?說了我才知道嘛~~~~!……
(眾生:唐僧???打!!)
    我考,現在的學生可真是不得了,是了不得!阿華田的孩子不得了!(怎麼
又作廣告??)好了好了,先下課吧,下節課我繼續做廣告,喔,不,不,是繼
續講課!嘿嘿嘿~~~

===========================================================================


接著上一課說,這次我們來破解它的字串加密!
記得上節課講的東西嗎?我們繼續執行程式碼!

* Possible StringData Ref from Data Obj ->"人四評罵 *這個就是加密後的字串
                                  |
:0041ADFE BF84474500              mov edi, 00454784
:0041AE03 83C9FF                  or ecx, FFFFFFFF
:0041AE06 33C0                    xor eax, eax
:0041AE08 8D96D4060000            lea edx, dword ptr [esi+000006D4]
:0041AE0E F2                      repnz
:0041AE0F AE                      scasb
:0041AE10 F7D1                    not ecx
:0041AE12 2BF9                    sub edi, ecx
:0041AE14 8BF7                    mov esi, edi
:0041AE16 8BD9                    mov ebx, ecx
:0041AE18 8BFA                    mov edi, edx
:0041AE1A 8BC7                    mov eax, edi
:0041AE1C C1E902                  shr ecx, 02
:0041AE1F F3                      repz
:0041AE20 A5                      movsd
:0041AE21 8BCB                    mov ecx, ebx
:0041AE23 83E103                  and ecx, 00000003
:0041AE26 F3                      repz
:0041AE27 A4                      movsb
:0041AE28 8A08                    mov cl, byte ptr [eax//取出上面密文的一個位元組
:0041AE2A 84C9                    test cl, cl         
:0041AE2C 740D                    je 0041AE3B

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041AE39(C)
|
:0041AE2E 80E97F                  sub cl, 7F              //減去"7F"
:0041AE31 8808                    mov byte ptr [eax], cl  //回存
:0041AE33 8A4801                  mov cl, byte ptr [eax+01]//取出下一個位元組
:0041AE36 40                      inc eax                  //指向下一個,
:0041AE37 84C9                    test cl, cl              //是否結束了? 
:0041AE39 75F3                    jne 0041AE2E            //沒有?當然是繼續咯!

    嘿嘿,原來程式將密文逐個減去"7F"就解密出字串了,這個字串是" 非
法版本" (當然是英文的,可是俺不記得了)(眾生:哇,老師也不會被單詞呀?)


這裡先介紹第一種破解方法:
    如果要它顯示"TAE![CCG]"該怎麼做呢?嘿嘿,將"TAE![CCG]"這幾個字元,
分別加上"7F"之後的ascii 碼寫入檔案中對應的地方就可以了,那麼這個" 對應
" 的地方在哪裡? "笨" 在檔案中查詢上面的密文就是了!w32dasm 中選中那一
行,crtl+c複製到一個文字檔案中,然後將密文複製下來,再用ultraedit 開啟
軟體,ctrl+f,將密文複製到文字欄,最後點選查詢!ok!找到後,就將上面計
算好的ascii 碼寫入就可以了,哈哈哈哈,執行程式,喔~~~ !已經在軟體標題
欄顯示"TAE![CCG] 了!

介紹的二種破解方法:
    第一種方法比較煩,有沒有更簡單的方法呢?(愚蠢的問題)當然有!看看
這一段解密過程:

:0041AE2E 80E97F                  sub cl, 7F              //減去"7F"
:0041AE31 8808                    mov byte ptr [eax], cl  //回存
:0041AE33 8A4801                  mov cl, byte ptr [eax+01]//取出下一個位元組
:0041AE36 40                      inc eax                  //指向下一個,
:0041AE37 84C9                    test cl, cl              //是否結束了? 
:0041AE39 75F3                    jne 0041AE2E            //沒有?當然是繼續咯!

    將第一行的sub cl,7F變成控操作,nop 掉它,這樣軟體就直接將密文顯示
於標題欄了,可我們不需要這麼一大堆亂碼呀,嘿嘿,這次就不需要象第一種方
法計算ascii 了,直接將密文替換成"TAE![CCG]"就可以了,啊哈哈哈哈。
    about 視窗中的"unregistered user" 同樣可以用上面兩種方法修改,再次
執行軟體,喔~~~~gooood!是不是很象註冊版?呵呵,好了,課就上到這裡了,
再見!

___________________    ___  ______ ______ ______       
/      /  \_  ____/  /  / / ____// ____// ____/
\_    _/ /\ \  __)_  /  / / /    / /    / / __
  |  |/  __ /      \ /__/ / /___ / /___ / /_/ /
  |__/__/  \_______/ (_)  \____/ \____/ \____/ 
                                            2001年10月16日 13:45 完成

相關文章