在NDK中实现代码如下,可以直接拷贝就可以用。
原理:先用fork()把自身的进程先给附加了,其他进程就附加了,这样就能实现反调试。
JNIEXPORT jboolean JNICALL Java_com_protectSelfPid(JNIEnv *, jobject)
{
pid_t child;
child = fork();
long orig_eax;
if(0 == child)
{
ptrace(PTRACE_TRACEME, 0, NULL, NULL);
execl("/bin/ls", "ls", NULL);
}
else
{
wait(NULL);
orig_eax = ptrace(PTRACE_TRACEME, child, 4*orig_eax, NULL);
ptrace(PTRACE_TRACEME, child, NULL, NULL);
}
return true;
}
更多安全相关的文章,请关注“小道安全”公众号,一起学习,一起进步。