【问题标题】:Implementing the PT_DENY_ATTACH anti-piracy code实施 PT_DENY_ATTACH 反盗版代码
【发布时间】:2011-10-25 10:44:05
【问题描述】:

我一直在尝试从这个 wiki 实现以下反盗版代码: http://theiphonewiki.com/wiki/index.php?title=Bugging_Debuggers

但是尽管我的应用程序以

的形式退出
Program exited with status value:45.

当我测试它时。如果我注释掉函数调用 disable_gdb();应用正常运行。

我做错了什么。或者是代码正在做它应该做的事情..并在附加 xcode 时退出?

#import <UIKit/UIKit.h>
#import <dlfcn.h>
#import <sys/types.h>

typedef int (*ptrace_ptr_t)(int _request, pid_t _pid, caddr_t _addr, int _data);
#if !defined(PT_DENY_ATTACH)
#define PT_DENY_ATTACH 31
#endif  // !defined(PT_DENY_ATTACH)

int main(int argc, char *argv[]) 
{
NSLog(@"Main Called ");
disable_gdb();
NSLog(@"After cracker code");
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}



void disable_gdb()
{
void* handle = dlopen(0, RTLD_GLOBAL | RTLD_NOW);
ptrace_ptr_t ptrace_ptr = dlsym(handle, "ptrace");
ptrace_ptr(PT_DENY_ATTACH, 0, 0, 0);
dlclose(handle);
}

int main3(int argc, char *argv[])
{
return -1;
}

最诚挚的问候, -代码

【问题讨论】:

    标签: iphone objective-c ios


    【解决方案1】:

    代码按预期运行。也就是说,我应该告诉你,你在浪费时间。这种方法只有在gdb 和攻击者/程序员合作时才有效。像gdb 这样的工具的全部意义在于它们非常用途广泛,如果像这样一个简单的“错误”阻止它们死在轨道上,有人会很快修复它。 :)

    this 页面所述,您可以在gdb 中执行以下操作:

    (gdb) break ptrace
    commands 1
        return
        continue
    end
    

    【讨论】:

    • 那么,答案是试图阻止调试器调试您的应用程序没有意义?
    • 我认为有道理,你不能让自己 100% 安全,但你可以让攻击者的生活更加艰难,这样他就有机会追上更容易的目标 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 2023-03-11
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多