反调试——6——附加进程反调试
Posted Sna1lGo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反调试——6——附加进程反调试相关的知识,希望对你有一定的参考价值。
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使用简介
以上是关于反调试——6——附加进程反调试的主要内容,如果未能解决你的问题,请参考以下文章