iOS安全攻防(四):阻止GDB依附
2014-01-13 15:24
405 查看
阻止GDB依附
GDB是大多数hackers的首选,阻止GDB依附到应用的常规办法是:
但遗憾的是,iPhone真实的运行环境是没有sys/ptrace.h抛出的。虽然 ptrace 方法没有被抛出, 但是不用担心,我们可以通过dlopen拿到它。
dlopen: 当path 参数为0是,他会自动查找 $LD_LIBRARY_PATH,$DYLD_LIBRARY_PATH, $DYLD_FALLBACK_LIBRARY_PATH 和 当前工作目录中的动态链接库.
GDB是大多数hackers的首选,阻止GDB依附到应用的常规办法是:
#import <sys/ptrace.h> int main(int argc, char *argv[]) { #ifndef DEBUG ptrace(PT_DENY_ATTACH,0,0,0); #endif @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([WQMainPageAppDelegate class])); } }
但遗憾的是,iPhone真实的运行环境是没有sys/ptrace.h抛出的。虽然 ptrace 方法没有被抛出, 但是不用担心,我们可以通过dlopen拿到它。
dlopen: 当path 参数为0是,他会自动查找 $LD_LIBRARY_PATH,$DYLD_LIBRARY_PATH, $DYLD_FALLBACK_LIBRARY_PATH 和 当前工作目录中的动态链接库.
#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) 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 main(int argc, char *argv[]) { #ifndef DEBUG disable_gdb(); #endif @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([WQMainPageAppDelegate class])); } }
相关文章推荐
- iOS7 中 boundingRectWithSize:options:attributes:context:计算尺寸的使用
- iOS静态库的加载和调试
- iOS多线程
- audiosystem之audio_track_cblk_t
- iOS官方参考文档
- ios&nbsp;ipa文件反编译
- IOS应用内购买
- ios错误码总结
- ios晃动的检测
- ios判断屏幕方向
- IOS&nbsp;Storyboard解析
- iOS中使用block传值
- iOS中如何处理memory&nbsp;w…
- ios&nbsp;xmpp开发应用后台模式接…
- ios&nbsp;上下左右滑动手势
- 1、使用Xcode修改iOS项目工…
- ios判断手机号码
- iOS手势识别的详细使用(拖动,缩放,…
- ios&nbsp;查询文件夹大小
- 《iOS应用逆向工程:分析与实战》