星期五, 5月 14, 2010

Jquery annotation plug in

http://code.google.com/p/jquery-image-annotate/
A jQuery Image Annotation plugin that can create Flickr-like comments on images embedded in web pages.
This plugin works with jQuery 1.2.6 and 1.3.2.
Full details on this plugin's usage can be seen in this blog post. Your can also see a live demonstration of the plugin.

星期一, 5月 10, 2010

星期五, 5月 07, 2010

[Tool] JSON Viewer

現在ajax常會用到json作為資料格式,有個工具來檢查json格式是否有錯誤是非常方便的。 
JSON Viewer
Project Description
The JSON Viewer package is a set of 3 viewers available in the following flavors:
1. A standalone viewer - JsonView.exe
2. A plugin for Fiddler 2 (http://www.fiddler2.com/) - FiddlerJsonViewer.dll
3. A visualizer for Visual Studio 2005 - JsonVisualizer.dll

The viewer supports plugins to allow you to customize the way JSON objects are displayed. Sample plugins
are provided within the source.

[Javascript] Date Function

剛好專案需要一些javascrip時間格式的判斷,上了Google大神找到這個資源。

Date Function Description:
These functions are very useful when dealing with any type of date fields.
They use the same format strings as the java.text.SimpleDateFormat class, with a few minor exceptions.
Functions include:
  • isDate() - Check if a date is valid
  • compareDates() - See if one date is greater than another
  • formatDate() - Output a Date() object in any format
  • getDateFromFormat() - Parse a date string and return time in ms representing date object

Reference : Date Functions

星期一, 5月 03, 2010

轉Draren總結的ollydbg v1.09d 中文版使用說明

一點一滴的積累,也就會了.

之所以選項ollydbg

1.我的os是winXP,無法使用trw2000,而softice裝了多次均未成功,還顯示藍色當機多次.鬱悶.

2.友好的gui界面,不像softice.可以邊幹活邊聽歌,不像softice,把整個os都掛起了.多用兩次,連時間都不知道了.

3.強大的記憶體檢視功能,再不用什麼-d了,而且跳轉方便,爽!一目瞭然.

4.強大的右鍵功能表功能

ollydbg的界面:

功能表:

文件:
1.其中包括該功能表的下部有上次開啟的紀錄,該紀錄儲存有上次未清除的斷點.
2.附加.對付那些Anti-Debug程序.先執行程序,再執行od,文件-->附加.
檢視:
1.執行模組(Alt+E),檢視程序使用的動態連接庫
2.檢視斷點.Alt+B
偵錯:
1.執行(F9)載入程序後,執行!
2.暫停(F12)
3.單步進入(F7)遇見CALL進入!進入該子程序.
4.單步跳過(F8)遇見CALL不進去!
5.執行到返回(ALT+F9)就是執行到該子程的返回語句

ollydbg的16進制編輯功能.類似與hiew,hex workshop

檢視-->文件

二進制文件編輯功能.檢視-->文件,開啟的文件是二進制顯示.選要改變的機器指令,空格,修改,右擊-->儲存.

ollydbg的四個區域

左上角是cpu視窗,分別是位址,機器碼,彙編程式碼,註釋;註釋增加方便,而且還能即時顯示函數的使用結果,返回值.
右上角是暫存器視窗,但不僅僅反映暫存器的狀況,還有好多東東;雙按即可改變Eflag的值,對於暫存器,指令執行後發生改變的暫存器會用紅色顯示.
cpu視窗下面還有一個小視窗,顯示當前操作改變的暫存器狀態. 不錯;
左下角是記憶體視窗.可以ascii或者unicode兩種方式顯示記憶體訊息;
右下角的是當前堆疊情況,還有註釋啊.

F3選項開啟程序.

使用

F9執行程序.

下斷點:

1.對函數下下斷點

在程式碼區右擊-->搜尋-->當前模組中的名稱(ctrl+N),在跳出來的對話視窗中選項需要下的斷點函數.->右擊->搜尋匯入參考(enter),按F2下斷點.如果有多個地方使用了該函數就這樣操作。

2.在需要的地方下斷點 F2

增加註釋:

在程式碼區第四列,右擊-->註釋

檢視記憶體位址

右擊記憶體位址列-->前往-->輸入要檢視的記憶體位址

在函數lstrlen的註釋的上方,有一個變數string,當執行到該函數的時候,string後面會出現lstrlen函數的參數位符串.在實際使用中一般是輸入的字元串.(很好用哦)

類似的還有lstrcmp,上面有string1,string2能夠顯示將要比較的兩個字元串.

另外,一般在執行getwindowtext等函數後,右邊暫存器列,eax會顯示函數的返回值,即取到的內容.同時記憶體中也會有顯示.

在反彙編中選一條指令,如果其中有用到記憶體中的位址,右擊-->在轉存中跟隨-->直接常數
此時記憶體位址會顯示指令中引用到的記憶體字元

拷貝功能十分強大.直接選項要拷貝的內容.右擊-->複製-->文件or記事本

ollydbg的條件斷點可以按暫存器,儲存於器,消息(必須是消息的數位,如wm_command就是111)等等設斷,非常強大,一旦設了之後記錄到文件中,下次restart程序還能用,不用拿筆記,很方便。

顯示跳轉路進:
選項-->偵錯設定-->cpu頁-->顯示跳轉的方向,顯示跳轉的路徑,如果跳轉沒有實現則顯示灰色路徑。在cpu視窗中,機器碼的前面顯示">"符號.同時,在cpu視窗下的小縫中會顯示跳轉路徑,從何跳轉而來.右擊-->前往...一般都是條件跳轉,上面的內容就是比較的地方啦。:)

