[破解]Shark恆破解基礎教程筆記

1爆破的原理

1       殼,暗樁

2       ASCII

3       Crtl+F查找

4       Je跳轉

5       二進制 nop填充

6       破解補丁

獲取註冊碼的思維 123  456

2 獲得註冊碼

1.     b是下一個,p是上一個

2.     CALL 關鍵CALL

3.     下斷點,關鍵CALL F2

4.     F9 運行程序F8 單步步過

5.     Jnz跳轉

6.     0018>005>ASCII "BEDC138794F69ACEC2AE20E01580E4B7"

3 殼與作業

1.     初識殼,upx,peid查殼

2.     Je跳轉替換爲jmp

3.     0018>006>ASCII "20211DA46498BE1A5E381E5B"

4 篡改內容

1.     立即數

2.     Hex/Ascii

3.     保持大小

4.     亂碼

5.     十六進制00填充  00替換後就都沒了

6.     彙編 push

7.     兩個選項過去的地址是不一樣的

8.     彙編 美化的思考

5 剽竊軟件

1.     數據搜索和以前的不同

2.     Crtl+L查找下一個

6 必須跳過去

1.     常見跳轉指令 彙編 jmp無條件跳轉

2.     一種是call的調用,找到關鍵call NOP 或者 call頭加retn 另一種就是百度jnz對於標誌位z的修改的原理是什麼。 0040101A 833D 10514800>cmp dword ptr ds:[0x485110],0x2 在cmp中調用了一個數據與2做對比 z爲0 則不跳,1則跳。 而0,1的值是由ds:[0x485110] 與 2 的大小決定的如果2 > ds:[0x485110] 則 z 置 1。

3.     忽然想到生哥提及的常量的應用 0x485110 這就是關鍵常量查找後就兩個 00401007 FF05 10514800 inc dword ptr ds:[0x485110] 0040101A 833D10514800>cmp dword ptr ds:[0x485110],0x2 方法很多 這兩處都是call調用的 第一個nop關鍵call 或者 段首 retn 再或者說 inc改成 dec 不過這個還是要浪費內存來計算的,還是nop Call 或者 retn 吧~~

4.     第一開始加載到OD,不找字符串下MessageBoxA斷點,回溯到再見這裏,無語了,我跟看下一開始這個cmp下的判斷是實現了,納悶了,那這不就可以跳過關閉提示了嗎,可我開始打開程序的時候發現這個會跳關閉框的,於是我就單步跟蹤了,發現有peekMessageBoxA檢測的,完畢後都會回到再見那裏,發現值改變了,跳轉不實現了,只有第二次這裏可以改變掉,怪不得用了jmp無條件跳轉。我第二次直接在ZF=1或跳轉或cmp這裏賦值或段首retn,簡單學習jmp,搞的很糾結

5.  通俗的說JNZ處就是檢測賬號密碼註冊碼之類的條件,若檢測通過則跳過關閉,若不通過則關閉程序,因爲我們可以看到JNZ是直接跳轉到再見語句下面去了的,而把JNZ改成JMP無條件跳轉也就是等於直接跳過了檢測,從而達到阻止關閉,執行程序的目的!

6.  總體思路

1)       jnz修改爲jmp

2)       修改判斷時間爲負

3)       jnz跳轉用nop填充

4)       dec直加改爲直減

5)       直接call

 

7     ESP定律

1.     ESP  EIP F8

2.     數據窗口中跟隨

3.     右鍵--斷點--硬件訪問--Word
下圖這一步,也就是在最下面的Command窗口中輸入HR 0012FFA4,直接進行斷點。

4.     F4凡是向上的跳轉,我們就用鼠標選中他的下一行,按下F4,讓程序直接到跳轉的下面。
然後單步走1次以後,又是一個跳轉,但這個跳轉沒有箭頭的指向,是一個無條件跳轉。JMP!
這是一個大跳轉,我們必須跳過去,因爲這有可能就是跳到了程序的OEP(OEP就是程序入口)
如果不是OEP,打不了我們從新來過!
所以,我們繼續F8鍵。(下圖位置)

5.     程序的入口oep

6.     OllyDump

7.     F4 -執行到所選行,在首個選擇的命令上設置一次性斷點,然後繼續執行調試程序,直到OllyDbg捕獲到異常或者停止在該斷點上。在程序執行到該命令之前,該一次性斷點一直有效。如有必要,可在斷點窗口[Breakpoints window]中刪除它。 -----摘自OD幫助

8     萬能的腳本

1.      使用腳本脫殼與認識DelphiOEP.

2.     認識一些oep

3.     一些腳本

9     call的作用

1.      所以你第二課需要找關鍵CALL,得到結果後,在判斷註冊碼是否正確之前截獲它,也就是獲取註冊碼!
當然,如果程序正在判斷的時候你干擾它,那就是爆破!
我們今天講的內容,也就是跟進CALL裏面,看看他是怎麼運算的,就可以寫出註冊機,這就是算法!

2.     如果要寫註冊機,知道這個軟件運算註冊碼的算法,就要找到這個CALL,進去看看他是怎麼運算的。
你就可以寫出與那個軟件相對應的註冊機了。

10修復與總結

1.      Import REConstructor

2.     1,ESP定律脫殼
2,修複函數
3,爆破程序
4,獲取註冊碼
5,修改標題
6,漢化程序界面
7,修改關閉提示窗內容
8,上傳你完成的作業!

3.     學習到的內容回顧:
1,爆破
2,截獲註冊碼
3,製作註冊機的原理
4,修改程序內部代碼
5,漢化程序與修改標題
6,ESP定律脫殼
7,腳本脫殼
8,理解JMP與其他跳轉的不同之處及如何運用
9,明白了CALL到底是什麼玩意
10,最後學習了修複函數

第二季

1深入爆破

1.      另外一個call裏的子call

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章