ios--安全攻防-阻止GDB依附
2014-02-27 09:18
435 查看
阻止GDB依附
文章出处:http://blog.csdn.net/yiyaaixuexi/article/details/18353423#comments
GDB是大多数hackers的首选,阻止GDB依附到应用的常规办法是:
#import <sys/ptrace.h>
int main(int argc, charchar *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, charchar *argv[])
{
#ifndef DEBUG
disable_gdb();
#endif
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([WQMainPageAppDelegate class]));
}
}
文章出处:http://blog.csdn.net/yiyaaixuexi/article/details/18353423#comments
GDB是大多数hackers的首选,阻止GDB依附到应用的常规办法是:
#import <sys/ptrace.h>
int main(int argc, charchar *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, charchar *argv[])
{
#ifndef DEBUG
disable_gdb();
#endif
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([WQMainPageAppDelegate class]));
}
}
相关文章推荐
- ios安全攻防(四)阻止GDB依附
- iOS安全攻防(四):阻止GDB依附
- iOS安全攻防(四):阻止GDB依附
- iOS安全攻防-阻止lldb对app的依附
- iOS安全攻防(二十)动态调试利器---gdb基础篇
- iOS安全攻防(二十)动态调试利器---gdb基础篇
- iOS安全攻防(十三)arm汇编之函数(int参数)传递
- iOS安全—阻止tweak注入hook api
- iOS安全攻防(二十二):static和被裁的符号表
- ios--安全攻防01--Hack必备的命令与工具
- iOS安全攻防(十五):使用iNalyzer分析应用程序
- iOS安全攻防(十九):基于脚本实现动态库注入
- iOS安全攻防(一):Hack必备的命令与工具
- iOS安全攻防 工具链及获取途径
- iOS安全攻防(三):使用Reveal分析他人app
- iOS安全攻防(十九):基于脚本实现动态库注入
- iOS 应用安全攻防(六):Clutch
- iOS安全攻防(二十):越狱检测的攻与防
- ios--安全攻防02--后台daemon非法窃取用户iTunesstore信息
- iOS安全攻防(十八):数据保护API