继续上篇文章:如何给iOS APP加固 第一章【附代码】
3.防止动态调试
黑客可以通过动态调试应用程序,获取应用程序的内部信息和逻辑,从而攻击应用程序。可以在应用程序中集成防止动态调试的代码,如AntiDebugging。
1)检测调试器是否存在
可以通过检测当前进程是否存在调试器来判断是否处于调试状态。以下是示例代码:
#include <assert.h>
#include <stdbool.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/sysctl.h>
bool am_i_being_debugged() {
int name[4];
struct kinfo_proc info;
size_t info_size = sizeof(info);
info.kp_proc.p_flag = 0;
name[0] = CTL_KERN;
name[1] = KERN_PROC;
name[2] = KERN_PROC_PID;
name[3] = getpid();
if (sysctl(name, 4, &info, &info_size, NULL, 0) == -1) {
perror("sysctl");
exit(EXIT_FAILURE);
}
return ((info.kp_proc.p_flag & P_TRACED) != 0);
}
在上述代码中,通过检测当前进程的标记来判断是否存在调试器。
2)检测调试器是否开启
可以通过检测当前进程的环境变量来判断是