1. 程式人生 > >OD破解CM需要用到的斷點API(經典斷點)

OD破解CM需要用到的斷點API(經典斷點)

攔截視窗:
bp CreateWindow 建立視窗
bp CreateWindowEx(A) 建立視窗
bp ShowWindow 顯示視窗
bp UpdateWindow 更新視窗
bp GetWindowText(A) 獲取視窗文字
攔截訊息框:
bp MessageBox(A) 建立訊息框
bp MessageBoxExA 建立訊息框
bp MessageBoxIndirect(A) 建立定製訊息框

攔截警告聲:
bp MessageBeep 發出系統警告聲(如果沒有音效卡就直接驅動系統喇叭發聲)
攔截對話方塊:
bp DialogBox 建立模態對話方塊
bp DialogBoxParam(A) 建立模態對話方塊
bp DialogBoxIndirect 建立模態對話方塊
bp DialogBoxIndirectParam(A) 建立模態對話方塊
bp CreateDialog 建立非模態對話方塊
bp CreateDialogParam(A) 建立非模態對話方塊
bp CreateDialogIndirect 建立非模態對話方塊
bp CreateDialogIndirectParam(A) 建立非模態對話方塊
bp GetDlgItemText(A) 獲取對話方塊文字
bp GetDlgItemInt 獲取對話方塊整數值
攔截剪貼簿:
bp GetClipboardData 獲取剪貼簿資料
攔截登錄檔:
bp RegOpenKey(A) 開啟子健
bp RegOpenKeyEx 開啟子健
bp RegQueryValue(A) 查詢子健
bp RegQueryValueEx 查詢子健
bp RegSetValue(A) 設定子健
bp RegSetValueEx(A) 設定子健
功能限制攔截斷點:
bp EnableMenuItem 禁止或允許選單項
bp EnableWindow 禁止或允許視窗
攔截時間:
bp GetLocalTime 獲取本地時間
bp GetSystemTime 獲取系統時間
bp GetFileTime 獲取檔案時間
bp GetTickCount 獲得自系統成功啟動以來所經歷的毫秒數
bp GetCurrentTime 獲取當前時間(16位)
bp SetTimer 建立定時器
bp TimerProc 定時器超時回撥函式
攔截檔案:
bp CreateFileA 建立或開啟檔案 (32位)
bp OpenFile 開啟檔案 (32位)
bp ReadFile 讀檔案 (32位)
bp WriteFile 寫檔案 (32位)
bp GetPrivateProfileStringA (ini檔案)
攔截驅動器:
bp GetDriveTypeA 獲取磁碟驅動器型別
bp GetLogicalDrives 獲取邏輯驅動器符號
bp GetLogicalDriveStringsA 獲取當前所有邏輯驅動器的根驅動器路徑
★★VB程式專用斷點★★
bp __vbaStrCmp 比較字串是否相等
bp __vbaStrComp 比較字串是否相等
bp __vbaVarTstNe 比較變數是否不相等
bp __vbaVarTstEq 比較變數是否相等
bp __vbaStrCopy 複製字串
bp __vbaStrMove 移動字串
bp MultiByteToWideChar ANSI字串轉換成Unicode字串
bp WideCharToMultiByte Unicode字串轉換成ANSI字串
解自校驗
bpx CreateFileA
bpx GetFileSize
bpx SetFilePointer
bpx ExitProcess
F12堆疊呼叫
破解思路
C類
Point-H法
bp GetDlgItem(斷輸入框)
bp MessageBoxA(斷對話方塊)
字串法
F12堆疊呼叫
B、D類
DEDE、PE Explorer作為強有力的輔助工具
關鍵還是找按妞事件
Point-H法
bp GetDlgItem(斷輸入框)
bp MessageBoxA(斷對話方塊)
字串法
F12堆疊呼叫
V類
VBExplorer、GetVBRes、SmatCheck作為強有力的輔助工具
關鍵還是找按妞事件
bp rtcMsgBox(斷對話方塊)