跟蹤功能:
選項-->偵錯跟蹤-->跟蹤:設定執行跟蹤的快取大小.越大越好.
偵錯-->開啟或清除執行跟蹤
然後我們就可以用CTRL+F11或CTRL+F12開啟「跟蹤進入」和「 跟蹤跳過」了。當我們暫停程序的時候,可以用小鍵碟上的「+」,「-」,「*」來控制跟蹤功能了。
其中,「跟蹤進入」和執行類似,但是記錄所有指令以及暫存器變化。並且會自動進入所有的CALL中。
「 跟蹤跳過」和「跟蹤進入」類似,但是不進入CALL
「+」用來顯示跟蹤緩衝區中的下一條指令
「-」用來顯示跟蹤緩衝區中的上一條指令
「*」用來發返回當前指令

讓OD顯示MFC42.DLL中的函數
開啟偵錯-->選項匯入庫-->增加-->選項MFC43.LIB加入.重新載入MFC程序,就可以看到call後面的api函數了.

動態暫停以messagebox為例)
先執行目標程序,再執行od,選項文件-->附加.在目標程序執行出現對話視窗時,切換至od,F12暫停.

字元串參考:
在彙編程式碼區,右擊-->搜尋-->字元參考

更改二進制文件:

方法1.檢視-->文件,開啟文件,找到欲修改的偏移,使用機器碼修改,然後右擊儲存文件.缺點是需要使用其他軟體來獲取偏移位址.

方法2.直接在反彙編程式碼區更改,這時可以使用彙編程式碼更改,不用記機器碼.完了.右擊-->複製到可執行文件-->儲存文件.很是方便哪!

關於虛擬位址和偏移位址:
ollydbg果然強大,太強大了,在欲修改的指令處右擊-->複製到可執行文件,彈出視窗中游標所在行即是欲修改的指令所在的偏移位址,右擊-->彙編,直接修改彙編指令,不用記機器碼,又不用虛擬位址到偏移位址的轉換.改完後儲存文件.爽丫!
olldbg 下怎麼下消息斷點?

如在softice 中下 BMSG 0084 WM_DESTROY,在olldbg下該怎麼做?

不如下斷 SendMessage,PostMessage,程序中的消息不一定都經過消息循環。

Ollydbg下消息斷點的一個方法

原文:
SoftIce can trace application messages. And Olly?
by FuZzYBiT

