重打包实现frida持久化 笔记

修改Dex
Using Frida on Android without root
修改so
[翻译]在未root的设备上使用frida

2个方法本质都是通过重打包让app自己加载frida-gadget.so
但感觉没有谁家app会让人轻易重打包吧。。。, 好多app可以轻易重打包 )

apktool d org.telegram.messenger_4.8.4-12207.apk -rs

(-r,--no-res             Do not decode resources.
 -s,--no-src             Do not decode sources.)
import lief

libnative = lief.parse("/Users/wiliam/temp/org.telegram.messenger_4.8.4-12207/lib/arm64-v8a/libtmessages.28.so")
libnative.add_library("libgadget.so") # Injection!
libnative.write("/Users/wiliam/temp/org.telegram.messenger_4.8.4-12207/lib/arm64-v8a/libtmessages.28.so")

执行前后对比:

mac
readelf.py -d org.telegram.messenger_4.8.4-12207/lib/arm64-v8a/libtmessages.28.so | grep NEEDED

linux有readelf
readelf -d ./libtmessages.28.so|grep NEEDED

在这里插入图片描述
到官网下载frida-gadget并重命名为libgadget.so
在这里插入图片描述
准备libgadget.config.so文件

{
  "interaction": {
    "type": "script",
    "path": "/data/local/tmp/myscript.js",
    "on_change": "reload"
  }
}

一起放到arm64-v8a下
在这里插入图片描述
重打包并签名,安装

apktool b org.telegram.messenger_4.8.4-12207 -o my_new.apk
java -jar /Applications/uber-apk-signer-1.2.1.jar  --apks my_new.apk
adb install my_new-aligned-debugSigned.apk

准备myscript.js文件

'use strict';

console.log("Waiting for Java..");

while(!Java.available) {
  console.log("Not available...");
}

Java.perform(function () {

  var Log = Java.use("android.util.Log");
  Log.v("frida-lief", "I'm in the process!");

});

adb push到/data/local/tmp下

adb push myscript.js /data/local/tmp

在这里插入图片描述
打开app出现日志,成功

Pixel Android8.1.0可以,Miui Android 11不行,不知道是不是路径不一致导致的。。

Pixel Android8.1.0上app路径是:
/data/app/org.telegram.messenger-3JOqehiK7XDEJ2TIc2DOVg==/lib

Miui上app的路径是
/data/app/~~88RoweeJkg1m32k1maESDw==/org.telegram.messenger-04jmp3aH5ri-GneXwPrZiw==/lib

······················································································

libfrida-agent.so和frida-gadget.so的作用有什么不同?

libfrida-agent.so 和 frida-gadget.so 都是 Frida
的核心组件,它们在功能上有一定的重叠,但主要区别在于它们的使用场景和工作方式。

libfrida-agent.so:

libfrida-agent.so 是 Frida 代理库,它负责在目标进程中执行实际的代码插桩和挂钩操作。当你使用 Frida 工具(如
frida-trace、frida CLI)附加到一个进程时,Frida 会将 libfrida-agent.so
注入到目标进程中。注入完成后,代理库会与 Frida 工具通信,接收并执行工具发送的脚本代码。这种工作方式需要一个外部的 Frida
工具作为控制端,与目标进程进行通信。

frida-gadget.so:

frida-gadget.so 是一种独立的 Frida 组件,它可以直接嵌入到目标程序中,而无需外部工具进行注入。Gadget
的主要应用场景是对那些无法使用常规 Frida 工具附加的程序进行调试,例如:需要越狱/Root 权限的设备、受保护的进程等。Gadget
通常以共享库(.so 文件)的形式存在,可以通过静态或动态链接的方式集成到目标程序中。集成后,Gadget
会在目标程序启动时自动加载并执行预先配置的脚本,而无需外部工具的干预。此外,Gadget 也可以通过网络或其他方式与外部工具通信,实现类似于
libfrida-agent.so 的远程控制功能。

总结一下,libfrida-agent.so 和 frida-gadget.so 的主要区别在于:

libfrida-agent.so 需要通过 Frida 工具注入到目标进程中,而 frida-gadget.so
可以直接嵌入到目标程序中。 libfrida-agent.so 的工作方式依赖于外部的 Frida 工具作为控制端,而
frida-gadget.so 可以在目标程序启动时自动执行预配置的脚本,也可以选择与外部工具通信。
具体使用哪种组件取决于目标程序的特点和调试需求。通常情况下,libfrida-agent.so 更适用于临时的、动态的调试任务,而
frida-gadget.so 更适用于持久的、嵌入式的调试场景。

frida的原理:

Frida 需要将其代理库(libfrida-agent.so)注入到目标进程中。在 Android 上,Frida 通常使ptrace系统调用或利用其他底层技术(如 Gum)实现代码注入。注入完成后,Frida 可以在目标进程内运行 JavaScript脚本,从而实现对目标进程的各种操作。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
方案是为解决特定问题或达成特定目标而制定的一系列计划或步骤。它的作用是提供一种系统性的方法,以有效地应对挑战、优化流程或实现目标。以下是方案的主要作用: 问题解决: 方案的核心目标是解决问题。通过系统性的规划和执行,方案能够分析问题的根本原因,提供可行的解决方案,并引导实施过程,确保问题得到合理解决。 目标达成: 方案通常与明确的目标相关联,它提供了一种达成这些目标的计划。无论是企业战略、项目管理还是个人发展,方案的制定都有助于明确目标并提供达成目标的路径。 资源优化: 方案在设计时考虑了可用资源,以最大化其效用。通过明智的资源分配,方案可以在有限的资源条件下实现最大的效益,提高效率并减少浪费。 风险管理: 方案通常会对潜在的风险进行评估,并制定相应的风险管理策略。这有助于减轻潜在问题的影响,提高方案的可行性和可持续性。 决策支持: 方案提供了决策者所需的信息和数据,以便做出明智的决策。这种数据驱动的方法有助于减少不确定性,提高决策的准确性。 团队协作: 复杂的问题通常需要多个人的协同努力。方案提供了一个共同的框架,帮助团队成员理解各自的职责和任务,促进协作并确保整个团队朝着共同的目标努力。 监控与评估: 方案通常包括监控和评估的机制,以确保实施的有效性。通过定期的评估,可以及时调整方案,以适应变化的环境或新的挑战。 总体而言,方案的作用在于提供一种有序、有计划的方法,以解决问题、实现目标,并在实施过程中最大化资源利用和风险管理。
方案是为解决特定问题或达成特定目标而制定的一系列计划或步骤。它的作用是提供一种系统性的方法,以有效地应对挑战、优化流程或实现目标。以下是方案的主要作用: 问题解决: 方案的核心目标是解决问题。通过系统性的规划和执行,方案能够分析问题的根本原因,提供可行的解决方案,并引导实施过程,确保问题得到合理解决。 目标达成: 方案通常与明确的目标相关联,它提供了一种达成这些目标的计划。无论是企业战略、项目管理还是个人发展,方案的制定都有助于明确目标并提供达成目标的路径。 资源优化: 方案在设计时考虑了可用资源,以最大化其效用。通过明智的资源分配,方案可以在有限的资源条件下实现最大的效益,提高效率并减少浪费。 风险管理: 方案通常会对潜在的风险进行评估,并制定相应的风险管理策略。这有助于减轻潜在问题的影响,提高方案的可行性和可持续性。 决策支持: 方案提供了决策者所需的信息和数据,以便做出明智的决策。这种数据驱动的方法有助于减少不确定性,提高决策的准确性。 团队协作: 复杂的问题通常需要多个人的协同努力。方案提供了一个共同的框架,帮助团队成员理解各自的职责和任务,促进协作并确保整个团队朝着共同的目标努力。 监控与评估: 方案通常包括监控和评估的机制,以确保实施的有效性。通过定期的评估,可以及时调整方案,以适应变化的环境或新的挑战。 总体而言,方案的作用在于提供一种有序、有计划的方法,以解决问题、实现目标,并在实施过程中最大化资源利用和风险管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值