如果是重啟驗證就使用最開始的那些斷點
C類語言破解
1、bp MessageBoxA(W)(斷對話方塊)—Ctrl+N
2、Point-H法
3、bp GetDlgItem/GetWindowTextA(W)/GetWindowTextLengthA(W) (斷輸入框)
4、字串法—外掛/搜尋所有參考文字
Delphi/BC++語言破解
1、DEDE結合PE Explorer找按妞事件
2、Point-H法
3、bp GetDlgItem/GetWindowTextA(W)/GetWindowTextLengthA(W) (斷輸入框)
4、bp MessageBoxA(W)(斷對話方塊)—Ctrl+N
5、字串法—外掛/搜尋所有參考文字
6、如果程式介面標題有[未註冊/註冊/VIP版/標準版/鑽石版] 之類字樣,可以通過DEDE查詢FormCreate/FormShow,找到關鍵標誌位
VB語言破解
1、VBExplorer查詢按鈕事件
2、有提示框則 bp rtcMsgBox(斷對話方塊)
3、通過bp __vbaStrCmp/__vbaStrComp/__vbaVarTstEq
4、萬能斷點法(816C24法)
5、字串法—外掛/搜尋所有參考文字
易語言破解
1、藉助E-Code Explorer查詢按鈕事件
2、下訊息斷點,檢視堆疊再返回
3、eCode法–斷按鈕事件
4、字串法—外掛/搜尋所有參考文字
按鈕事件固定模式:
0040EC78 837D F4 00 cmp dword ptr ss:[ebp-C],0 ;關鍵判斷
0040EC7C 0F84 3B000000 je dcse.0040ECBD ;關鍵跳
0040EC82 68 04000080 push 80000004
0040EC87 6A 00 push 0
0040EC89 68 EC904000 push dcse.004090EC
0040EC8E 68 01030080 push 80000301
0040EC93 6A 00 push 0
00 40EC95 68 00000000 push 0
0040EC9A 68 04000080 push 80000004
0040EC9F 6A 00 push 0
0040ECA1 68 F1904000 push dcse.004090F1
0040ECA6 68 03000000 push 3
0040ECAB BB 00030000 mov ebx,300
0040ECB0 E8 92000000 call dcse.0040ED47
0040ECB5 83C4 28 add esp,28
0040ECB8 E9 36000000 jmp dcse.0040ECF3
0040ECBD 68 04000080 push 80000004
0040ECC2 6A 00 push 0
0040ECC4 68 CC904000 push dcse.004090CC
0040ECC9 68 01030080 push 80000301
0040ECCE 6A 00 push 0
0040ECD0 68 00000000 push 0
0040ECD5 68 04000080 push 80000004
0040ECDA 6A 00 push 0
0040ECDC 68 02914000 push dcse.00409102
0040ECE1 68 03000000 push 3
0040ECE6 BB 00030000 mov ebx,300
0040ECEB E8 57000000 call dcse.0040ED47
0040ECF0 83C4 28 add esp,28
0040ECF3 8BE5 mov esp,ebp
0040ECF5 5D pop ebp
0040ECF6 C3 retn


