返回列表 发新帖

【原创教程】非root环境下Frida完全内置apk打包方案及2种注...

  [复制链接]

13

主题

281

回帖

3961

积分

大学生

Rank: 5Rank: 5

金币
1400
好评
17
信誉
108
发表于 2024-11-18 19:11:45 | 显示全部楼层 | 阅读模式  来自 四川
本帖最后由 like 于 2024-11-19 10:08 编辑

   今天简单分享之前验证的一个免ROOT权限Frida完全内置APK方案!让Frida得到更广泛的使用!

  关于frida-gadget使用官方及各论坛都有许多讲解及说明,但似乎都停留在把hook脚本代码存放本地SD目录或者/data/local/tmp。

  对于分析来说完全够用了,但是对于想把实现hook的整体效果直接分享出来就存在局部限制

  那么能不能实现LSPatch类似效果?答案是完全没问题
   先看看效果,直接打开软件就执行内置hook
      


首选我们回顾下frida-gadget注入两种方式,顺便补充完善部分细节,具体如下:

1.基于so层通过添加依赖库方式调用Frida库 (实现原理参考:Android平台感染ELF文件实现模块注入

简单来说就是找个软件启动时候最开始调用so文件,t通过对其注入添加依赖库方式启用frida-gadget


如果apk本身没有so这种方式是否可以?
也没问题,直接通过dex2c方案把部分java方法转换为so调用,再注入就好了!
比如 开源的 https://github.com/codehasan/dex2c 或者某些一键工具



为了让操作简单化,这里我把注入工具重新py写了下,为了普遍可以用特意找win7环境打包独立exe
Windows环境下so注入工具下载见:https://gitee.com/xdvsrs/so-injection-tool-exe
(论坛附件上传运行空间有限,只能借助gitee)
注入操作方式如下图:




2.基于JAVA层Smali代码调用Frida库 (System.loadLibrary("frida");
这是比较常用的方案,通过首启activity或application在方法<init>()或<clinit>()或onCreate植入如下代码
  1.      const-string p0, "frida-gadget"     
  2.      invoke-static {p0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V
复制代码






接下来就是今天重点,如何把脚本也一并内置apk里面,直接安装打开就自动调用

       关于打包进apk后执行js官方文档及之前部分博主、网友是这样讲的
      



   这样并不能实现脚本内置,还得借助ADB或者本地文件夹读取权限才能完成加载hook的js代码,分享使用存在局限性!



      重点!重点!
    通过如下方式实现js跟随依赖库,配置文件处于同一路径,就可以直接加载,
    原理:安装后的 so 文件通常会被存储在以下路径:/data/app/<package-name>/lib/<abi>/
   (本身没有so的APK就手动创建文件夹或者D2C抽取产生)
     


       libjs.so:hook的js代码文件(案例内容)
      
  1. if (Java.available) {
  2. Java.perform(function () {
  3. console.log("Hooking any Activity...");

  4. // 动态获取所有的 Activity 类,并 Hook 其 onCreate 方法
  5. var Activity = Java.use("android.app.Activity");

  6. Activity.onCreate.overload("android.os.Bundle").implementation = function (bundle) {
  7. var activityClassName = this.getClass().getName(); // 获取当前 Activity 类名
  8. console.log(activityClassName + " onCreate hooked!");

  9. // 调用原始的 onCreate 方法
  10. this.onCreate(bundle);

  11. // 获取上下文并在主线程显示 Toast,提示当前 Activity 名称
  12. var context = Java.use('android.app.ActivityThread').currentApplication().getApplicationContext();

  13. Java.scheduleOnMainThread(function() {
  14. var toast = Java.use("android.widget.Toast");
  15. var message = "Frida Hook成功! 通过java层调用 \n当前Activity: " + activityClassName;
  16. toast.makeText(context, Java.use("java.lang.String").$new(message), 1).show();
  17. });
  18. };
  19. });
  20. } else {
  21. console.log("Java environment not available!");
  22. }
复制代码

       libfrida-gadget.config.so: 调用配置内容改如下

  1. {
  2.     "interaction":{
  3.        "type":"script",
  4.         "path":"libjs.so"
  5.     }

  6. }
复制代码




       libfrida-gadget.config.so:Frida依赖库文件(可根据需要自行去下载https://github.com/frida/frida/releases

   


  为了进一步方便大家参考比较,以上2种方式分别做了Demo,可自行下载对比原版改动地方!
  
  完成以上打包,接下来就是自由发挥的时候了!hook!hook!


   测试demo及工具打包下载:
  
  
第三方网盘下载:https://share.feijipan.com/s/waD7AO5K
   



  有待改善优化空间:比如做手机端或者PC端一键注入打包,做魔改,自己二次编译libfrida-gadget定制个人需求功能


  补充:市场上部分应用目前都带加固或者防Frida,如何过检测等等.....就靠大家自己探索了!

  文献主要参考:https://frida.re/docs/gadget/  以及部分前辈、博主文档






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
已有2人评分好评 金币 理由
Alexzander + 1
zhaobo891 + 1 + 1

查看全部评分 总评分:好评 +1  金币 +2 

回复

使用道具 举报

85

主题

7249

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
777
好评
96
信誉
147

考神MT论坛活跃会员MT论坛新人MT论坛最佳新人MT论坛帅哥MT论坛侠客挂机大佬

发表于 2024-11-18 19:22:11 来自手机  | 显示全部楼层  来自 新疆
感谢分享教程
回复

使用道具 举报

1

主题

1361

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
4101
好评
7
信誉
100
发表于 2024-11-18 19:22:39 来自手机  | 显示全部楼层  来自 广东
谢谢分享
回复

使用道具 举报

152

主题

7921

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
11462
好评
10
信誉
104

MT论坛最佳新人考神MT论坛新人MT论坛帅哥

发表于 2024-11-18 19:30:27 来自手机  | 显示全部楼层  来自 云南
感谢分享
回复

使用道具 举报

1

主题

572

回帖

1446

积分

高中生

Rank: 4

金币
1237
好评
0
信誉
100

MT论坛新人

发表于 2024-11-18 19:36:43 来自手机  | 显示全部楼层  来自 江苏
感谢分享
回复

使用道具 举报

688

主题

1万

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
3411
好评
164
信誉
119

考神MT论坛新人MT论坛活跃会员MT论坛帅哥MT论坛灌水老大MT论坛侠客MT论坛最佳新人

发表于 2024-11-18 19:43:04 来自手机  | 显示全部楼层  来自 广东
看看隐藏
回复

使用道具 举报

29

主题

1327

回帖

3841

积分

大学生

Rank: 5Rank: 5

金币
2507
好评
1
信誉
98

考神

发表于 2024-11-18 19:43:36 来自手机  | 显示全部楼层  来自 四川
感谢分享
回复

使用道具 举报

24

主题

3299

回帖

7108

积分

硕士生

Rank: 6Rank: 6

金币
4265
好评
0
信誉
104

MT论坛新人考神

发表于 2024-11-18 19:44:17 来自手机  | 显示全部楼层  来自 河南
路过看看
回复

使用道具 举报

13

主题

7594

回帖

1万

积分

博士生

导师

Rank: 7Rank: 7Rank: 7

金币
3874
好评
0
信誉
100

考神

发表于 2024-11-18 19:53:19 | 显示全部楼层  来自 河北
楼主,你是一个大好人!!
回复

使用道具 举报

2

主题

5595

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
2062
好评
6
信誉
88
发表于 2024-11-18 20:01:29 来自手机  | 显示全部楼层  来自 广东
感谢分享教程
回复

使用道具 举报

133

主题

2336

回帖

9104

积分

硕士生

Rank: 6Rank: 6

金币
3832
好评
87
信誉
105
发表于 2024-11-18 20:06:45 来自手机  | 显示全部楼层  来自 辽宁
感谢分享
回复

使用道具 举报

45

主题

2136

回帖

7484

积分

硕士生

Rank: 6Rank: 6

金币
2063
好评
12
信誉
102
QQ
发表于 2024-11-18 20:14:42 来自手机  | 显示全部楼层  来自 广西
我来看看是什么
回复

使用道具 举报

64

主题

8937

回帖

2万

积分

博士后

学渣

Rank: 8Rank: 8

金币
3155
好评
54
信誉
133

MT论坛最佳新人考神MT论坛活跃会员

发表于 2024-11-18 20:20:07 来自手机  | 显示全部楼层  来自 江苏
看看隐藏
回复

使用道具 举报

6

主题

461

回帖

4344

积分

大学生

Rank: 5Rank: 5

金币
1616
好评
1
信誉
100
发表于 2024-11-18 20:20:08 | 显示全部楼层  来自 香港
感谢分享 试试
回复

使用道具 举报

18

主题

918

回帖

5911

积分

硕士生

Rank: 6Rank: 6

金币
3642
好评
15
信誉
100
发表于 2024-11-18 20:22:43 来自手机  | 显示全部楼层  来自 重庆
康康
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表