OD常用斷點


攔截窗口:
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作為強有力的輔Z工具
關鍵還是找按妞事件
Point-H法
bp GetDlgItem(斷輸入框)
bp MessageBoxA(斷對話框)
字符串法
F12堆棧調用
V類
VBExplorer、GetVBRes、SmatCheck作為強有力的輔Z工具
關鍵還是找按妞事件
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、通過輔Z工具快捷的得到(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

******************************************************************************************************************************************
兩種經典方法
1、Point-H法
此法類似下斷點bp GetWindowText(A/W),但是,在某些Point-H斷不下來的情況下,bp GetWindowText(A/W)卻可以斷下來。Point-H能夠斷下來的,bp GetWindowTextA基本上都可以順利斷下
2、轉存跟蹤法
到底是byte/word/Dword斷點,一般情況下是byte,其他特殊情況大家臨場判斷
******************************************************************************************************************************************
灰色按鈕
有兩種情況:通過代碼和控件屬性
VB語言:
代碼:ctrl+b查找 816C24,在JMP下斷,然后F2運行程序,把 push ebp 改為 retn,或者把這些代碼全NOP掉
控件屬性:VBExplorer 輔Z工具改屬性
Delphi/BC++語言:
代碼:通過DEDE找FormCreate,記下地址,改 retn
控件屬性:相關輔Z工具改屬性
易語言:
代碼:bp EnableWindow,斷下后返回,把 push ebp 改為 retn
控件屬性:用十六進制工具查找 BOB4C5A5 ,把它后面的 07 改 05
破解時常用斷點:
VB MASM32 VC BCB 易語言 Delphi
VB破解
1、VBExplorer查找按鈕事件
2、有提示框則bp rtcMsgBox
3、通過bp __vbaStrCmp/__vbaStrComp/__vbaVarTstEq
bp __vbaStrCmp
bp __vbaStrComp
4、萬能斷點法(816C24法)
注冊驗證程序可以用這個斷點下斷,一般離程序訪問注冊表很近:
bp __vbaStrToAnsi
5.F12堆棧調用
總結:
VB程序破解的關鍵跳轉,一般與其它語言的不同,沒有JPM XXXXXXX
一般以 JE/JNE XXXXXXXXX 跳轉記錄一般不會很遠(雖然是短距離跳轉,但是關鍵就在這里,可以設置大量的信息) 。如果發現False/True 可能是關鍵點
VB:
XXXXXXX JE/JNE XXXXX

設置信息
Delphi BC++ 易語言 VC++ 匯編:
XXXXXXX JE/JNE XXXXX

設置信息
XXXXXXX JMP XXXXX

設置信息
VC++ 匯編(有的 一段,一段的):
XXXXXXX JE/JNE XXXXX

設置信息
retn
push xx

設置信息
retn
push xx

設置信息
retn
易語言
易語言逆向分析思路:
1. 信息框法 bp MessageBoxA(斷對話框)
2.字符串法
查看易語言文本信息:
bp GetProcessHeap F9運行4次,取消斷點 執行ALT+F9 用戶代碼 F8單步走
或者在區段為”.data”/”.ecode”下斷,運行
3.窗口標題法 bp SetWindowTextA
4.F12堆棧調用
0040C0CB=易語言.0040C0CB (ASCII “shaonanshaonvluntan”)
DELPHI破解:
1、DEDE、PE Explorer ResScope作為強有力的輔Z工具找按妞事件
2、Point-H法
3、bp GetDlgItem/GetDlgItemTextA(斷輸入框)
4、bp MessageBoxA(W)(斷對話框)—Ctrl+N
5、字符串法—插件/搜索所有參考文本
6、如果程序界面標題有[未注冊/注冊/VIP版/標准版/鑽石版] 之類字樣的
可以通過查找FormCreate/FormShow—-DEDE,找到關鍵標志位!
來判斷程序怎么樣的判斷是否注冊或者用戶類型
7. 窗口標題法 bp SetWindowTextA
8.F12堆棧調用
注冊表:
bpx RegCreateKeyExA 對於Delphi程序程序來說,用這個斷點比較合適
bp RegCreateKeyExA 對於加了殼的程序
注冊碼:Rc1-420+用戶名(不能為整數,)+C00L
C+破解
C類
Point-H法
bp GetDlgItem(斷按下按鈕)
bp MessageBoxA(斷對話框)
字符串法
F12堆棧調用
窗口標題法 bp SetWindowTextA
★★C+程序專用斷點★★
bp lstrcmpA (KERNEL32.lstrcmpA) 比較用法
bp _mbscmp //比較
C類程序的經典斷點:
bp GetWindowTextA(斷按下按鈕) //也是適用於其它語言
bp GetWindowTextLengthA(斷按下按鈕) //也是適用於其它語言
bp GetDlgItem(斷按下按鈕) //也是適用於其它語言
bp GetDlgItemTextA
ds:[004021C8]=77C01881 (msvcrt._mbscmp)
BC++破解
1、DEDE、PE Explorer作為強有力的輔Z工具找按妞事件
2、Point-H法
3、bp GetDlgItem/GetDlgItemTextA(斷輸入框)
4、bp MessageBoxA(W)(斷對話框)—Ctrl+N
5、字符串法—插件/搜索所有參考文本
6、如果程序界面標題有[未注冊/注冊/VIP版/標准版/鑽石版] 之類字樣的
可以通過查找FormCreate/FormShow—-DEDE,找到關鍵標志位!
來判斷程序怎么樣的判斷是否注冊或者用戶類型
7.窗口標題法 bp SetWindowTextA
8.F12堆棧調用
bpx RegCreateKeyExA 對於Delphi程序程序來說,用這個斷點比較合適
bp RegCreateKeyExA 對於加了殼的程序
MASM32 / TASM32破解
入口點 :
004011C7 6A 00 push 0
004011C9 E8 5E070000 call 0040192C
004011CE A3 70614000 mov dword ptr ds:[406170],eax
004011D3 6A 00 push 0
004011D5 68 EE114000 push MASM32.004011EE
004011DA 6A 00 push 0
004011DC 68 C8000000 push 0C8
Point-H法
bp GetDlgItem(斷按下按鈕)
bp MessageBoxA(斷對話框)
字符串法
F12堆棧調用
窗口標題法 bp SetWindowTextA
OD常用斷點2
1、限制程序功能函數
EnableMenuItem 允許、禁止或變灰指定的菜單條目
EnableWindow 允許或禁止鼠標和鍵盤控制指定窗口和條目(禁止時菜單變灰)
2、對話框函數
CreateDialog 從資源模板建立一非模態對話窗
CreateDialogParam 從資源模板建立一非模態對話窗
CreateDialogIndirect 從內存模板建立一非模態對話窗
CreateDialogIndirectParam 從內存模板建立一非模態對話窗
DialogBox 從資源模板建立一模態對話窗
DialogBoxParam 從資源模板建立一模態對話窗
DialogBoxIndirect 從內存模板建立一模態對話窗
DialogBoxIndirectParam 從內存模板建立一模態對話窗
EndDialog 結束一模態對話窗
MessageBox 顯示一信息對話框
MessageBoxEx 顯示一信息對話框
MessageBoxIndirect 顯示一定制信息對話框
GetDlgItemInt 得指定輸入框整數值
GetDlgItemText 得指定輸入框輸入字符串
GetDlgItemTextA 得指定輸入框輸入字符串
Hmemcpy 內存復制 (非應用程序直接調用)
3、磁盤處理函數1273?GAMEHK所有–admin?11326
GetDiskFreeSpaceA 獲取與一個磁盤的組織有關的信息,以及了解剩余空間的容量
GetDiskFreeSpaceExA 獲取與一個磁盤的組織以及剩余空間容量有關的信息
GetDriveTypeA 判斷一個磁盤驅動器的類型
GetLogicalDrives 判斷系統中存在哪些邏輯驅動器字母
GetFullPathNameA 獲取指定文件的詳細路徑
GetVolumeInformationA 獲取與一個磁盤卷有關的信息
GetWindowsDirectoryA 獲取Windows目錄的完整路徑名
GetSystemDirectoryA 取得Windows系統目錄(即System目錄)的完整路徑名
4、文件處理函數
CreateFileA 打開和創建文件、管道、郵槽、通信服務、設備以及控制台
OpenFile 這個函數能執行大量不同的文件操作
ReadFile 從文件中讀出數據
ReadFileEx 與ReadFile相似,只是它只能用於異步讀操作,並包含了一個完整的回調
WriteFile 將數據寫入一個文件
WriteFileEx 與WriteFile類似,只是它只能用於異步寫操作,並包括了一個完整的回調
SetFilePointer 在一個文件中設置當前的讀寫位置
SetEndOfFile 針對一個打開的文件,將當前文件位置設為文件末尾
CloseHandle 關閉一個內核對象。其中包括文件、文件映射、進程、線程、安全和同步對象等
_lcreat 創建一個文件
_lopen 以二進制模式打開指定的文件
_lread 將文件中的數據讀入內存緩沖區
_lwrite 將數據從內存緩沖區寫入一個文件
_llseek 設置文件中進行讀寫的當前位置
_lclose 關閉指定的文件
_hread 將文件中的數據讀入內存緩沖區
_hwrite 將數據從內存緩沖區寫入一個文件
OpenFileMappingA 打開一個現成的文件映射對象
CreateFileMappingA 創建一個新的文件映射對象
MapViewOfFile 將一個文件映射對象映射到當前應用程序的地址空間
MapViewOfFileEx (內容同上)
CreateDirectoryA 創建一個新目錄
CreateDirectoryExA 創建一個新目錄
RemoveDirectoryA 刪除指定目錄
SetCurrentDirectoryA 設置當前目錄
MoveFileA 移動文件
DeleteFileA 刪除指定文件
CopyFileA 復制文件
CompareFileTime 對比兩個文件的時間
SetFileAttributesA 設置文件屬性
SetFileTime 設置文件的創建、訪問及上次修改時間
FindFirstFileA 根據文件名查找文件
FindNextFileA 根據調用FindFirstFile函數時指定的一個文件名查找下一個文件
FindClose 關閉由FindFirstFile函數創建的一個搜索句柄
SearchPathA 查找指定文件
GetBinaryTypeA 判斷文件是否可以執行
GetFileAttributesA 判斷指定文件的屬性
GetFileSize 判斷文件長度
GetFileTime 取得指定文件的時間信息
GetFileType 在給出文件句柄的前提下,判斷文件類型
5、注冊表處理函數
RegOpenKeyA 打開一個現有的注冊表項
RegOpenKeyExA 打開一個現有的注冊表項
RegCreateKeyA 在指定的項下創建或打開一個項
RegCreateKeyExA 在指定項下創建新項的更復雜的方式
RegDeleteKeyA 刪除現有項下方一個指定的子項
RegDeleteValueA 刪除指定項下方的一個值
RegQueryValueA 獲取一個項的設置值
RegQueryValueExA 獲取一個項的設置值
RegSetValueA 設置指定項或子項的值
RegSetValueExA 設置指定項的值
RegCloseKey 關閉系統注冊表中的一個項(或鍵)
6、時間處理函數
CompareFileTime 比較兩文件時間
GetFileTime 得文件建立,最后訪問,修改時間
GetLocalTime 得當前本地時間
GetSystemTime 得當前系統時間
GetTickCount 得windows啟動至現時毫秒
SetFileTime 設置文件時間
SetLocalTime 設置本地時間
SetSystemTime 設置系統時間
7、進程函數
CreateProcessA 創建一個新進程
ExitProcess 以干凈的方式關閉一個進程
FindExecutableA 查找與一個指定文件關聯在一起的程序的文件名
FreeLibray 釋放指定的動態鏈庫
GetCurrentProcess 獲取當前進程的一個偽句柄
GetCurrentProcessId 獲取當前進程一個唯一的標識符
GetCurrentThread 獲取當前線程的一個偽句柄
GetExitCodeProces 獲取一個已結束進程的退出代碼
GetExitCodeThread 獲取一個已結束線程的退出代碼
GetModuleHandleA 獲取一個應用程序或動態鏈接庫的模塊句柄
GetPriorityClassA 獲取特定進程的優先級別
LoadLibraryA 載入指定的動態鏈接庫,並將它映射到當前進程使用的地址空間
LoadLibraryExA 裝載指定的動態鏈接庫,並為當前進程把它映射到地址空間
LoadModule 載入一個windows應用程序,並在指定的環境中運行
TerminateProcess 結束一個進程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM