顯示具有 Ollydbg逆向分析 標籤的文章。 顯示所有文章
顯示具有 Ollydbg逆向分析 標籤的文章。 顯示所有文章

2018年7月11日 星期三

Ollydbg 繁體中文 7/11更新

Ollydbg 繁體中文 7/11更新



小編把Ollydbg裡面一些煩人的功能給拿掉了,亂碼的東西也拿掉了。

其他的功能還留著。


GD下載點: https://drive.google.com/open?id=1_IpEFkoQQyiLlvC_O7gIrBoctcrezeX6

Mega下載點: https://mega.nz/#!AvhyhC7A!hvObGyVVrpNrtAuHLUEoD_NuaLME0U27R_oIM_8MA4w



請各位自行取用。
如有錯誤,請回報給小編。

2017年12月31日 星期日

Ollydbg 繁體中文下載

Ollydbg 繁體中文下載


想必有些人會想要中文版,但有些下載點已經失效了。
這邊我做了個備份下載點,請自取。

永久不刪下載點,除非雲端主機商他們自己關掉。

若該雲端主機商真的把檔案刪掉,本編會加緊在放其他超連結下載點。



GD下載點: https://drive.google.com/open?id=1YNOYU_5ICJMmzkIJU5z111jivEU2k2o_

Mega下載點: https://mega.nz/#!h24SFIKa!-F22TDj7wlVuy-iQjtiyMCgT9F1TBVhhauCOmfUeDzk




本網頁建立日期: 2018/1/1 元旦

祝大家新年快樂。

2017年9月13日 星期三

[逆向分析] 用ollydbg分析 簡單的c++程式

C++與C語言,寫起來有些相同,有些不同。

(其他大神,請略過)

逆向分析,有些會有多出來一些,有些又不同,其實都是大同小異。

我的原始碼


把執行檔丟到OD裡面。

不浪費時間了,我們直接來看所有字串吧。



找到很像很類似C語言的進入點,從這邊先判斷開始進入。

這邊你會覺得跟C語言的東西感覺又多了很多東西   沒錯~   這是一個標準輸入輸出的Stream
裡面包含了一堆東西,從這邊開始,會講一些細節的東西。



在各位的Dev C++的安裝目錄中會出現iostream的這個檔案,沒有副檔名,只是一個檔案,這個檔案裡面,寫著一堆程式碼,主要目的就是讓Std能正常被執行。

各位會發現cout 跟cin出現在裡面。
我們繼續順著他的方向繼續前進。


下圖,這個檔案就是他的來源。
其實這個並不好解釋,會牽扯到一堆更深層的細節,請自行觀察理解。


回到OD,我推測OD裡面這些程式碼,應該就是跟iostream檔案的這邊有一定的相關性。


以下這些都可以根據C語言的那些規則看出來。


下面的endl依照一般的執行,可以看出來是類似"\n",這樣的東西。
在OD裡面也可以判斷的出來。


前面在做前置作業,後面會跟著釋放,這可以很明顯的推測iostream裡面的東西在底層的運作方式。


簡單的深入探討iostream與ostream程式碼的檔案來源。


有著作權,請勿任意轉載。若要分享,請註明本篇來源。



2017年9月11日 星期一

[逆向分析] 用Ollydbg分析C程式碼 帶參數的函式

這邊先說好,程式會有另一區塊,也就是不像之前只有主程式,現在會增加一塊function出來

(其他大神 請略過)

這是原始碼


進入點開始,經驗立刻判斷,esp+0x1C內部為1

esp+0x18內部為2,分別是X與Y,堆疊內的數值也很明顯。


esp+0x4內部為2,esp內部為1,就是先一起帶入合併。


下一行  用call直接送入add這個function內部


經驗判斷 edx與eax 分別為 1跟2

相加後 丟給eax  然後回傳


最後得到的結果是3


帶參數的函式比較簡單  跟之前的無參數很類似,只是多了function這一塊。


有著作權,請勿轉載。若要分享,請註明本篇來源。


2017年9月10日 星期日

[逆向分析] 用Ollydbg詳細分析一個簡單的密碼驗證程序(含非法手段破解)

分析一個簡單的密碼驗證

(其他大神,請略過)

這是我的原始碼


直接到進入點內



按照經驗,esp+0x1C是變數a,裡面存放著16進位7B,就是123



scanf執行完,就會請你輸入數字,隨便輸入321看看。
按下enter,他就執行到00401536的位置。



cmp   eax,esp+0x1C
eax跟7B 做比較,從計算機已經得出數字了
eax 是我們輸入的321轉16進位變成141






兩者不同,就跳轉。
jnz short 0040154E
也就是這行



輸出false 資訊

jmp  short   main.00401516
代表跳回去剛開始輸入的地方
這段很好判斷成while(1),預設值為1,代表重複



可能有人會說,那如果不知道密碼隨便輸入,想要正確的顯示correct可以嗎?
當然可以,那這樣等於破解

那要如何破解?  這也很容易理解


比較一下eax與esp+0x1C  這兩者




