❶ OllyDbg是什麼
OllyDbg是什麼?
OllyDbg是一個32位匯編級的直觀的分析調試器。
它在源代碼不可得或者你用編譯器遇到問題的時候特別有用。
運行需要。工作在Windows 95,98,Me,NT或者2000,可能XP上(沒有測試)。
運行於任何奔騰級別的電腦上,但是如果想要流暢的調試,你可能需要一個至少300MHz的處理器。
Ollydbg是很耗內存的。如果你想要使用某些擴展特性比如追蹤,我推薦128或更多內存。
支持的處理器。OllyDbg支持所有80x86,奔騰,MMX,3Dnow!,包括Athlon擴展,和SSE指令以及相應數據格式。
但不支持SSE2. 可配置性。大約有100個選項控制OllyDbg的行為和外觀。
數據格式。
Dump窗口顯示所有常規數據格式:
hex,ASCII,UNICODE,16和32位正/負/16進制整數,32/64/80位浮點數,地址,反匯編(MASM或IDEAL),或作為注釋的
PE部首或者線程數據塊。
幫助。
這個文件包含理解和使用OllyDbg所需的重要信息。
如果你有Windows API幫助文件(因為考慮到版權的原因沒有附帶),你可以把它附加到OllyDbg一起,以便在系統調
用的時候獲得立即幫助。
啟動。
你可以以命令行,文件菜單,拖放的方式指定可執行文件,重啟最後調試過的程序或者把它附加到正在運行的程序上
。OllyDbg支持實時調試。安裝是不必要的,你可以從軟盤上啟動OllyDbg。
線程。
OllyDbg可以調試多線程應用程序。你可以從一個線程切換到另一個,掛起,恢復和中止線程或者改變他們的優先順序。
線程窗口顯示每一個線程的錯誤信息(通過調用GetLastError來返回)
分析。
分析器是OllyDbg重要的一部分。它識別過程,簡單和級聯轉換器,表,嵌入代碼中的常數和字元串,復雜的結構,
API函數調用,函數參數號,輸入段等等。分析可以使二進制代碼可讀性增強,使調試變得容易以及減少錯誤中斷和崩
潰的可能性。它不是面向編譯器的,可以於任何的PE程序工作得一樣好。
對象掃描器。
OllyDbg掃描對象文件或庫(都是按OMF和COFF格式的),釋放代碼段並在被調試的程序中定位它們。
IMPLIB掃描器。
一些DLLS只按照序數輸出它們的Symbols,這對於人的眼睛來說是沒什麼意義的。如果你有相應的輸入庫,OllyDBg能
把序數翻譯回symbolic名稱。
全UNICODE支持。
幾乎所有對ASCII串可用的操作對於UNICODE串都是可用的,反之亦然。
名稱。
OllyDbg顯示所有輸入和輸出的symbols.它按照Borland格式把名稱從調試信息中提取出來。對象掃描器允許識別庫函
數。你可以增添你自己的名字和注釋。如果某些DLL中的函數是通過序數輸出的,你可以附加一個輸入庫到OllyDbg中
,以恢復原始名稱。Ollydbg也可識別許多常數的symbolic名稱,像窗口消息,錯誤代碼或位段,然後在call中把他們
解碼為已知的函數。
已知函數。
OllyDbg能通過名稱識別大約2100個被C和Windows API頻繁使用的函數,並能解碼他們的參數。你可以添加你自己的描
述,或者分配預先定義的解碼。你可以在已知函數上設置logging breakpoint(記錄斷點)並把參數記錄到日誌中。
堆棧。使用簡單的試探,OllyDbg嘗試識別返回地址和堆棧幀。
但注意,他們有可能是上一個call所留下的殘余(譯者:破解的時候有時反而需要!)。如果程序在已知的函數上暫
停,堆棧窗口解碼實參。 搜索。大量的可能性!搜索命令(確切的或近似的),命令號,常數,二進制或者文本串(
不必是連續的),搜索參考地址的所有命令,常數或者地址范圍,搜索名稱,在整個分配的內存中搜索2進制序列。如
果發現多個地址,你可以在他們中間來回的切換。
資源。
如果Windows API函數參考資源串,OllyDbg可以釋放並顯示它(譯者:w32dsam)。對其它類型的只是限制在列出附屬
資源,轉儲和2進制編輯。 斷點。OllyDbg支持所有種類的常規斷點:簡單斷點,條件斷點,中斷並把信心寫到日誌文
件(例如,函數的參數),寫或訪問的內存斷點,硬體斷點(只能ME/NT/2000)。在hit trace(命中追蹤)的極端例
子下,INT3中斷可以設置在模塊的每個命令下。在有500MHz處理器的Windows NT環境中,OllyDbg可以每秒鍾處理
5000個以上的中斷。 監視和查看工具。Watch是一個每次程序暫停時候都被計算的表達式。你可以使用寄存器,常數
,地址表達式,布爾和任何復雜的代數操作符。你可以比較ASCII和UNICODE串。Inspector是包含2個索引並能以一個
2維表格的形式表示的watch,它可以解碼數組和結構。
執行。
你可以一步步的執行程序,或者進入子過程,或者立刻執行它。你可以運行程序知道返回或者運行到指定的地方,或
者連續執行。當程序運行時,你仍然對其具有完全的控制,而且你還可以查看內存,設置斷點,甚至在運行時實時調
整代碼。而且,在任何時候你都能暫停和重啟被調試的程序。 命中追蹤。Hit trace顯示到目前為止,那些命令或進
程被執行了,它允許你檢測你代碼的所有分支。Hit trace在每個指定的命令上下斷點,並在命令被執行後(被命中
Hit)移去它。
運行追蹤。
Run trace一步一步執行程序,並把執行結果摘要到一個大的緩沖中。這個摘要包括所有的寄存器(除了SSE),旗標
和線程錯誤,消息和已知函數的解碼後的參數。你可以保存原始命令,這樣可以使調試自改變程序變的容易。你可以
指定條件以停止追蹤。或者按地址范圍,表達式或者一個命令。你可以把run trace的結果保存到一個文件中並比較兩
個獨立的Run。Run trace允許回朔追綜,並詳細分析大量命令執行的經過。
摘要。
摘要計算某條指令在run trace緩沖區中被列出了多少次。用摘要,你可以知道哪部分代碼消耗了最多的處理時間。
補丁。
內建的匯編器自動選擇最短可能的代碼。二進制編輯器同時以ASCII,UNICODE和16進制的形式同步顯示數據。固有的拷
貝粘貼功能仍然是可用的。自動備份允許撤銷改變。你可以直接修改後拷貝到可執行文件中去,OllyDbg甚至還能適當
調整你做的改變。
自解壓文件。
當調試自解壓文件時,你常常想要跳過自解壓然後停在原始程序的入口點。OllDbg完成SFX(自解壓)追蹤,它嘗試這
定位真實的入口。SFX追蹤常常對於加了保護的自解壓程序是無能為力的。發現入口(或者指定)後,OllyDbg可以更
快速和可靠的跳過解壓程序。 插件。通過編寫你自己的插件,你可以給OllyDbg添加功能。插件存取所有重要的數據
結構,添加菜單和快捷方式到存在的OllyDbg窗口並使用超過100個插件API函數,這些插件API有詳細的文檔說明。
UDD。
OllyDbg存儲所有程序或模塊相關信息到單個文件並在模塊裝載的時候讀入。這些信息包括標簽,注釋,斷點,監視,
分析數據,條件等等。 定製。你可以定製字體和顏色方案。
❷ 如何右鍵open witeh ollydbg
最簡單的方法是啟動OllyDbg,點擊File|Open,然後選擇你想調試的程序。程序需要命令行參數輸入對話框下方的文本欄。
重新開始調試最後一個程序的快捷鍵是Ctrl+F2,並且OllyDbg使用相同的參數。
你也可以點選歷史記錄。把程序拖入OllyDbg也可以開始調試。
當然,當啟動OllyDbg時,你在命令行中也能指定被調試的程序名和參數。比如:
你可以創建桌面快捷方式指向OllyDbg,選擇屬性,到快捷方式,把程序名加入目
標欄。每次你雙擊這個快捷圖標,OllyDbg自動裝載被調試程序。
你可以attach OllyDbg到某個正在運行的進程。點擊File|Attach,從列表中選擇
該進程。注意:當你關閉OllyDbg,這個進程也會終止。不要試圖attach系統進程
,這很可能使系統完全SI機。
❸ 有關ollydbg ,高手請進
直接CTRL+F,輸入JNZ 617A09就找到了,下面也一樣
❹ 關於ollydbg命令行
在ollydbg的左下角,前提是你要有命令行的插件。
❺ 為什麼我下的Ollydbg沒有命令行
可能沒有啟動DOS環境的DEBUG命令。
❻ Ollydbg 是如何將地址轉換成HEX數據的
TI的ccs默認生成的是.out格式的文件,而很多應用場合往往需要的是純二進制代碼,TI提供了一個小工具HEX2000能幫助實現格式的轉化,具體的說明還是請參看TMS320C28x Assembly Language Tools手冊。這里簡單的說明下該工具的使用:
1.hex2000是在ccs安裝目錄下的。
2.hex2000 轉化工具支持多種輸出格式,至於用那種格式,通常是由所用的燒寫器來決定的。常見的有:
Ascii hex: 這種格式其實是會將所有的code轉化為字元形式,比如本來的0x3132, 它就用'3' '1' '3' '2'來表示,當中有空格,這種格式比較使用通過串口等工具來更新數據。
binary:-b 選項,純二進制格式。它還支持intel,motorola-s, ti-tagged, tektronix等格式。
3.hex2000 有memory width的概念,輸入文件的(--memwidth),一般來說都是16bit的(因為編譯出來就是這樣的),輸出格式--romwidth,可以指定為8或者16(有些格式不支持16)。如果輸入16,輸出是8,hex工具會自動生成兩個文件,一個放低8位的數據,一個放高8位的數據。當然你也可以自己制定這兩個文件的名字。
4.你也可以指定輸出文件的位元組順序,默認是little-endian,也可以通過-order LD和-order MS來指定大小端順序。
5. -image選項:打開該選項,系統會產生一個和你在roms中指定大小一樣的文件,不足部分用fill的值來替代。如果沒有用該選項,系統只會產生一個實際大小的文件,比如你想要的空間是0x300000-0x330000,但這裡面只有0x300000-0x310000空間有數據,那系統只會產生這部分的數據,後面部分不會填0;同事如果不使用-image選項,那如果0x300000-0x330000中僅有兩個數據塊,且這兩個數據不連接,不適用該選項則會出現一個壓縮的數據塊,且僅有這兩個數據塊和的outfile。
6.hex2000工具,可以通過命令行通過一句話將所有的參數和輸入輸出寫在一起來運行,比如:hex2000 -t firmware -o firm.lsb -o firm.msb
也可以通過ROMS指令寫一個腳本文件,這種腳本文件的好處是可以編寫比較復雜的要求,而且易於修改。下面是我的一個參考例子:
1.mcbsp_sd_demo.out
2.-image
3.--memwidth 16
4.--map mcbsp_sd_demo.map
5.--order=LS
6.-b
7.-fill FFFFh
8.ROMS
9.{
10.TEXT: org = 0x00600000, len = 0x2800, romwidth = 8
11.files = {mcbsp.bin}
12.}