OllyDBG 入門之四--破解常用斷點設

OllyDBG 入門之四--破解常用斷點(轉)

軟件漢化2010-07-08 16:25:23 閱讀76評論0 ??字號:?訂閱

bpx hmemcpy??? 破解萬能斷點,攔截內存拷貝動作
bpx Lockmytask 當你用其它斷點都無效時可以試一下,這個斷點攔截按鍵的動作
bmsg handle wm_gettext 攔截注冊碼(handle為對應窗口的句柄)
bmsg handle wm_command 攔截OK按鈕(handle為對應窗口的句柄)


攔截窗口:
bpx CreateWindow????? 創建窗口
bpx CreateWindowEx(A) 創建窗口
bpx ShowWindow??????? 顯示窗口
bpx UpdateWindow????? 更新窗口
bpx GetWindowText(A)? 獲取窗口文本


攔截消息框:

bpx MessageBox(A) 創建消息框
bpx MessageBoxExA 創建消息框
bpx MessageBoxIndirect(A) 創建定制消息框


攔截警告聲:
bpx MessageBeep 發出系統警告聲(如果沒有聲卡就直接驅動系統喇叭發聲)


攔截對話框:
bpx DialogBox???????? 創建模態對話框
bpx DialogBoxParam(A) 創建模態對話框
bpx DialogBoxIndirect 創建模態對話框
bpx DialogBoxIndirectParam(A) 創建模態對話框
bpx CreateDialog???????? 創建非模態對話框
bpx CreateDialogParam(A) 創建非模態對話框
bpx CreateDialogIndirect 創建非模態對話框
bpx CreateDialogIndirectParam(A) 創建非模態對話框
bpx GetDlgItemText(A)??? 獲取對話框文本
bpx GetDlgItemInt??????? 獲取對話框整數值


攔截剪貼板:
bpx GetClipboardData 獲取剪貼板數據


攔截注冊表:
bpx RegOpenKey(A)??? 打開子健 ( 例:bpx RegOpenKey(A) if *(esp+8)=='****' )
bpx RegOpenKeyEx???? 打開子健?( 例:bpx RegOpenKeyEx if *(esp+8)=='****' )
bpx RegQueryValue(A) 查找子健 ( 例:bpx RegQueryValue(A) if *(esp+8)=='****' )
bpx RegQueryValueEx? 查找子健 ( 例:bpx RegQueryValueEx if *(esp+8)=='****' )
bpx RegSetValue(A)?? 設置子健 ( 例:bpx RegSetValue(A) if *(esp+8)=='****' )
bpx RegSetValueEx(A) 設置子健 ( 例:bpx RegSetValueEx(A) if *(esp+8)=='****' )
“****”為指定子鍵名的前4個字符,如子鍵為“Regcode”,則“****”= “Regc”


功能限制攔截斷點:

bpx EnableMenuItem 禁止或允許菜單項
bpx EnableWindow 禁止或允許窗口
bmsg hMenu wm_command 攔截菜單按鍵事件,其中hMenu為菜單句柄
bpx K32Thk1632Prolog 配合bmsg hMenu wm_command使用,可以通過這個斷點進入菜單處理程序


應用示例:
CALL [KERNEL32!K32Thk1632Prolog]
CALL [......]????? <-- 由此跟蹤進入菜單處理程序
CALL [KERNEL32!K32Thk1632Epilog]


攔截時間:
bpx GetLocalTime? 獲取本地時間
bpx GetSystemTime 獲取系統時間
bpx GetFileTime?? 獲取文件時間
bpx GetTickCount? 獲得自系統成功啟動以來所經歷的毫秒數
bpx GetCurrentTime 獲取當前時間(16位)
bpx SetTimer????? 創建定時器
bpx TimerProc???? 定時器超時回調函數


攔截文件:
bpx CreateFileA? 創建或打開文件 (32位)
bpx OpenFile???? 打開文件 (32位)
bpx ReadFile???? 讀文件 (32位)
bpx WriteFile? ? 寫文件 (32位)
bpx _lcreat??? ?創建或打開文件 (16位)
bpx _lopen???? ?打開文件 (16位)
bpx _lread????? 讀文件 (16位)
bpx _lwrite??? ?寫文件 (16位)
bpx _hread????? 讀文件 (16位)
bpx _hwrite???? 寫文件 (16位)


