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

逆向笔记之反调试技术

作者: 苏州暮雨 | 来源:发表于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