【发布时间】:2012-10-29 08:13:39
【问题描述】:
有谁知道解决以下问题的标准技术:
- 我想检测是否有调试器附加到我的程序(反调试)
- 但是攻击者修补了我使用的系统调用/库
例如,在 iOS 上,sysctl() 函数可用于检测附加的调试器,但攻击者只需反汇编二进制可执行文件,找到 sysctl() 调用,并将其替换为自己的版本。
作为开发人员,我们如何处理这个问题?
我的平台是 iOS (iPhone) 和原生 Android (Android NDK)。
【问题讨论】:
-
如果“攻击者”在模拟器中运行您的代码并使用它来单步执行代码怎么办?根本没有调试器...
-
问题:用 sysctl() 会不会检测到模拟器中的单步执行?但是,我考虑记录关键代码之前和关键代码之后的时间。如果时间跨度很长,我可以断定程序正在调试中。但是,如果攻击者修补 time() 调用怎么办?这是原始发布问题的变体。
标签: iphone c debugging android-ndk