攔截驅動器:
bpx GetDrivetype(A) 獲取磁盤驅動器類型
bpx GetLogicalDrives 獲取邏輯驅動器符號
bpx GetLogicalDriveStringsA 獲取當前所有邏輯驅動器的根驅動器路徑


攔截狗:
bpio -h 378(或278、3BC) R 378、278、3BC是并行打印端口
bpio -h 3F8(或2F8、3E8、2E8) R 3F8、2F8、3E8、2E8是串行端口


VB程序專用斷點:
bpx msvbvm50!__vbaStrCmp?? 比較字符串是否相等
bpx msvbvm50!__vbaStrComp ?比較字符串是否相等
bpx msvbvm50!__vbaVarTstNe 比較變量是否不相等
bpx msvbvm50!__vbaVarTstEq 比較變量是否相等
bpx msvbvm50!__vbaStrCopy? 復制字符串
bpx msvbvm50!__vbaStrMove? 移動字符串
bpx MultiByteToWideChar??? ANSI字符串轉換成Unicode字符串
bpx WideCharToMultiByte??? Unicode字符串轉換成ANSI字符串
上面的斷點對應VB5程序,如果是VB6程序則將msvbvm50改成msvbvm60即可

VB程序的破解
記住VB常用的一些函數:
MultiByteToWideChar???將ANSI字符串轉換成UNICODE字符
WideCHatToMultiByte  將UNICODE字符轉換成ANSI字符
rtcT8ValFromBstr    把字符轉換成浮點數  
vbaStrCmp        比較字符串(常用斷點)
vbaStrComp       字符串比較(常用斷點)
vbaStrCopy       復制字符串
StrConv         轉換字符串
vbaStrMove       移動字符串
__vbaVarCat???????? ?連接字符串
rtcMidCharVar??????? 在字符串中取字符或者字符串!
__vbaLenBstr???????? 取字符串的長度
vbaVarTstNe      變量比較
vbaVarTstEq      變量比較
rtcMsgBox       顯示對話框
VarBstrCmp       比較字符串
VarCyCmp        比較字符串
  
用OD載入脫殼后的程序,在命令行輸入:bpx hmemcpy,然后回車,會彈出程序運行調用的所有的函數,在每個函數上設置好斷點!

說明:我破VB程序喜歡用這個斷點設置方法,通過一步步跟蹤,基本可以把握程序保護的思路,所以我破VB程序基本用這個斷點,當然你可以用其它的斷點,只要能找到關鍵,任何斷點都是有意義的。

關于VB的程序,注冊沒有提示的二個辦法:
第一(提示錯誤):用GetVBRes來替換里面的提示串,一般是以‘111111’,‘222222’之類的替換
因為:VB,用的字來存放提示還有加了點東東,我們用的工具一般是字節分析。換成‘22222’之類的就是字節了,用靜態分析,就有你該的串了。GetVBRes(網上很多,自己下吧)

第二(沒有提示):用vbde這個工具(不知道,有沒有用過DEDE,是一樣思路),主要是找出破解的按鈕窗口的位置,來進行跟蹤。

先給出修改能正確反編譯VB程序的W32DASM的地址:
======================
offsets 0x16B6C-0x16B6D

修改機器碼為: 98 F4
======================

VB程序的跟蹤斷點:?

MultiByteToWideChar,
rtcR8ValFromBstr,
WideCharToMultiByte,
__vbaStrCmp
__vbaStrComp
__vbaStrCopy
__vbaStrMove
__vbaVarTstNe
rtcBeep
rtcGetPresentDate (時間API)
rtcMsgBox
=========

時間限制斷點:

CompareFileTime
GetLocalTime
GetSystemTime
GetTimeZoneInformation
msvcrt.diffTime()
msvcrt.Time()
================

VB斷點查找方法

