簡單的.net反調試,調試檢測

.net下有一款強大的反調試利器:dnspy

可以直接調試編譯出來的.exe程序,查看內存中的值,甚至直接修改源代碼;

那麼我們的程序如何檢測到自己正在被調試呢?

在windows中,用戶進程全部由任務管理程序“explorer”啓動:即 無論雙擊快捷方式還是cmd/bat命令啓動,該進程的父進程都是

“explorer”

所以,一個簡單的反調試方法是檢測當前進程的父進程是否是“explorer”,如果不是,則退出程序,或 執行其他腦洞大開的操作!

//main方法或者單獨使用一個線程
//保險起見,同時檢測explorer的父進程是否爲null
Process Parent= GetParentProcess();
Process Grandpa= ParentProcessUtilities.GetParentProcess(Parent.Handle);
if (Grandpa!= null || !Parent.ProcessName.ToLower().Contains("explorer"))
                    Environment.Exit(0);//直接退出
            

效果:在dnspy調試時直接退出!

如果傳入null參數,則調試時拋異常

Environment.Exit(null);//拋異常

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章