SoftIce can trace application messages. And Olly?
And so does OllyDbg. That』s a very 「hidden feature」. I guess it is sooo useful.
1. Open program
2. Names window [CTRL+N in CPU Window]
3. Find User32.TranslateMessage API
4. right click/FindReferences
5. conditional breakpoint [SHIFT+F4]
6. expression: MSG
7. Log function arguments: Always
If you cannot find it, try right click SEARCH FOR-> ALL INTERMODULAR CALLS.
But if I want to trap a specific message like WM_COMMAND?
To Log Only WM_COMMAND
Do it in this fashion:
1. Open program
2. Names window [CTRL+N in CPU Window]
3. Find User32.TranslateMessage API
4. right click/FindReferences
5. conditional breakpoint [SHIFT+F4]
6. Condtion box: MSG==WM_COMMAND
7. Log function arguments: On Condition
If you can』t find User32.TranslateMessage API, do the same as above.

翻譯:

SoftIce 能夠跟蹤應用程式的消息,那麼OllyDbg呢?
by FuZzYBiT

OllyDbg也是可以的,那是一個非常"隱蔽的功能"。它是如此的有用。
1. 開啟程序
2. 名字視窗[ 在CPU視窗中按CTRL+N ]
3. 搜尋 User32.TranslateMessage API
4. 右擊/FindReferences(搜尋參考)
5. 下條件斷點 [SHIFT+F4]
6. 陳述式: MSG
7. 記錄函數參數:永遠

如果你不能找到它,試試右擊滑鼠,然後搜尋全部模組中的名稱。
但是如果我想要捕捉一個特定的消息如WM_COMMAND呢?
只對WM_COMMAND記錄
用這個方法做:
1. 開啟一個程序
2. 名字視窗[ 在CPU視窗中按CTRL+N ]
3. 搜尋 User32.TranslateMessage API
4. 右擊/FindReferences(搜尋參考)
5. 下條件斷點 [SHIFT+F4]
6. 條件框:MSG==WM_COMMAND
7. 記錄函數參數: 條件滿足時
如果你不能找到User32.TranslateMessage API,像上面那樣做。
以下指令適用於 OllyDbg 的指令行插件 Cmdline.dll(顯示於程序的插件功能表中)
聆風聽雨整理
===============================================================
指令行插件支持的指令

CALC
判斷陳述式

WATCH
增加監視陳述式

AT
在指定位址進行反彙編

FOLLOW
跟隨指令

ORIG
反彙編於 EIP

DUMP
在指定位址進行轉存

DA
轉存為反彙編程式碼

DB
使用十六進制字元格式轉存

DC
使用 ASCII 格式轉存

DD
轉存在堆疊格式

DU
轉存在 UNICODE 格式

DW
使用十六進制字詞格式轉存

STK
前往堆疊中的位址

AS
(AS + 位址 + 字元串)
在指定位址進行彙編

BP
進行條件中斷(有條件的斷點)

BPX
中斷在全部使用 (Call)

BPD
清除全部使用中的斷點

BC
清除斷點

MR
記憶體斷點於訪問時

MW
記憶體斷點於寫入時

MD
清除記憶體斷點

HR
訪問時進行硬體中斷

HW
寫入時進行硬體中斷

HE
執行時進行硬體中斷

HD
清除硬體斷點

STOP
停止執行程序偵錯

PAUSE
暫停執行程序偵錯

RUN
執行程序進行偵錯

GE
執行和通過例外

SI
單步進入 Call 中

SO
步過 Call

TI
跟蹤進入直到位址

TO
跟蹤步過直到位址

TC
跟蹤進入直到滿足條件

TOC
跟蹤步過直到滿足條件

TR
執行直到返回

TU
執行直到用戶程式碼

LOG
檢視記錄視窗

MOD
檢視模組視窗

MEM
檢視記憶體視窗

CPU
檢視 CPU 視窗

CS
檢視 Call 堆疊

BRK
檢視斷點視窗

OPT
開啟選項設定視窗

EXIT
結束 OllyDbg

QUIT
結束 OllyDbg

OPEN
開啟一個可執行文件

