美文网首页
逆向笔记之反调试技术

逆向笔记之反调试技术

作者: 苏州暮雨 | 来源:发表于2017-12-06 19:55 被阅读0次

程序中包含很多的信息来帮助程序运行的正确,这也提供了反调试的一个基础,比如进程环境块(PEB)线程环境块(TEB)等。在实际的反调试的中存在几种情况:

一、使用系统API函数

最常见的就是IsDebuggerPresent,通过查询进程环境块(PEB)中的IsDebugged标志,判断程序是否被调试

二、干扰调试器的功能

1、TLS回调函数

TLS运行在main函数执行之前,会先执行TLS_CALLBACK函数,在函数开启或结束,线程或进程创建,结束之前都会调用TLS回调函数。简单的方式可以在main函数执行前调用IsDebuggerPresent函数检查它是否正在被调试。TLS在PE文件中image-TLS-Directory中表现,一个程序可以注册多个TLS回调函数。

调试TLS回调函数的时候,可以在OllyDbg中选择Options->Debugging Options->Events,然后设置System break-point作为第一个暂停的位置,这样就可以让OllyDbg在TLS回调执行前暂停。

解决方法:定位PE文件中,把TLS回调函数的指针全部改为0即可。(去除重定向表也差不多)

2.利用中断

因为调试器使用INT 3来设置软件断点,所以一种反调试技术就是在合法代码段中插入0xCC(INT 3)欺骗调试器,使其认为这些0xCC机器码是自己设置的断点。

SEH

参考:看雪论坛

相关文章

网友评论

      本文标题:逆向笔记之反调试技术

      本文链接:https://www.haomeiwen.com/subject/boltvxtx.html