WL 2009 professional【已解决】谢谢nooby跟海风
生活随笔
收集整理的這篇文章主要介紹了
WL 2009 professional【已解决】谢谢nooby跟海风
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
WL 2009 professional【已解決】謝謝nooby跟海風
研究這個好久了,從中也學習到了不少東西幫朋友研究XX的反調試,一個沒見過的反調試,不能斷點,輸出是WL 2009
首先當然是用強壯的SOD以及hideod來實驗了下了,沒通過
然后想到了setinformationthread??簡單HOOK了看調用,然后直接給他返回status_successful,測試,不行
翻了翻windows異常處理,
若KiDebugRoutine不為空,則不為空就將Context、陷阱幀、異常記錄、異常幀、發生異常的模式等壓入棧并將控制交給KiDebugRoutine。當處理完畢用Context設置陷阱幀并返回到上一級例程。(第一次機會)否則把異常記錄壓棧并調用DbgkForwardException,在DbgkForwardException里判斷當前線程ETHREAD結構的HideFromDebugger成員如果為FALSE(為TRUE表示該異常對用戶調試器不可見)則向當前進程的調試端口(DebugPort)發送LPC消息。
? ?? ?? ?|
? ?? ?? ?|
? ?? ?? ?|
? ???當上一步無法處理異常時將Context結構拷貝到用戶堆棧,在堆棧中設置一個陷阱幀,陷阱幀的Eip為Ke(i)UserExceptionDisptcher((i)表示這個函數的Ke和Ki打頭的符號其實是一回事),接著返回陷阱處理程序,由陷阱處理程序iret返回用戶態執行Ke(i)UserExceptionDispatcher(這個函數雖然是Ke(Ki)打頭,卻不是內核里的函數。同樣性質特殊的還有Ke(i)RaiseUserExceptionDispatcher、Ke(i)UserCallbackDispatcher、Ke(i)UserApcDispatcher。它們的共同特點就是不是被調用的,而是由內核例程設置了陷阱幀TrapFrame.Eip為該函數后iret執行到這里的)。Ke(i)UserExceptionDisptcher調用RtlDispatchException(用戶態下的)尋找堆棧中基于幀的異常處理例程(若在XP和2003下先處理VEH再處理SEH),這個流程大家應該很熟了,就是搜索SEH鏈表,若都不處理就調用頂層異常處理(TOP LEVEL SEH)例程。當再無法處理時就調用默認異常處理例程終止進程(有VC時這里就換成了VC)。有點不同的是用戶態下的RtlDispatchException只判斷返回值是ExceptionContinueExecution還是ExceptionContinueSearch。若RtlDispatchException找到異常處理例程能夠處理異常,則調用ZwContinue按照設置好的Context結構繼續執行,否則調用ZwRaiseException,并且把第三個布爾參數設為FALSE,表示進入第二次機會處理。
? ?? ?? ?|
? ?? ?? ?|
? ?? ?? ?|
? ???ZwRaiseException經過一系列調用最后直接調用KiDispatchException,由于把布爾值FirstChance設置為FALSE,在KiDispatchException里直接進入第二次機會處理。
? ?? ?? ?|
? ?? ?? ?|
? ?? ?? ?|
? ???(第二次機會)向進程的DebugPort發消息,若無法處理,則改向進程的ExceptionPort發消息(這里同樣如果該異常對用戶調試器不可見,則只會發送到ExceptionPort)。DebugPort和ExceptionPort的區別在于,若向ExceptionPort發消息,先停止目標進程所有線程的執行,直到收到回應消息后線程才恢復執行,而向DebugPort發消息則不需要停止線程運行。還有DebugPort是向會話管理器發消息,而ExceptionPort是向Win32子系統發消息,當向ExceptionPort發消息時,已經不給用戶態調試器任何機會了:)。
? ?? ?? ?|
對這種斷點后進程退出的現象,確實跟hidefromdebugger吻合,于是又做了個實驗,遍歷線程然后將+0x248??hidefromdebugger輸出一看,這個都是0,疑惑ing
再將這個偏移都寫0,還是沒效果
跟了下eprocess+debuport沒有發現清0代碼,從現象上看,debugport清0的現象也不適用
期間還嘗試過hook??DbgkForwardException,結果寫一半發現這函數有個屬性(noninline)T-T,
疑惑ing,沒思路已經好幾天,盼各位大牛們指點下方向啊,
轉載于:https://blog.51cto.com/laokaddk/203575
總結
以上是生活随笔為你收集整理的WL 2009 professional【已解决】谢谢nooby跟海风的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美酒节成就及任务攻略指引
- 下一篇: 安装php出现 “make: *** [