这一处反调试是在调试某加固时遇到的,原理是查看当前所有的TCP连接,如果有<00000000:5d8a>就退出,也就是查看本地的23946端口是否被占用(IDA默认的监听端口)。00000000:5d8a>
实现代码如下:
void checkAndroidServer() {
char szLines[1024] = {0};
//监听23946端口
FILE *fp = fopen("/proc/net/tcp", "r");
if (fp != NULL) {
while (fgets(szLines, sizeof(szLines), fp)) {
//23946端口
if (strstr(szLines, "00000000:5D8A")) {
kill(getpid(), SIGKILL);
break;
}
}
fclose(fp);
}
LOGE("no find android server");
}
启动android_server
,查看当前的TCP连接。
解决方法
不使用默认的端口启动android_server
,再次输入cat /proc/net/tcp
查看结果。