按鈕事件
1、有註冊錯誤/正確提示
bp MessageBoxA
bp rtcMsgBox
如果事先找不到按鈕事件,可以通過下訊息斷點,返回後回溯即可找到按鈕事件起始位置
2、無任何提示
bp GetDlgItem
可以通過bp GetDlgItem獲取按鈕事件程式碼
3、未註冊一啟動或者關閉就跳出個註冊框或者提示框
bp RegOpenKey(A)
bp CreateFileA
bp GetPrivateProfileStringA
檔案: reg/ini/dll/其他
至於儲存到什麼檔案,可以使用以下方法
1、查詢字串,看是否有可疑檔名或者登錄檔鍵名
2、猜。。。下斷點觀察
3、按鈕事件跟蹤
4、未註冊一啟動或者關閉就開啟網頁連結
bp ShellExecuteA
類似的組合
Cmp/test/其他判斷
Je/jne/jne/jz XXXXXXXX
軟體啟動—>判斷是否註冊—>是否Open
斷下後回溯程式碼即可找到關鍵點,常用的方法,轉存跟蹤法
5、未註冊就功能使用限制
判斷是否註冊—>某種功能是否讓你使用,如果不能夠用,一定會有提示的,或是錯誤提示或是彈出註冊框等,那麼從提示入手即可找到解除限制的關鍵
不完美破解:解除功能限制
6、未註冊就日期限制
bp GetLocalTime 獲取本地時間
bp GetSystemTime 獲取系統時間
bp GetFileTime 獲取檔案時間
一般下這幾個斷點比較難分析關鍵
捷徑:查詢字串–找可疑檔案–一般以DLL多見
只要不讓它讀取到這個DLL即可解除限制
7、Demo(演示試用版)–功能殘缺
這個和上面的功能限制不一樣
功能限制是軟體本身就有這個功能,對程式而言,相對應的功能程式碼也存在
Demo即是沒這個功能,空架子一個而已
一句話:破解也無用!
8、網路驗證
無法登陸有錯誤提示者:下訊息斷點回溯程式碼,找按鈕事件,從頭來過,從按鈕事件開始跟蹤,找網路驗證CALL(所需要登陸的地址在這個CALL裡面),接下來就是分析返回值或者改登陸地址為本地(127.0.0.1),再後面就需要改某些跳轉了
無法登陸自動退出者:下bp ExitProcess斷下(一般可以斷下)回溯程式碼,找按鈕事件,從來來過,從按鈕事件開始跟蹤,找網路驗證CALL(所需要登陸的地址在這個CALL裡面),接下來就是分析返回值或者改登陸地址為本地(127.0.0.1),再後面就需要改某些跳轉了
9、狗加密
一般狗加密軟體,一啟動就會檢測所需要的狗檔案,若沒有狗檔案,提示錯誤
這裡我們有兩個入手點
1、“一啟動就會檢測所需要的狗檔案”,下bp CreateFileA等斷點,斷下後,回溯
2、“若沒有狗檔案,提示錯誤”,下bp MessageBoxA,斷下後,回溯
總結:
從上面的介紹說明可以看出,有這麼一個共同點—按鈕事件,可以這麼說,按鈕事件是我們的思路之門
按鈕事件可以這樣得來:
1、通過下相應斷點,回溯程式碼
2、通過輔助工具快捷的得到(VBExplorer、DEDE)


重啟驗證
80%-90%的軟體基本都是重啟驗證型別
1、登錄檔型別
Bpx RegOpenKeyA(W)
Bpx RegOpenKeyExA(W)
2、ini檔案型別(.reg/.ini)
Bpx GetPrivateProfileStringA
3、其他檔案型別(.dat/.lic…)
Bpx CreateFileA(W)
Bpx ReadFile
4、DLL檔案操作型別
如果沒有什麼有效的攔截函式,不妨試一下Bpx CreateFileA(W).餘下的就是通過你的經驗去判斷了(例如:35課)
注意:建議使用Bpx斷點,這樣,比較快捷、準確。尚若Bpx失效,再嘗試bp
方便斷點設定的有以下3個斷點外掛,APIBreak中國版(不帶Point-H),APIBreak英文版(帶Point-H)、+BP-Olly


去nag框的方法
1、若是Delphi&BCB程式,可以通過FormCreate法查詢到FormCreate,再單步跟蹤,找到視窗的呼叫CALL,一般它的具體形式是call dword ptr ds:[edx+E8]
2、OD載入程式後,單步跟蹤,找到視窗的呼叫CALL

吾愛的好帖子,希望能儲存一波:https://www.52pojie.cn/forum.php?mod=viewthread&tid=806855&extra=page%3D1%26filter%3Dauthor%26orderby%3Ddateline