【逆向跟蹤】OllyDbg的條件斷點字串和檔案讀寫
阿新 • • 發佈:2019-01-24
大牛直接無視好了
網上關於設定字串斷點的文章不多,但是這個又是一個非常實用的功能。
拍磚請輕輕的
VCDebug
VCDebug 微軟VS自帶偵錯程式套件,對字串斷點的支援依然強大。
VC支援在斷點條件中使用字串比較函式。
ASCII字符集字串斷點設定方法:
strcmp(pzString, "DDLX_CHAR") == 0 stricmp(pzString, "DDLX_char") == 0 strncmp(pzString, "DDLX", 4) == 0 strnicmp(pzString, "ddlx", 4) == 0
UNICODE字符集字串斷點設定方法:
程式碼:
wcscmp(pzWString, L"DDLX_WCHAR") == 0 wcsicmp(pzWString, L"DDLX_wchar") == 0 wcsncmp(pzWString, L"DDLX", 4) == 0 wcsnicmp(pzWString, L"ddlx", 4) == 0
OllyDbg
OllyDbg的條件斷點
如獲取某個檔案讀寫了哪些內容,首先CreateFileA/W Ctrl+F9後eax獲取檔案控制代碼,然後
bp ReadFile [esp+4] = eax的值設定條件斷點,看讀此檔案後傳入哪個buf做了哪些處理。
OllyDbg的字串除錯也很好用
使用快捷鍵:Shift+F2設定條件斷點,在條件中輸入,od不支援正則所以必須把字串敲全了。
ASCII字符集字串設定方法:
STRING [eax] == "DDLX_CHAR" STRING [eax] == "DDLX_char" //不區分大小寫 STRING [eax] == "DDLX" //不區分文字長度
UNICODE字符集字串設定方法:
UNICODE [eax] == "DDLX_WCHAR" UNICODE [eax] == "DDLX_wchar" //不區分大小寫 UNICODE [eax] == "DDLX" //不區分文字長度
WinDbg
ASCII字符集字串斷點設定方法:
//全字串匹配,區分大小寫 bp 0041141d "r @$t1 = eax; as /ma ${/v:pzString} $t1;.if ($scmp(\"${pzString}\",\"DDLX_CHAR\")==0) {} .else {gc}"程式碼:
//全字串匹配,不區分大小寫 bp 0041141d "r @$t1 = eax; as /ma ${/v:pzString} $t1;.if ($sicmp(\"${pzString}\",\"DDLX_char\")==0) {} .else {gc}"程式碼:
//字串模糊匹配,*表示0-?個模糊字元 bp 0041141d "r @$t1 = eax; as /ma ${/v:pzString} $t1;.if ($spat(\"${pzString}\",\"DDLX*\")==0) {} .else {gc}"
unicode 就是 /mu, 比如 as /mu ${/v:dllName} poi(esp+4)