jnz 意思是若不等於0,則跳躍,141與7B 兩者不同,回傳的是1,那麼就跳躍。
查看暫存器的EIP下面那邊  有一個Z  旁邊寫著0
如果不等於0,就跳轉,那這個狀態就是一定會跳轉。

如何讓他不跳轉?   很簡單,在Z的旁邊  把0 按兩下,他就不會跳轉了。



如果你覺得這樣還不夠,當然的,因為只是改變了0與1的變化。
這篇文章教的是如何破解,意思就是要打補丁。

這個程式打補丁很好理解。



在組合語言視窗上面,在jnz那行快按兩下,或是按空白鍵,即可彈出這個對話框。
直接把jnz的"n" 去掉,然後什麼都不做,再按下assemble按鈕
讓他變成等於的狀態



他自動會變成je,也就是兩者等於的時候才跳轉,因為我們的141不等於7B,所以就不跳轉了。

接著,我們就會看到他顯示correct的字樣,代表已經修改成功,但這還沒到patch的效果,畢竟都還沒匯出成一個修改過的執行檔。



在OD組合語言視窗內,隨意按滑鼠右鍵。如下圖。



然後再按右鍵,如下圖



按下去之後,他會顯示跟這張圖片一樣的對話框,



按下去後,他會顯示成這樣。
patch那個視窗就是你打的補丁。

我們著重再前面畫紅色圈圈的這個視窗





再次從這視窗中的隨意一處按下右鍵,選擇save file



儲存到你自己看得到的地方,儲存後,這樣就是成功打補丁了。




這招"不是"萬用如果是正常的密碼,他就會落入false的那行了。

有另一個方式,就是用nop。
在jnz那行,右鍵選binary-->File with NOPs



把jnz那行,全部Nop掉。



然後到這邊跟之前匯出的方式一樣,進行匯出。

這樣一來,不管輸入什麼,通通都會到correct那邊了。
下個指令就是jmp  short  main.00401574
跳到結束,也就是原始碼的break。
直接離開此程式。



這篇分析密碼到這邊結束。

有著作權,請勿任意轉載。若要分享,請註明本篇來源。



[逆向分析] 用Ollydbg 分析陣列

這次的分析,來研究一下陣列在OD裡面如何去跑

這是我的原始碼


進入點(廢話不多說),照經驗慣例直接進去。


我們會發現,在0040150E 那行  esp+0x1C 到esp+0x2C為止,總共5個,預設值都為0。


在esp+0x1C到esp+0x24三個裡面,都被各放了3個數字。

這邊mov  esp+0x8,eax
eax是1  放入0061FE88裡面,可以在原始碼那邊推測,a[0]就是從大括號內取出第0個的值,也就是1。


mov   esp+0x4,0x0   從圖片很明顯的可以看到已經放入了0061FE84裡面,對應的原始碼那邊,可以清楚看到。


最後printf出來,答案也明顯了。


小陣列程式分析到這邊為止。

有著作權,請勿轉載。若要分享,請註明本篇來源。

2017年9月9日 星期六

[逆向分析] 用Ollydbg詳細分析指標與值

看到指標,一堆人極大可能直接排斥,但是....

我用OD直接下去解釋,希望本篇文章能夠讓大家以最輕鬆的方式理解。
若要轉貼文章,請附加註明。(其他大神,請忽略此篇)



我們用OD開啟執行檔



依照之前的經驗,很快就能找到進入點。

mov    esp+0x18, 0x1
依照經驗,直接判斷為 變數a
lea eax,esp+0x18
這行 可以分析成 把1的位址 放入eax上
也就是把0061FEA8放入eax  暫存器可以明顯看到。



mov   esp+0x1C,eax
這行我們看圖去理解
0061FEA8 放入0061FEAC 堆疊內,很明顯的堆疊可以看出來。



lea   eax,esp+0x18
lea 指令就是取得位址
把0061FEA8位址放入eax
堆疊也就顯示了eax的內容



mov   esp+0x4,eax

可以看到堆疊內 0061FEA8放入0061FE94 讓他去顯示
然後你們可以看到下圖printf 輸出變數a的指標



mov   eax,esp+0x1C
把0061FEAC裡面的東西放到eax暫存器內



mov   eax,ds[eax]
這段程式碼很重要,eax原本為0061FEA8位址,ds的意義就是抽取eax位址裡面的值,放入eax他自己裡面,直接把原本的eax狀態給取代了。

從堆疊裡面可以看出來,簡單來說 eax的變化就是從0061FEA8變成數值1。



最後,輸出的結果為1



OD指標的分析到此結束。
看圖稍微理解就好了,不會難,希望各位都能夠藉由這篇小程式看懂指標的流程走向。

有著作權,請勿轉載。若要分享,請註明本篇來源。


Ollydbg 2.01 繁體中文版

Ollydbg 2.01 繁體中文版 Ollydbg 2.01 繁體中文版下載: Mega:   https://mega.nz/#!I2Qy1aQD!-T5zO3PaANjBHU73I4NlkY8SHMxRptbBV8TpmeFt1fo GD: h...