18. OD-反调试研究,破解反调试,编写反调试
病毒、木馬、外掛等必須要有的 “安全工作”
因為你一個安全軟件一旦被成功調試了,就等同于被調戲了,一切主要操作順序都被人掌握了,只要開發出逆向的突破即可。
我們要研究他們這些安全軟件如何反調試的
比如軟件發現被OD打開,直接自爆。。。
開始
?
?
第一個程序
F8運行程序
找到了彈出反調試報錯的call
?F7
程序調用了 IsDebuggerPresent 函數
IsDebuggerPresent :是確定調用進程是否由用戶模式的調試器調試。
修改跳轉Z,將指令改為nop不讓他跳轉就OK了
?
第二個程序
程序在OD中運行,什么也沒有
這次直接跳轉到了錯誤的位置,我們nop跳轉就OK了
?
第三個程序
遇到被調試,直接退出進程,我們也可以nop到跳轉
?
第四個程序
運行 ,程序選擇和你同歸于盡,大家一起死
程序直接跳轉到00000001?,同樣改跳轉為nop
?
?
高級
探討程序使怎么做到反調試的
F8這行指令直接就錯誤了,此call為win32API創建模式對話框
alt+F9也回不去用戶領空了,
DialogBoxParanA的第二個參數為過程函數,就是我們自己編寫要做的事
找到函數地址,下斷點
call處再次報錯,下圖
進入call
研究反調試過程
1. CreateToolhelp32Snapshot:可以通過獲取進程信息為指定的進程、進程使用的堆[HEAP]、模塊[MODULE]、線程建立一個快照。(所有進程拍照),返回句柄
2. Process32First:是一個進程獲取函數,當我們利用函數CreateToolhelp32Snapshot()獲得當前運行進程的快照后,我們可以利用process32First函數來獲得第一個進程的句柄。
3. 將進程名稱和我們打開的OD進行字符串對比
4.?Process32Next:是一個進程獲取函數,當我們利用函數CreateToolhelp32Snapshot()獲得當前運行進程的快照后,我們可以利用Process32Next函數來獲得下一個進程的句柄。
5. 循環比較進程名稱
6. 如果有OD就跳轉退出程序,自爆。
?
?
?
總結
以上是生活随笔為你收集整理的18. OD-反调试研究,破解反调试,编写反调试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Z-Stack Home Develop
- 下一篇: 初识Latex