1. 程式人生 > >OD載入程式過程2個方法

OD載入程式過程2個方法

OllyDbg可以用兩種方式載入目標程式除錯,一種是通過CreateProcess建立程序;另一種是利用DebugActiveProcess函式將偵錯程式捆綁到一個正在執行的程序上。

1.利用CreateProcess建立程序

單擊選單“File/Open”或按快捷鍵F3開啟目標檔案,這樣會呼叫CreateProcess建立一個用以除錯的新程序。OllyDbg將接收到目標程序發生的除錯事件,而對其子程序的除錯事件將不予理睬。

OllyDbg除了直接載入目標程式外,也支援帶引數的程式,方法是:在開啟對話方塊中的“Arguments”欄中輸入引數行,如圖2.7所示。

 
圖2.7  帶引數除錯程式

2.將OllyDbg附加到一個正在執行的程序上(據說od 載入會呼叫PsSuspendThread)

OllyDbg的一個實用的功能是可以除錯正在執行的程式,這個功能稱為“附加(Attach)”。其原理是利用DebugActiveProcess函式可以將偵錯程式捆綁到一個正在執行的程序上,如果執行成功,則效果類似於利用CreateProcess建立的新程序。

單擊選單“File/Attach”開啟附加對話方塊,如圖2.8所示。選中正在執行的目標程序,單擊Attach按鈕即可附加目標程序。附加後,目標程式會暫停在Ntdll.dll的DbgBreakPoint處,在OllyDbg裡按一下F9鍵或Shift+F9鍵讓程式繼續執行。接著就可對目標程式進行除錯分析了。

 
圖2.8  附加目標程序

注意:附加一個程式時,儘量用新開啟的OllyDbg,這樣附加的成功率高些。

如果是隱藏程序,就不能用上述方法附加了。OllyDbg有一個-p啟動引數,只要得到程序的pid就可以附加了。用IceSword等工具獲得隱藏程序的pid,然後在控制檯視窗用-p引數附加即可。注意,pid的值是十進位制。

C:\OllyDbg.exe –p pid值 
如果附加不成功,可以巧妙利用OllyDbg的即時偵錯程式功能來除錯。先看一個例子,執行A.exe,其會呼叫B.exe,此時用OllyDbg附加B.exe,OllyDbg會無響應。解決辦法:在“Options/Just-in-time debugging”中設定OllyDbg為即時偵錯程式,將B.exe的入口改成CC,即INT 3指令,同時記下原指令。執行A.exe,其呼叫B.exe,執行到INT 3指令會導致異常,OllyDbg會作為即時偵錯程式啟動並載入B.exe,此時再將INT 3指令恢復原指令,繼續除錯。

相關推薦

OD載入程式過程2方法

OllyDbg可以用兩種方式載入目標程式除錯,一種是通過CreateProcess建立程序;另一種是利用DebugActiveProcess函式將偵錯程式捆綁到一個正在執行的程序上。 1.利用CreateProcess建立程序 單擊選單“File/Open”或按快捷鍵

OD載入程式的方式

1. OllyDbg可以用兩種方式載入被除錯的目標程式,一是通過CreateProcess建立程序,二是用函式DebugActiveProcess將OD     繫結到一個正在執行的程式上。     1.1 用CreateProcess建立程序           1.1.1

通過瀏覽器載入程式選擇檔案路徑方法

通過瀏覽器瀏覽器選擇預覽檔案儲存路徑 在工作中遇到這個需求,需要選擇檔案的儲存這裡我列舉兩種方法供大家參考: 1、通過SHBrowseForFolder實現具體程式碼和講解如下: wchar_t szPath[MAX_PATH]; //存放選擇的目錄路徑 Zero

提高Web端頁面載入速度的6方法

阿伯丁集團曾對使用者進行調查,結果顯示,網站頁面載入時間每延長1秒,就會減少11%的頁面瀏覽量,降低16%的客戶滿意度,降低7%的轉化率。亞馬遜也通過調查證實,網頁開啟的速度每提高100毫秒,能為網站增多1%的收益。類似的證實還有很多,網頁開啟的速度直接關係到網站的收益,已毋庸置疑。 這就是為什麼

在Docker中監控Java應用程式的5方法

http://geek.csdn.net/news/detail/218595 譯者注:Docker是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的Linux機器上,也可以實現虛擬化。通常情況下,監控的主要目的在於:減少宕機時

