显示标签为“Ollydbg 2.01 alpha 4 試用報告”的博文。显示所有博文
显示标签为“Ollydbg 2.01 alpha 4 試用報告”的博文。显示所有博文

2011年8月20日星期六

Ollydbg 2.01 alpha 4 試用報告(四):選項設置(5)


Ollydbg 2.01當中分析選項沒有什麽變化,自己設置一下就可以了.

我們看看新增加的目錄選項,在0llydbg 1.01當中,目錄選項是在界面選項窗口的,現在它吧界面選項和調試選項一起合並為選項

如圖:

你可以設置你的udd文件目錄的路徑和插件文件夾路徑,這裡還多出了一項,設置你的API幫助文件的路徑

設置之後再Ollydbg 2.01 中非常有用,在一個API函數地址的地方右鍵會出現一個菜單選項(Help on API function)

如圖



選擇之後,你就可以在Win32.hep中非常容易的看到它的函數信息了

到這裡Ollydbg 2.01 alpha 4 試用報告系列文章告一段落了,如果你還想繼續瞭解Ollydbg的情況,請繼續關注我的部落格

http://0mblogger.blogspot.com/ 主部落格
http://0mblogger.blog.com/ 鏡像一
http://lypwell.pixnet.net/blog 鏡像二

2011年8月19日星期五

Ollydbg 2.01 alpha 4 試用報告(四):選項設置(4)

Ollydbg 2.01 調試選項相對于Ollydbg 1.01版也多了很多,這些改變給我們多了許多選擇的餘地,先看一下Debugging Options,這裡面最大的特色是單步中斷我們可以使用硬件斷點和運行相關的操作函數的選擇,

看圖
一般情況下,單步走的時候其實就是設置INT3斷點,如果你選擇了使用單步硬件斷點(Use HW breakpoints for stepping)就可以在單步中避免INT3檢測了.

調試程式時暫停程式其實也是設置斷點,這裡提供了在所有線程設置斷點和使用API函數DebugBreakProcess斷點,而結束程式時候選擇使用TeminateProcess 和ExitProcess來結束程式

還有一個就是備份用戶代碼(Auto backup user code),就是備份非系統代碼段,不知道這個怎麼用,有興趣的研究一下.

調試子選項當中,增加了一個重要的內容,就是增加了解析調試符號文件的功能,如pdb,dbg等數據,它的設置在調試數據(Debiggomg data)當中

如圖


這裡你可以設置三個目錄專門存放符號文件,還可以勾選訪問Microsoft Symbol Server非常方便下載符號文件了.

在Ollydbg 1.01版當中有一個選項是Event選項,在Ollydbg 2.01版把它細分為Start 和events ,選項上大致相同的.

調試設置的其他選項可以參考1.01版來設置.

2011年8月18日星期四

Ollydbg 2.01 alpha 4 試用報告(四):選項設置(3)

搞了半天才能發帖,在Blogger轉換為舊模板形式才能使用,不知道是什麽回事,昨天我們已經看到操作數形式了,下面我們來看看轉儲(dump)窗口的代碼形式

首先我們要知道轉儲窗口在哪裡,在CPU窗口左下角的子窗口就是轉儲窗口了,
這個窗口有三項,這個窗口根據你選擇的現實形式不同而不同
而在選項菜單中的轉儲就是針對這個窗口來設置選項的

Underline fixups 下劃綫修正

而在UNICODE 轉儲使用寬字串效果對比如下

不使用

使用


在ASCII顯示時候,有些字符是非顯示形式的,用"."來代替即是勾選Replace non-printable ASCII characters with dots

不使用

使用后

轉儲還有其他選項,自己去瞭解一下吧

由於選項卡當中選項很多,如果一一說明浪費時間,而且有些內容不是很重要,所以從明天開始只是選擇重要的來說明

2011年8月17日星期三

Ollydbg 2.01 alpha 4 試用報告(四):選項設置(2)

在代碼子選項助記符(Mnemonics)中,你可以選擇一些命令顯示的形式

    命令的形式(Form of string commands)

    第二個為返回時候解碼形式(Decode near returns as)是選用RETN韓式RET

    第三個為揭秘大小靈敏的16或者32位命令助記符形式(Decode size-sensitive 16/32-bit mnemonics like):

    最後一個是跳轉提示(Decode jump hits as)


在操作數(Operands)選項當中,有兩種顯示形式選擇,

    FPU堆棧的解碼形式(Decode top of FPU stack as:)

    16位SSE操作符的大小解碼(Decode size of 16-bytes SSE operands as:)


2011年8月16日星期二

Ollydbg 2.01 alpha 4 試用報告(四):選項設置(1)

    Ollydbg 2.01插件版因為是剛剛出來,還沒有繁體中文和簡體中文版,所以我們也來看看它的選項設置有什麽內容.

Code選項:
    在Ollydbg 2.01程式選項卡的最上端是代碼(Code)以及子類選項的助記符(Mnemonics)和操作數(Operands)以及轉儲(dump)、字串(strings)设置选项.在Code选项显示如下图:
    上面第一个提供了反汇编语法单选项(Disassembling syntax),这个提供了四种编译语言的语法选择形式,它的默认MASM是我们常用的显示形式,当然如果你习惯使用IDEAL或者HLA语言形式,你也可以选择他,如果你是Linux爱好者那你选择linux吧

Masm显示:

IDEA显示:
HLA显示:
Linux显示:

在Ollydbg 2.01中反汇编指令是默认大写字母形式的,如果你习惯小写形式勾选

效果:
默认的反汇编代码选项时,助记符(如PUSH CALL JUMP)和参数(如 EBP EAX,EBX)之间靠得很近,
我们可以勾选Tab between mnemonics and arguments
未勾选:

勾选后:

如果你想在两个参数之间加大距离,勾选Extra space between arguments
未勾选:
勾选后:

后面的选项:
Show default segments 显示默认段就是代码中"DS:"此类内容
Always show size of memory operands 总是显示内存操作数大小,就是指令中的"DWORD PTR"此类内容
Show NEAR jump modifiers 显示近距离跳转,就是在近跳转指令中增加"NEAR"
Show local module name 在指令中增加当前模块名称
Show symbolic addresses 显示符号地址,就是函数等名称地址
Demangle symbolic names 解码符号名

2011年8月15日星期一

Ollydbg 2.01 alpha 4 試用報告(三):快捷鍵設置

    上一節我曾經說過Ollydbg 2.01的斷點設置非常人性化,不但如此,應該說Ollydbg 2.01整個升級改動很大程度上就是人性化,老外升級歷時幾年時間,"細節決定成敗"可以說在這個程式上體現出來.

    在獲取升級的好處的同時,我也有點可惜,由於這次程式上升級改動非常的大,所以舊的插件都不可用了,這兩天試著修改ollyscript插件來支持Ollydbg 2.01版,就發現好多原本所使用的函數和結構枚舉數組都改變了,有許多因為細化后而消失了,其中腳本插件中有一個函數ESPRun使用了一個插件函數Sendshortcut,在新版中消失了,這個雖然可以使用新版插件函數Run來代替,不過始終有疑問.由於新版改動太大,修改OllyScript量大,無實力修改它支持新版,所以還是等OllyScript官方升級了.

    Ollydbg 2.01快捷鍵設置獨立出來成為一項菜單,Options - Edit Shortcuts打開:

    這個我們就可以非常簡單的設置快捷菜單了,設置完成后它在你的Ollydbg 2.01目錄當中生成一個shortcuts.ini文件,保存你個性化設置.

    快捷鍵支持的類別非常的多,最前面七個類別(用紅色標記文本)是OD主菜單項快捷鍵設置,主菜單當中的所有功能都支持了.之後是常用表快捷鍵Gener table shortcuts 和不同窗口使用快捷鍵Shoutcuts used by different windows,之後對轉儲(dump)的設置,針對轉儲的設置最多,這個從一個側面反映Ollydbg 2.01在這方面下的功夫非常大,比如像解碼結構(Dcode as structure)就是新功能.

    不但如此,在舊版的OD當中,寄存器不是單獨的窗口出現的,現在增加了這個窗口,設置它的快捷鍵在Shortcuts of Registers pane 中可以看見.

    希望瞭解更多快捷鍵的功能設置好好閱讀一下這個快捷鍵編輯器窗口了.

2011年8月14日星期日

Ollydbg 2.01 alpha 4 試用報告(二):.斷點(2)

如果你要刪除內存訪問斷點,右鍵-breakpoint-Memory delete,右鍵菜單中多出"Memory delete",這個就是刪除斷點得了
Ollydbg 1.01中條件記錄斷點是作為一個單獨的選項出現的,而在Ollydbg 2.01中,條件記錄斷點拆分到三種基本斷點形式當中,我們看看內存斷點的條件記錄斷點形式:
因為條件記錄斷點用得較少,不熟悉,以後再繼續.

三.硬件斷點
當我們使用INT3斷點和內存斷點下斷不了的時候,經常用到硬件斷點,右鍵-breakpoint-Hardware
跳出的對話框與內存斷點的不太相同
除了除了中斷形式之外執行斷點(Execution)訪問斷點(Access)寫入斷點(Write)外,非常明顯的顯示四個硬件斷點在對話框中,我們可以選擇索引1至4個索引.

四.斷點窗口

在Ollydbg 1.01中,我們只可以看到INT3斷點的窗口,而無法知道我們設置了多少個內存斷點和硬件斷點了,現在Ollydbg 2.01中可以非常清晰的看到了,在View菜單中
分別有INT3 breakpints 和Memory breakpoints 和Hardware breakpoints菜單項,打開它我們就可以很容易的看到各種斷點情況了,

INT3斷點窗口

內存斷點窗口

硬件斷點窗口

最後,總結Ollydbg 2.01的斷點特點-非常的人性化,相對于Ollydbg 1.01來說,非常的人性化

2011年8月13日星期六

Ollydbg 2.01 alpha 4 試用報告(二):.斷點(1)

大多數玩過破解的人都知道,Ollydbg 1.01有三種斷點類型,一種是INT3斷點,一種是硬件斷點,一種是內存斷點,隨便找個程式Ollydbg 2.01中有什麽來看看這三種斷點有什麽不同.

一.INT3斷點
在Ollydbg 1.01中,下這個斷點有兩種形式,一種是直接用快捷鍵F2來下斷,另一種是在CPU窗口中右鍵-斷點-切換這種形式來下斷.效果如圖:

而在Ollydbg 2.01中實驗,直接按F2,或者也是右鍵-breakpoint-toggle效果如下:
效果一樣.

二.內存斷點

內存斷點也是一個常用的斷點形式,我們在Ollydbg 1.01中總是用右鍵-斷點-內存訪問/內存寫入這兩種形式的斷點:

很可惜,在OD當中什麽也沒有顯示出來,假如截個假圖也看不出,呵呵.

而在Ollydbg 2.01當中可以明顯表示出我們下了斷點:

我們看到0044d06e這一行,在Hex dump可以看到顏色變紅了,這個就是Ollydbg 2.01顯示內存斷點改進的地方.

再看看它的右鍵菜單:
我們內存斷點的選項變成了Memory 和 Memory log,這兩個選項就是進行下內存斷點和內存記錄斷點的地方,在Ollydbg 1.01時除了命令行菜單中沒有這項的.

按Memory進去看看:
三種斷點形式!讀訪問斷點Read access,寫訪問斷點Write access,執行斷點Execution,很方便的下三種斷點,而且如果你暫時不想使用選擇Disabled,在CPU中斷點地址的顏色變成黃色的了


2011年8月12日星期五

Ollydbg 2.01 alpha 4 試用報告:.Net程式調試

拿到最新版的Ollydbg 2.01 alpha 4 之後,試用了它的功能,Ollydbg作者升級它可謂精益求精,經過幾年的升級現在才開始支持插件,Ollydbg在各方面有了很大的提升,而且有些佈局上也做了較大的改變,今天我簡單的試用了一下.Net程式調試,總體感覺一個字-爽!

先拿一個沒有混淆的.Net程式來調試
程式默認暫停在系統的入口:
7900B183  /$  55            PUSH EBP                                 ; INT mscoree._CorExeMain(void)

記住無論什麼樣的.Net程式都是暫停在這個地址滴.

我對.Net調試不是很熟悉,所以我試用go to-Expreession命令直接來到這個程式的code段,這裡就有個驚喜給我們.

哈哈,看到下面的匹配標籤Matching labels,以後我們下斷點的時候可以直接到達斷點位置了,而且,它的自動匹配功能到達函數非常方便.

我們輸入00402000,這個程式的Text段得地址:

00402000   .  83B10079      DD 7900B183
00402004   .  00000000      DD 00000000
00402008  /.  48000000      DD 00000048                              ; cb = 72.
0040200C  |.  0200          DW 2                                     ; 


再往下拉,可以看到激動人心的IL匯編指令了:


CPU Disasm
Address   Hex dump          Command                                  Comments
00402051  /$  02            ldarg.0
00402052  |.  14            ldnull
00402053  |.  7D 01000004   stfld components
00402058  |.  02            ldarg.0
00402059  |.  28 1100000A   call .ctor
0040205E  |.  00            nop
0040205F  |.  00            nop
00402060  |.  02            ldarg.0
00402061  |.  28 03000006   call InitializeComponent
00402066  |.  00            nop
00402067  |.  00            nop
00402068  \.  2A            ret

.Net程式調試還是比較麻煩的,不過我們可以結合IDA來調試,在Ollydbg 2.01中Edit-Select all,接著Ctrl + C複製出來,然後按照IDA中的字串可以搜索到每個函數所在地址,比如
我搜索MainForm_Load地址:
IDA中:
 .method private hidebysig instance void MainForm_Load(object sender, class [mscorlib]System.EventArgs e)
                                        // DATA XREF: sub_3560+411Fr
  {
    .maxstack 2
    nop
    ldarg.0
    ldfld    class [System.Windows.Forms]System.Windows.Forms.WebBrowser ArticlesRewriteAssistant.MainForm::previewWebBrowser
    ldstr    "about:blank"
    callvirt instance void [System.Windows.Forms]System.Windows.Forms.WebBrowser::Navigate(string)
    nop

找到about:blank字串,接著在複製出來的Ollydbg代碼中搜索它
00409CB4  /$  00            nop
00409CB5  |.  02            ldarg.0
00409CB6  |.  7B 73000004   ldfld previewWebBrowser
00409CBB  |.  72 C22C0070   ldstr "about:blank"                      ; UNICODE "about:blank"
00409CC0  |.  6F 0301000A   callvirt Navigate
00409CC5  |.  00            nop

看到了嗎00409CB4就是函數MainForm_Load的地址了.