【问题标题】:Strength of anti-debugging technique [closed]反调试技术的优势[关闭]
【发布时间】:2013-01-17 08:54:27
【问题描述】:

我曾经使用 gdb 等工具进行调试,但我对它们的实现知之甚少。我正在尝试在我的程序中实现一种反调试技术,但对调试知之甚少,我需要一些帮助。我遇到了来自http://www.julioauto.com/rants/anti_ptrace.htm的以下代码

void anti_ptrace(void)
{
    pid_t child;

    if(getenv("LD_PRELOAD"))
        while(1);

    child = fork();
    if (child)
        wait(NULL);
    else 
    {
        pid_t parent = getppid();

        if (ptrace(PTRACE_ATTACH, parent, 0, 0) < 0)
            while(1);

        sleep(1);
        ptrace(PTRACE_DETACH, parent, 0, 0);
        exit(0);
    }
}

我想听听各位大师的专家意见,关于上面的代码会有多成功,利弊是什么?

任何帮助将不胜感激。

【问题讨论】:

  • 要反调试?为什么?
  • 实际上我正在构建一个库,我不希望其他进程可以对其进行跟踪。这是一种强迫。
  • 并且会阻止我简单地获取您的二进制文件并对其进行修补以跳过这些事情?
  • 你在浪费时间。
  • 这种“保护”是 a) 很容易检测到 b) 很容易被覆盖 c) 可以很容易地从编译的二进制文件中删除

标签: c linux debugging process ptrace


【解决方案1】:

真正保护算法免于调试或反编译的唯一方法是限制对其二进制文件的访问——通过在远程机器上运行它们并通过 TCP/IP 访问。 任何 本地解决方案最终都会在确定的破解者手中失败。

【讨论】:

    猜你喜欢
    • 2013-01-08
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多