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. 使用腳本脫殼與認識Delphi的OEP.
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