CLOSE
關閉可執行文件

RST
重新執行當前程序

HELP
檢視 API 函數的說明

OllyDbg套用方法大全--請補充!

所有文章均為散落在DFCG論壇各處或其他網路文集的傳統。
雪很冷搜集整理於學習筆記或與朋友討論之中


Ollydbg 中斷方法


Quote:
Originally posted by dong at 2004-6-1 10:29 PM:
我問個問題
在od中怎麼下斷點呢??
現在有的程序一點註冊就沒反映了
這樣的怎麼下斷點呢??
能介紹下什麼情況下什麼斷點嗎?
在轉存中下硬體訪問->Word"斷點,下斷之後,怎麼取消!
9398944(老菜鳥) 11:09:59
alt+D 按H 然後移除


這個沒有萬能的方法,只能視具體情況而定,就我的經驗而言:
第一步,反彙編找有用訊息,有時候雖然點擊註冊按鈕後,沒有任何反映,但軟體也許包含了可用的訊息,比如「未註冊」,「已註冊」等等之類的,都可用做斷點的。
第二步,如果反彙編也找不到有用訊息,如果用OD可以下HMEMECPY斷點,在每個使用的函數上下斷,雖然這個法子太笨,但我試過,幾乎有70%以上的機會可找到斷點,找到斷點後再慢慢跟吧!這只是個人的看法,關鍵只要找到斷點,有什麼辦法都無所謂。
在指令行下bpx hmemcpy斷點,然後Enter鍵,在每個使用的函數上下斷。
有的程序甚至無法用API中斷,可以在OD載入程序後上下翻動反彙編視窗檢視字元串參考下斷,在反彙編視窗裡直接找到的,右鍵搜尋那裡找不到


轉發Ollydbg 中斷方法淺探-各種斷點常識知識

Ollydbg 中斷方法淺探
--國慶節小禮

Ollydbg是一個新的32位的彙編層偵錯軟體。適應於windows98、me、2000、xp和2003操作系統。由於他具有圖形視窗界面,所以操作方便、直觀,是cracker的好工具。
由於Ollydbg沒有了TRW2000的萬能斷點,所以許多的新手感覺到用Ollydbg斷點不好找。現在我來的說說Ollydbg下中斷的幾種方法。本人是個菜鳥,水準有限,可能不能完整的寫出來,也可能存在錯誤。請大家指正。
我所表述的是Ollydbg v1.09d中文版,其他版本和英文版下自己參考。

第一 尋常斷點
Ollydbg中一般下中斷的方法,就是在程序的位址處用滑鼠選項這一行。然後按F2鍵,這時被選項的那一行的位址會變成別的顏色,就表示這個位址處下了中斷。然後執行程序時只有到這個位址處就會被Ollydbg中斷。
這個方法用的比較多,所以把他稱作尋常斷點。
如果有指令行插件,就可以在指令視窗中輸入BPX xxxxxxxx 下斷點。
優點:只要自己懷疑是重要的程式碼處都可以下這種下斷點,不受條件的限制,所以方便實用。
缺點:如果不知道程式碼功能下斷點具有盲目性。

第二 API斷點
Ollydbg中一般下API中斷的方法,有二種。
1. 在程式碼視窗中點滑鼠右鍵,出現功能功能表。在[搜尋]選項項下有〔當前模組的名稱〕和〔全部模組的名稱〕倆項,選項其中的一項就開啟了程序使用API的視窗,在這個視窗中選項你要跟蹤的API函數名。雙按這個函數就能到程序的使用位址處。然後用F2下中斷。也可以在API視窗中選項需要跟蹤的函數點滑鼠右鍵出現功能功能表,選項〔在每個參考設定斷點〕。同樣下了斷點。
建立捷逕:Ctrl+N
2. 在指令行視窗中輸入BPX API函數名或者BP API函數名 後Enter鍵。這時出現了所有使用這個函數的位址的視窗,在這個視窗中可以看到使用這個API函數的位址已改變了顏色。說明下好了斷點。
說明一下:BPX一般中斷在程序使用API的位址處。BP會中斷在API的寫入位址處。二這有所不同,根據需要選項。
優點:這種方法下的斷點是針對每一個API函數的,所以具有明確的目的。
缺點:關鍵的API函數不容易找到。所以有時下的斷點沒有作用。

