继续前一篇文章的某新闻应用,该应用升级到4.2版本之后,采用了梆梆加固:
想要hook加固后的应用,目前来说有以下几种方法:
如果使用xposed,则不能直接hook类方法,因为xposed在应用程序启动之前就做好了hook的准备,hook的时候这些类还未被加载,所以必须先拿到classloader(Java to c/c++的不可以)。如果是frida的话可以直接hook,因为frida是在应用程序启动之后才进行的hook,因此不会提示找不到类。
1)对于加固后应用可以通过context获得到壳的classloader,之后只需要用这个classloader就可以hook:
hook代码如下:(可先用fdex2或者反射大师进行脱壳)
hook结果如下:
2)也可以采用上篇文章中写到的hook classloader的loadclass方法:
hook代码如下:
hook结果如下:
3.采用frida进行hook:
前篇文章中已经使用frida进行了hook
但是梆梆加固进行了反调试,在壳程序启动时会fork一个子进程来ptrace父进程,而一个进程只能被附加一次。因此我们在启动这个应用时用frida提前占坑,防止子进程ptrace父进程。类似于在IDA动态调试里面,勾选三项提前占据先机。
按理来说直接hook应该是不可以的…但是这儿直接hook却能hook到,希望有知道的大佬解答下疑惑
正常做法是:
frida有一个功能可以为我们生成一个进程而不是将它注入到运行中的进程中,它注入到Zygote中,生成我们的进程并且等待输入。使用spawn命令frida会Spawned这个应用,在这个时候启动python脚本,再执行%resume命令,我们就可以达到提前占坑的目标。
hook结果: