Frida反调试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Frida反调试相关的知识,希望对你有一定的参考价值。

参考技术A

逆向某app时,想用frida进行hook分析其执行流程,遇到了frida的反调试。这里记录一下出现问题的情况和反调试的实现.

android8
frida12.11.18
windows10

使用frida -U注入app

结果如下

这里有两个com.shark.tracerpidapp名称的进程

我们直接进入adb查看进程

可以看到确实有两个进程,frida分不清你要注入哪个进程所以报出如上错误。

我们选择父进程进行注入

叫我们用root去执行,这里是没有用的。我们到adb看看这个父进程的TracerPid信息就知道了

至于为什么看TracerPid请移步文章 TracerPid反调试

可以看到父进程已经被子进程ATTACH,而frida也依赖于ptrace所以这里肯定注入不进去

我们不要让frida注入,而是使用frida启动app,使用-f选项,我们告诉Frida注入Zygote并开始启动应用程序

还有一种打补丁的方式,在下面参考中有。这里就不再赘述。

这个反调试其实就是用了 TracerPid反调试 的原理,但是在这里有一些不一样。
1:这里是子进程ATTACH父进程
2:在Android8中ptrace(PTRACE_TRACEME, 0, 0, 0); 虽然返回的不是-1但是无法成功

所以我们这里要使用ptrace(PTRACE_ATTACH, parent, 0, 0)来实现。
PTRACE_ATTACH参数
ptrace(PTRACE_ATTACH,pid)
跟踪指定pid 进程。pid表示被跟踪进程。被跟踪进程将成为当前进程的子进程,并进入中止状态
PTRACE_CONT参数
ptrace(PTRACE_CONT, pid, 0, signal)
继续执行。pid表示被跟踪的子进程,signal为0则忽略引起调试进程中止的信号,若不为0则继续处理信号signal
先使用PTRACE_ATTACH进行附加,这时候被附加进程会阻塞。再使用PTRACE_CONT继续执行被附加的进程。为了确保PTRACE_CONT能被执行我们在PTRACE_ATTACH完后要马上wait阻塞当前线程。当附加成功后wait阻塞解除就能执行到PTRACE_CONT了

Android APP破解利器Frida之反调试对抗
ptrace使用简介

以上是关于Frida反调试的主要内容,如果未能解决你的问题,请参考以下文章

反调试——6——附加进程反调试

过反调试

浅谈android反调试之 签名校验

一种基于TLS的高级反调试技术

ios逆向笔记之反调试 以及反反调试 和反反反调试 ptrace篇

ELF反调试初探