专栏名称: 看雪学苑
致力于移动与安全研究的开发者社区,看雪学院(kanxue.com)官方微信公众帐号。
目录
相关文章推荐
计算机与网络安全  ·  全国一体化算力网 ... ·  9 小时前  
上海人力资源和社会保障  ·  “社保地图”伴您行 一键指引解烦忧~ ·  14 小时前  
云技术  ·  498万元,合同管理系统大单:金蝶中标 ·  昨天  
计算机与网络安全  ·  2025 ... ·  昨天  
51好读  ›  专栏  ›  看雪学苑

用 Frida 入侵Android App III (一)

看雪学苑  · 公众号  · 互联网安全  · 2017-06-06 18:07

正文

请到「今天看啥」查看全文


好奇怪,让我们把 Frida 注入到父进程:

没用。因为我们是在以 root 运行 Frida 时得到这样的结果的,所以这个方案没什么效果。这是怎么了?我们得好好研究这个 app。解压 apk,用字节码查看器(例如CFR-Decompiler)反编译 classes.dex

我们注意到 static 块里调用了 System.load 来加载 foo 库(参看【1】)。这个app还在 OnCreate 函数里的第一行就调用了this.init(),而这个函数被声明为native函数(参看【2】),所以它应该是 foo 的一部分。

让我们来看看这个 foo 库。在 radare2 中打开这个库(你会在lib文件夹里看到几个不同的架构,我这里用的是 lib/x86_64 ),分析它并列出它的输出。

我们看到这个库导出了两个很有意思的函数:Java_sg_vantagepoint_uncrackable2_MainActivity_init 和 Java_sg_vantagepoint_uncrackable2_CodeCheck_bar (关于这些函数的命名,请查看 Java nativ interface JNI ),我们要看的是:

Java_sg_vantagepoint_uncrackable2_MainActivity_init

这是一个蛮短的函数:

它调用了另一个函数sub.fork_820,这个要做的事就比较多了:

我们看到调用了 fork,pthread_create,getppid,ptrace和waitpid. 无需花太多时间来反编译我们就可以猜到,当调试器用 ptrace 的时候,主进程会 fork 一个子进程来关联它。这是很简单的反调试技术,你可以从 这里 了解到更多细节。

因为 Frida 用 ptrace 来初始化注入,所以这就解释了为什么我们不能连接到父进程:因为已经连接了一个进程来作为调试器,再来一个进程关联调试将被阻塞。

反反调试方案一:Frida






请到「今天看啥」查看全文