1.VB6.0編寫,OD載入程序調出注冊窗口,alt+e調出可執行模塊窗口找到X:\WINDOWS\system32\MSVBVM60.DLL雙擊,在ctrl+n調出窗口找到,名稱XXXXXXE區段=ENGINE 導出__vbaVarMove雙擊來到下面地址(可以直接在命令行 bp __vbaVarMove),回到程序注冊窗口點注冊被攔斷在剛才下斷的地址,斷后在ctrl+F9,F8回
2.OD載入程序,命令行下斷點:bp rtcMsgBox
堆棧友好提示
確定注冊失敗按鈕返回。接著向上找出點注冊按鈕執行的代碼第一句,可以嗎?當然行,根據我們知道程序員寫一個事件執行的代碼是如這種,各種語言都差不多。
3.OD載入程序,命令行下斷點:bp rtcMsgBox
任意填入偽注冊碼 9999999999999999999,確定后中斷
堆棧友好提示
確定注冊失敗按鈕返回。
W32Dasm反匯編程序,Shiht+F12
4.VB中的messagebox是一個消息框,匯編中用rtcMsgBox下斷點.用olldbg載入程序,Alt+e,在可執行文件模塊中找到Msvbvm60.dll,雙擊它,在代碼窗口點右鍵-搜索-當前模塊中的名稱中的rtcMsgBox函數,雙擊它,在6A362F29 55 PUSH EBP這一句雙擊下斷點,關掉多余的窗口,只留下cpu調試主窗口,F9運行程序,點?號按鈕,隨便輸入987654321后,回車后立即中斷,然后Ctrt+f9執行到返回地址,因為這是msvbvm60的領空,我們要回到程序領空.秘密記事本彈出message錯誤提示信息,點確定,向上看,再按F8就回到
5.為Microsoft Visual Basic 6.0,先用SmartCheck找到程序比較注冊碼點
6.用vb常用比較斷點
vbastrcmp
vbastrcomp
vbavartsteq
在od中設斷點找注冊碼
7.用Od載入程序,運行,填入上面的注冊碼和順序號。在Od中下斷點,Alt+E,雙擊Msvbvm60運行庫,右鍵-搜索當前模塊中的名稱,找到Vbastrcmp,雙擊下斷點。

楊航收集技術資料,分享給大家



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/388255.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/388255.shtml
英文地址,請注明出處:http://en.pswp.cn/news/388255.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

POJ1204 Word Puzzles

傳送門 這題果然是AC自動機的大好題&#xff01; 題目的大意是&#xff0c;給定一個l*c的大網格&#xff0c;每個格子里有一個字符&#xff0c;每個格子可以向八個方向形成字符串&#xff0c;問給定的字符串在哪里能被匹配以及在網格中出現的方向&#xff08;A代表北&#xff0…

普通話測試系統_普通話

普通話測試系統Traduzido/adaptado do original por Vincius Barqueiro a partir do texto original “Writing Alt Text for Data Visualization”, escrito por Amy Cesal e publicado no blog Nightingale.Traduzido / adaptado由 VinciusBarqueiro 提供原始 文本“為數據可…

Mac OS 被XCode搞到無法正常開機怎么辦?

Mac OS 被XCode搞到無法正常開機怎么辦&#xff1f; 第一天拿到這臺air的時候&#xff0c;迫不及待地把從別處搜集來的XCode 3.2.5iOS SDK 4.1的dmg安裝了上來&#xff0c;結果系統直接崩潰&#xff0c;再開機就不能正常開機&#xff0c;總是碰到kernel panic。這不坑爹嗎…… …

美國隊長3:內戰_隱藏的寶石:尋找美國最好的秘密線索

美國隊長3:內戰There are plenty of reasons why one would want to find solitude in the wilderness, from the therapeutic effects of being immersed in nature, to not wanting to contribute to trail degradation and soil erosion on busier trails.人們有很多理由想要…

Java入門第三季——Java中的集合框架(中):MapHashMap

