Frida何时hook Java层,何时hook native层

admin 2025年6月14日11:53:13评论21 views字数 1277阅读4分15秒阅读模式
Frida何时hook Java层,何时hook native层

声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途给予盈利等目的,否则后果自行承担!如有侵权烦请告知,我会立即删除并致歉。谢谢

文章有疑问的,可以公众号发消息问我,或者留言。我每天都会看的。

Frida何时hook Java层,何时hook native层

字数 646,阅读大约需 4 分钟

前言

有师傅问我,用Frida的时候,什么时候hook Java层,什么时候hook native层。

我的回答是取决于你的目的,你要做什么事情。想要达成同样的目的,可能有不同的解决方案,区别在于是否方便、性能等的区别。

环境说明

本文采用的案例来源:https://bbs.kanxue.com/thread-285362.htm 的附件。同时推荐阅读这篇文章,对入门JNI很有帮助。

  • • APK反编译 jadx
  • • so反编译 IDA9.0

如何识别Java函数还是native层

拿到一个APK文件,反编译为Java代码,查看其中的类方法。

Frida何时hook Java层,何时hook native层
cc88ea25c537a45eaf244713dcff9ff8.png

方法中没有native字段是就是Java方法,带native字段的,说明是在native层实现的,保存在so文件中。

具体在哪个so文件中,一般调用so中函数,首先要加载so文件,类中会出现下面代码的字段。

static {
    System.loadLibrary("hello");
}

我们就可以在lib目录下寻找文件名类似libhello.so的文件。

当然,我们也可以通过Frida脚本获取。这个后续再说。

hook的时机

当然,我们的目的肯定不是识别函数是什么函数。目的是hook指定的函数获取我们想要的东西,比如加密后的密文或者加密前的明文。

就像上面说的,hook哪一层取决于我们的目的是什么。

以常见的数据包加密为例,我们通过代理抓包,发现HTTP请求体和响应体被密文加密了。

username=xxxx&password=xxxxx

然后,我们通过关键词搜索,或者打印堆栈信息,定位加解密函数如下:

// input 明文,return 加密后的密文
publicnative String encrypt(String data);
// input 密文,return 解密后的明文
publicnative String decrypt(String encryptData);

因为Java层存在调用接口,我们可以通过Java层的hook方式,hook这两个函数,打印传入参数和返回值,或者frida rpc + 主动调用,来实现数据包主动加解密。

这就能实现我们加解密数据包的目的了。而不需要在意native层的具体实现。

那什么时候深入native层进行hook呢?
Java层解决不了问题的时候。

比如,我们想把这个加密过程从APP中分离出来,用其他方法实现。就可以用Frida hook native层的函数,如果是通用的加解密方法,获取key和iv。
或者so层在请求包中添加了sign签名,我们需要hook获取这些值。

欢迎关注公众号~~~

原文始发于微信公众号(进击的HACK):Frida何时hook Java层,何时hook native层

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月14日11:53:13
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Frida何时hook Java层,何时hook native层http://cn-sec.com/archives/4164504.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息