26种对付反调试的方法
副问题[/!--empirenews.page--]
今朝首要有3种说明软件的要领: 1.数据互换说明,研究职员行使数据包嗅探器材来说明收集数据互换。 2.对软件的二进制代码举办反汇编,然后以汇编说话列出。 3.字节码解码或二进制解码,然后以高级编程说话从头建设源代码。 本文针对的是Windows操纵体系中常用的防破解及防逆向工程掩护技能,即反调试要领,各类防逆向工程技能的首要方针是尽也许多的使逆变器材尽也许失效。 本文的搪塞反调试要领,总共涉及26种: 1. IsDebuggerPresent 2. PEB(历程情形块) 3.怎样避开IsDebuggerPresent的搜查 4. TLS回调 5.NtGlobalFlag 6.怎样避开NtGlobalFlag搜查 7.NtGlobalFlag和IMAGE_LOAD_CONFIG_DIRECTORY 8.HeapFlag和ForceFlags 9.怎样避开HeapFlag和ForceFlags 10.陷阱标识搜查 11怎样避开陷阱标识搜查 12.CheckRemoteDebuggerPresent和NtQueryInformationProcess 13.怎样避开CheckRemoteDebuggerPresent和NtQueryInformationProcess 14.基于NtQueryInformationProcess的其他反调试掩护技能 15.怎样避开NtQueryInformationProcess搜查 16.软件和硬件的断点回响 17.SEH(布局化非常处理赏罚) 18.怎样避开SHE搜查 19.VEH(向量化非常处理赏罚) 20.怎样避开硬件断点搜查和VEH 21.NtSetInformationThread ,在调试器材中潜匿线程 22.怎样避开从调试器材中潜匿线程 23.NtCreateThreadEx 24. 怎样避开NtCreateThreadEx 25.处理赏罚跟踪 26.仓库段操纵 提议你在阅读本文时,先具备必然的Assembler常识,一些Windbg操纵履历以及行使API函数开拓Windows的履历。 IsDebuggerPresent 大概最简朴的要领是挪用IsDebuggerPresent函数,用此函数检测用户模式的调试器是否正在调试挪用历程。下面的代码就是一个根基的掩护案例:
假如我们来看看IsDebuggerPresent函数,我们会发明这样的代码:
Windows X64里的历程如下:
在FS寄存器的偏移量30h处存在PEB(历程情形块),而在X64上,PEB(历程情形块)存在于GS段寄存器的偏移量60h处。在PEB中的2个偏移量处,我们将找到BeingDebugged字段:
即IsDebuggerPresent函数读取BeingDebugged字段的值。假如历程被调试,值为1,不然为0。 PEB(历程情形块) PEB是在操纵体系内行使的关闭布局。在差异地运行情形下,各人应该以差异的方法获取PEB布局指针。如下所示,你可以在下图中找到x32和x64体系的PEB指针:
(编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |