- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我不想让我的程序被调试。我有第二个线程反复检查是否附加了调试器:
while(1){
BOOL isDebugged = IsDebuggerPresent();
if(isDebugged){
//exit from my app
}
//and then check CheckRemoteDebuggerPresent()
}
我想知道这种方法是否安全?即使有这种保护,有人可以调试我的应用程序吗?有更好的方法吗?
编辑:
实际上我有一个硬件安全 token 。我想保护我的应用程序不被复制。但我听说调试应用程序会破坏使用 token 的简单真/假检查
最佳答案
总会有办法绕过您设置的任何保护措施,您唯一能做的就是让它变得足够困难,以至于任何攻击者都会感到非常沮丧,并宣称不值得他花时间来尝试反向工程您的软件。这只是为了阻止那个额外的人尝试花费多少时间/金钱的问题。
要回答仅检查 IsDebuggerPresent
是否安全?我已经绕过了软件中的确切安全措施,我不得不通过使用 OllyDbg 反编译代码来进行逆向工程。找到对 IsDebuggerPresent
函数的任何导入并将 exe 修补为只返回 false,我花了大约 15 分钟来绕过保护。在逆向工程方面“有经验”的人可能会在 5 天内完成。
您唯一能做的就是“提高标准”以防止您的程序被逆向工程,这里有一些建议:
其中一些解决方案(如检测调试器是否正在运行)可能会激怒那些将调试器用于其他软件但不想在您的软件上使用它的合法用户,因此您需要权衡成本。
关于c++ - IsDebuggerPresent() 函数是停止调试进程的安全方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18286011/
我不想让我的程序被调试。我有第二个线程反复检查是否附加了调试器: while(1){ BOOL isDebugged = IsDebuggerPresent(); if(isDebug
我在 ollydbg 中找到了如何绕过它的指南: see here 但是如何为 x64 应用程序执行此操作? 我发现了以下内容: 我必须如何操作它才不会让它检测到调试器? 最佳答案 您可以按照指南中描
我确实找到了这段代码,但在调试时它没有返回 true: [DllImport("kernel32.dll", CharSet=CharSet.Auto, ExactSpelling=true)] in
这与 How to install a DebugBreak handler? 有关和 How to get a declaration for DebugBreak without includin
我是一名优秀的程序员,十分优秀!