使用 jnitrace 分析 native 方法调用过程

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/

jnitrace

jnitrace 可以动态跟踪 Java 层通过 JNI 接口调用 native 层(C/C++)代码的过程。它会记录并显示每一个 JNI 函数的调用,包括方法签名、参数、返回值等详细信息。

项目地址:https://github.com/chame1eon/jnitrace

安装 jnitrace

jnitrace 的使用依赖于 Frida。在使用 jnitrace 之前,需要确保 Frida 和 Python 环境已安装。可以参考下面两篇文章:

通过下面的命令安装 jnitrace

pip install jnitrace

解决 frida.NotSupportedError

运行 jnitrace 报错如下

jnitrace -l libnative-lib.so com.cyrus.exammple

Traceback (most recent call last):
  File "D:\App\Miniconda3\envs\anti-app\lib\runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "D:\App\Miniconda3\envs\anti-app\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "D:\App\Miniconda3\envs\anti-app\Scripts\jnitrace.exe\__main__.py", line 7, in \<module>
  File "D:\App\Miniconda3\envs\anti-app\lib\site-packages\jnitrace\jnitrace.py", line 584, in main
    pid = device.spawn([args.target], **aux_kwargs)
  File "D:\App\Miniconda3\envs\anti-app\lib\site-packages\frida\core.py", line 26, in wrapper
    return f(*args, **kwargs)
  File "D:\App\Miniconda3\envs\anti-app\lib\site-packages\frida\core.py", line 140, in spawn
    return self._impl.spawn(program, argv, envp, env, cwd, stdio, aux_options)
frida.NotSupportedError: need Gadget to attach on jailed Android; its default location is: C:\Users\cyurs\AppData\Local\Microsoft\Windows\INetCache\frida\gadget-android-arm64.so

看报错信息是缺少 gadget-android-arm64.so 文件导致的,去 frida releases 中下载对应 frida 版本的 gadget 文件。
image.png

下载完成后解压到 C:\Users\cyurs\AppData\Local\Microsoft\Windows\INetCache\frida\gadget-android-arm64.so 就解决了。

使用 jnitrace 进行 JNI 跟踪

注意:在使用 jnitrace 之前需要先启动 frida-server。

1.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值