1 package com.imooc.collection;2 3 import java.util.HashSet;4 import java.util.Set;5 6 /**7 * 學生類8 * author Administrator9 * 10 */ 11 public class Student { 12 13 public String id; 14 15 public String name; 16 17 public Set<…

【譯】 WebSocket 協議第八章——錯誤處理(Error Handling)

概述 本文為 WebSocket 協議的第八章&#xff0c;本文翻譯的主要內容為 WebSocket 錯誤處理相關內容。 錯誤處理&#xff08;協議正文&#xff09; 8.1 處理 UTF-8 數據錯誤 當終端按照 UTF-8 的格式來解析一個字節流&#xff0c;但是發現這個字節流不是 UTF-8 編碼&#xff0c…

升級xcode5.1 iOS 6.0后以前的橫屏項目 變為了豎屏

升級xcode5.1 iOS 6.0后以前的橫屏項目 變為了豎屏&#xff0c;以下為解決辦法&#xff1a; 在AppDelegate 的初始化方法 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions中 將 [window addSubview: viewCon…

動漫數據推薦系統

Simple, TfidfVectorizer and CountVectorizer recommendation system for beginner.簡單的TfidfVectorizer和CountVectorizer推薦系統&#xff0c;適用于初學者。 目標 (The Goal) Recommendation system is widely use in many industries to suggest items to customers. F…

Wait Event SQL*Net more data to client

oracle 官方給的說法是 C.3.152 SQL*Net more data to client The server process is sending more data/messages to the client. The previous operation to the client was also a send. Wait Time: The actual time it took for the send to complete 意味著server process…

1.3求根之牛頓迭代法

目錄 目錄前言&#xff08;一&#xff09;牛頓迭代法的分析1.定義2.條件3.思想4.誤差&#xff08;二&#xff09;代碼實現1.算法流程圖2.源代碼&#xff08;三&#xff09;案例演示1.求解&#xff1a;\(f(x)x^3-x-10\)2.求解&#xff1a;\(f(x)x^2-1150\)3.求解&#xff1a;\(f…

libzbar.a armv7

楊航最近在學IOS&#xfeff;&#xfeff; http://download.csdn.net/download/lzwxyz/5546365 我現在用的是這個&#xff1a;http://www.federicocappelli.net/2012/10/05/zbar-library-for-iphone-5-armv7s/ 點它的HERE開始下載 下載的libzbar.a庫&#xff0c;如何查看 …

Alex Hanna博士:Google道德AI小組研究員

Alex Hanna博士是社會學家和研究科學家&#xff0c;致力于Google的機器學習公平性和道德AI。 (Dr. Alex Hanna is a sociologist and research scientist working on machine learning fairness and ethical AI at Google.) Before that, she was an Assistant Professor at th…

三位對我影響最深的老師

我感覺&#xff0c;教過我的老師們&#xff0c;不論他們技術的好壞對我都是有些許影響的。但是讓人印象最深的好像只有寥寥幾位。 第一位就是小學六年級下冊教過我的語文老師。他是臨時從一個貧困小學調任過來的&#xff0c;不怎么管班級&#xff0c;班里同學都在背地里說他不會…

安全開發 | 如何讓Django框架中的CSRF_Token的值每次請求都不一樣

前言 用過Django 進行開發的同學都知道&#xff0c;Django框架天然支持對CSRF攻擊的防護&#xff0c;因為其內置了一個名為CsrfViewMiddleware的中間件&#xff0c;其基于Cookie方式的防護原理&#xff0c;相比基于session的方式&#xff0c;更適合目前前后端分離的業務場景&am…

UNITY3D 腦袋頂血頂名

&#xfeff;&#xfeff;楊航最近在學Unity3D&#xfeff;&#xfeff; using UnityEngine; using System.Collections; public class NPC : MonoBehaviour { //主攝像機對象 public Camera camera; //NPC名稱 private string name "我是doud…

一個項目的整個測試流程

最近一直在進行接口自動化的測試工作&#xff0c;同時對于一個項目的整個測試流程進行了梳理&#xff0c;希望能對你有用~~~ 需求分析&#xff1a; 整體流程圖&#xff1a; 需求提取 -> 需求分析 -> 需求評審 -> 更新后的測試需求跟蹤xmind 分析流程&#xff1a; 1. 需…

python度量學習_Python的差異度量

python度量學習Hi folks, welcome back to my new edition of the blog, thank you so much for your love and support, I hope you all are doing well. In today’s learning, we will try to understand about variance and the measures involved in it. Although the blo…

多個攝像機之間的切換

楊航最近在學Unity3D&#xfeff;&#xfeff; Unity3D入門 第捌章: 多個攝像機之間的切換 內容描述&#xff1a;這章&#xff0c;我們來學習一下同個場景中多個攝像機怎么切換。 接著我們創建一個空對象 GameObject -> Create Empty 命名為CamearController&#xff0…

Kubernetes的共享GPU集群調度

問題背景 全球主要的容器集群服務廠商的Kubernetes服務都提供了Nvidia GPU容器調度能力&#xff0c;但是通常都是將一個GPU卡分配給一個容器。這可以實現比較好的隔離性&#xff0c;確保使用GPU的應用不會被其他應用影響&#xff1b;對于深度學習模型訓練的場景非常適合&#x…

django-celery定時任務以及異步任務and服務器部署并且運行全部過程

Celery 應用Celery之前&#xff0c;我想大家都已經了解了&#xff0c;什么是Celery&#xff0c;Celery可以做什么&#xff0c;等等一些關于Celery的問題&#xff0c;在這里我就不一一解釋了。 應用之前&#xff0c;要確保環境中添加了Celery包。 pip install celery pip instal…