一 : r3偵錯程式流程
r3偵錯程式的一般流程
在寫r3除錯時,createprocess建立程序時,dwcreationflags引數使用
debug_only_this_process| debug_process除錯方式建立除錯程序, 這樣在除錯迴圈結構中通過
waitfordebugevent函式捕獲異常,根據需要對異常事件作處理(是已處理繼續執行還是未處理丟擲)。
1.0 createprocess //建立除錯程序
引數creation flags 選擇debug型別
2.0 除錯迴圈結構
for(;;)主要部分:case create_thread_debug_event: // 執行緒建立
case create_process_debug_event: //程序建立
case exit_thread_debug_event:
case exit_process_debug_event:
case load_dll_debug_event: //載入dll
case unload_dll_debug_event: //解除安裝dll
case output_debug_string_event:
} continuedebugevent(debugev.dwprocessid,
debugev.dwthreadid, dwcontinuestatus);
}
create_process_debug_event:建立程序時再異常位址下斷點,即oep處大概的流程為:load_dll_debug_event:在載入dll可以獲取模組位址資訊,以便解析函式
exception_access_violation: 記憶體斷點處理部分,根據異常異常型別位址判斷是否命中
exception_breakpoint:軟中斷(0xcc)處理部分,注意系統的int3即第一次不處理
exception_single_step: 最重要且複雜的部分,處理單步,恢復之前異常的有效性等。
那麼waitfordebugevent中獲取debug_event除錯事件資訊是從**獲取的?
備註:關於r3下除錯的實現,可以參考科銳學員發的相關帖子,這裡引用 "超然" 寫的偵錯程式供參考!
R3多執行緒
ncreatethread 是windows的api函式 sdk函式的標準形式,直截了當的建立方式,任何場合都可以使用 提供作業系統級別的建立執行緒的操作,且僅限於工作者執行緒。不呼叫mfc和rtl的函式時,可以用createthread,其它情況不要使用。因為 qcruntime中需要對多執行緒進...
R3的建立賦值刪除
1變數的建立刪除 1r語言中的變數可以儲存原子向量,原子向量組或許多robject的組合。2有效的變數名稱由字母,數字和點或下劃線字元組成。變數名以字母或不以數字後跟的點開頭。3賦值cat var.3 is var.3 列印 cat 函式將多個專案組合成連續列印輸出。4顯示現在可用用的所有變數 ls...
R3 《精力管理手冊》讀書筆記
作者張萌,時間效率管理專家,系 下班加油站 創始人 立德領導力 lead 創始人。早起或者飯後犯睏,無精打采,無法集中注意力,晚上無法快速入睡等,都是令我頭疼的事情。一直想找科學原因,以及解決方案。精力管理手冊 這本書雖然不夠深,文章的論述布局也不是那麼良好,大量的重複論述,但是很好的解答了很多問題...