javascript實現n階乘的2方法

方案一:利用while迴圈 function factorial(num){ var result = 1; while(num){ result *= num; num--; } return result; }方案二:利用函式遞迴 f

PHP判斷指定時間段的2方法

有時我們需要在一天中的某個時間段進行某項任務,或者在一天中的不同小時裡進行不同的任務,使用PHP如何實現呢,下面的兩個例子都可以解決這個問題 一、包含小時和分鐘的判斷date_default_timezone_set("Asia/Shanghai"); $time = intval (date(

spring啟動載入程式的幾種方法

轉載自:http://blog.csdn.net/lovesomnus/article/details/50158761 關於在spring  容器初始化 bean 和銷燬前所做的操作定義方式有三種: [java] view plain copy p

ajax呼叫一般處理程式的多方法

js: $.ajax({ url: "ashx/Demo.ashx/", type: "Get", dataType: "json", data: "action=GetData

一、磁碟載入程式2

一、簡單的磁碟載入程式 簡單的說明:計算機加電後,BIOS檢查硬體等等,BIOS呼叫19號中斷載入磁碟載入程式。 以下用NASM編寫的一個簡單的磁碟載入程式。 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

如何在OD載入程式遇到入口點之前執行程式碼之二:靜態裝載DLL

編譯器:VS2010 需要的知識:DLL的編寫和使用 1.dllmain.cpp // dllmain.cpp : Defines the entry point for the DLL application. #include "stdafx.h" BOOL API

Asp.net從後臺彈出訊息框的2方法

引:以前做專案中從後臺彈出的訊息框都是整合在專案框架中的,脫離了框架,寫的2個從後臺彈出訊息框的方法: 1.引入Winform 的dll彈出訊息框     a.在專案的“引用”中“新增引用”,選擇 “System。Windows.Forms.dll”;     b.後臺匯入

Python3,通過re模組中的sub()和findall()2方法提升爬蟲提取資料的效率

直接上Demo: 測試資料 - HTML: '''<div id=\"songs-list\">" "<h2 class=\"title\">各種汽車</h2>" "<p class=\"introduction\"&

poj 2104 <排序分塊,區間第k大>/<第一次用主席樹>2方法+整體二分

給一個序列,查詢區間第k大,用分塊來實現 首先將區間分為每塊block大小,也就有num=n/block塊,if(n%block==0)num++. 然後每次在定義每個塊其左右邊界的時候進行排序,那麼就得到一個每塊內排好序的塊。 查詢的時候因為是查詢區間第k大,那麼我們

總結Qt5呼叫windows本地程式的三方法以及異同

一、說明: windows版本:win10 Qt版本:Qt5.9.3 以呼叫windows自帶的畫圖程式為例 二、呼叫方法及異同 1、system()函式 system("mspain

載入相關的2類庫

2個類庫都是用來載入的,功能都差不多。 一個是BulkLoader,一個老外寫的loader類,是一個不錯且使用簡單的開源載入類,它能夠對多個不同的外部檔案進行佇列下載。在嘗試載入多個檔案時候只要使用 add + 檔案地址,在載入結束後使用 “get檔案型別”+檔案地址或載

微信小程式上拉重新整理和下拉載入2方法實現

微信小程式上拉重新整理和下拉載入2種方法實現,onPullDownRefresh,scroll-view使用 一、XXX.json開啟下拉重新整理 {    "enablePullDownRefresh": true }   二、XXX.js onP

TF:Tensorflor之session會話的使用,定義兩矩陣,兩種方法輸出2矩陣相乘的結果—Jason niu

pri session print int blog spa run result orf import tensorflow as tf matrix1 = tf.constant([[3, 20]]) matrix2 = tf.constant([[6],

01_5_SERVLET為什麽有2init方法

blog init方法 pos enume 初始化 div 不為 clas exc 01_5_SERVLET為什麽有2個init方法 1. 在web.xml配置初始化參數 <servlet> <servlet-name>TestInitSe

關於sql server2012備份還原出現的2介質問題的解決方法

數據庫 還原備份 sql server2012 幾年前用ZBLOG的ASP+ACCESS建立了一個教育主題小博客,幾年下來,發現速度越來越慢了,因此想換個數據庫,研究了個把星期,終於將ACCESS數據庫換成了SQL SERVER2012版本,速度是快多了,但是我現在很想備份還原一下數據庫,因為數據