第三 記憶體斷點(跟蹤關鍵資料的斷點)
Ollydbg中的記憶體斷點相當於TRW中的bpm 斷點。
下斷點的方法是:在程序執行中斷時選項界面中的轉存視窗,用游標選項記憶體中的一段關鍵資料(顏色會改變),然後右擊滑鼠出現功能功能表。選項〔斷點〕項,其中有二個選項〔記憶體訪問〕和〔記憶體寫入〕。
〔記憶體訪問〕斷點是程序執行時要使用被選項的記憶體資料時就會被Ollydbg中斷,根據這個特點在破解跟蹤時只要在關鍵資料記憶體中下中斷就可以知道程序在什麼地方和什麼時候用到了跟蹤的資料。對於一些複雜算法和流程變態的算法跟蹤有很大的說明 。從破解上講,一個註冊碼的產生一定是由一些關鍵資料或者原始資料計算來的。所以在記憶體中一定要用到這些關鍵資料。那麼〔記憶體訪問〕斷點就是最好的中斷方法。
〔記憶體寫入〕斷點是程序執行時向被選項的記憶體位址寫入資料時就會被Ollydbg中斷。根據這個特點在破解時可以跟蹤一個關鍵資料是什麼時候產生的,產生的程式碼段在那個地方。所以一個關鍵的資料如果不知道他的由來就可以用〔記憶體訪問〕斷點搜尋計算的核心。
記憶體中斷的下斷點還有另外的一種方法:程序執行時如果知道關鍵的資料,比如我們輸入的試驗碼、程序產生的序列號等。這時在記憶體中一定存在這些資料。用Alt+M開啟記憶體視窗,在這個視窗中搜尋知道的關鍵資料。用游標選項這些資料同樣下記憶體中斷,這種方法更容易找的關鍵的資料。
優點:斷點是直接面向關鍵資料的,所以比較容易到核心部分。
缺點:記憶體斷點重新執行後會消失,干擾比較多。

第四 硬體斷點(跟蹤關鍵標誌的斷點)
硬體斷點是Olldbg所特有的斷點,他不會因為重新執行就銷毀,只要不移除。跟蹤這個程序時就有效。但他在98系統下會不起作用。
硬體斷點是根據關鍵標誌回逆到關鍵程式碼的好方法。下中斷的方法和記憶體斷點的方法相同,有三個方式〔硬體訪問〕、〔硬體寫入〕、〔硬體執行〕。一般用前2個。他也同樣有記憶體斷點的特性,所以可以用記憶體斷點的地方也可以用硬體斷點。這裡介紹利用他來跟蹤註冊標誌的使用方法,一般軟體的註冊都用到了標誌比較。即在記憶體位址中有一個標誌,在判斷是不是註冊時比較標誌的值。不同的值表示不同的註冊狀態。這個標誌的位址一般比較固定。根據這個特點可以下硬體斷點來跟蹤標誌位是什麼地方被標誌的。
方法:在轉存視窗中選項到標誌存放的記憶體位址處,然後選項標誌值。下〔硬體寫入〕中斷(根據標誌的字元下不同的長度)。重新執行程序你會發現Ollydbg會不斷的中斷在這個標誌的記憶體位址處。在功能功能表的〔偵錯〕選項下選項〔硬體斷點〕就開啟了硬體斷點的視窗,在這個視窗中選項〔跟蹤〕,這時轉存視窗就會來到被下中斷的記憶體位址處。執行程序跟蹤記憶體位址中的值就會知道被賦標誌的程式碼,跟蹤到計算的核心。〔硬體訪問〕的使用可以知道程序在執行時多少地方用到了這個註冊標誌。對於破解複雜效驗的程序十分的有效。
直接在指令欄裡下bh ****硬體斷點

其他你感興趣的文章

Related Posts with Thumbnails