fridaroot hook

本文由 简悦SimpRead 转码, 原文地址 mp.weixin.qq.com

因为相信, 所以看见

答疑,就是在每周四,把问的比较多的,统一回答下。

写文章也会比私信回复更详细些。

本来应该是昨天发的,昨天睡觉去了,拖到了今天。

0

序言

可能有的大佬并不知道frida gadget是个啥。

这里先看看官方对于gadget的解释

官方链接

https://frida.re/docs/gadget/

这句英语意思大概意思是:

frida Gadget是一个动态库,如果注入不适用于当前场景(一般是被检测 或者没root),就用程序加载这个库来达到hook的效果。

frida gadget使用场景

  1. root使用frida
  2. 反调试 反rootfrida很强,绕不过去的时候
  3. frida持久化,frida gadget直接嵌入app不用每次打开frida_server

这里用一个案例演示fridaroot注入

app一般分为有so库和无so库,这篇文章演示有so库的情况

连接方式一般分为等待连接和 直接执行脚本,**这篇文章演示****直接执行脚本**

主要分为以下几个步骤

1

下载frida gadget.so

2

app so添加依赖 加入frida gadget.so

3

编写frida gadget config配置文件

4

编写注入js

5

打包新apk执行

1

下载frida gadget.so

去哪里下载呢?

当当当当

当然是全球最大同性交友网站** github**

直接去fridagithub仓,点击release找想要的版本 去下载就可

链接 https://github.com/frida/frida/releases

2

app so添加依赖 加入frida gadget.so

这一步的原理是,让app在执行so的文件的时候,加载frida-gadget.so

大部分so文件,在运行的时候,都有一些依赖库。

这一步就是把frida gadget.so加入到apk本身so的依赖库中

这一步很多大佬是用lief实现的。

实际上实现这一步的办法挺多的。

喜欢用ubuntu的,可以安装patchelf然后一行命令就搞定了

patchelf地址:https://github.com/NixOS/patchelf

patchelf --add-needed frida-gadget.so apk.so

so easy ,再也不用担心你不会添加依赖了。

实例演示:

看看这里的示例apk

apk只有armv7so文件 其他都没有

wtt.apk里面有一个solibnative-lib.so

这里,直接给libnative-lib.so添加frida-gadget.so依赖库

为了防止检测,frida这特征也太明显了,很容易被检测 被针对

最好把这个so改个名字,比如libcaiji.so改名后如下图

运行patchelf添加依赖库

没有添加frida-gadget.so依赖库之前,libnative-lib.so的依赖库如下

搞完之后 拖进ida看一下libnative-lib.so依赖库

这里可以看到多了一个依赖so

libcaiji.so就是frida-gadget.so改名后的so

3

编写frida gadget config配置文件

关于用gadget.so直接执行脚本

官方文章是有介绍的,机器翻译还是有点问题的,凑合看吧

这里我按照官方的示例,写了一个配置文件

配置文件名libcaiji.config.so

这里,注意配置文件命名的格式,一定是你改名后的名字+ .config.so

libxxx.so
libxxx.config.so

关于命名规则,官方文档是这么描述的

这里,按照上面的格式

修改后的so名为:libcaiji.so

配置文件的名字为:libcaiji.config.so

配置文件代码如下

{
"interaction": {
  "type": "script",
  "path": "/data/local/tmp/hook.js"
}
}

这里虽然后缀名是.so内容其实是json配置文件,这点要注意

4

编写注入js

apk的代码如下

apk正常运行是这样的

这里编写一个注入的js

把 弹窗显示的aaa改成bbb

这里 直接hookcom.wangtietou.no_root.MainActivityaaa方法

改下返回值就可以了

hook.js代码如下

var str_name_class = "com.wangtietou.no_root.MainActivity";

Java.perform(function()
{
   var obj = Java.use(str_name_class);

   obj.aaa.implementation = function ()
  {
       return "bbb";
  }
});

写完js把注入脚本放到之前配置的路径下

这里/data/local/tmp/hook.js

是之前配置文件配置过的路径

一定要写对,不然,找不到执行的js,怎么hook ,凉凉

5

打包签名新apk执行

这里把 改名后的frida-gadget.so和 配置文件, 放到lib下面libnative-lib.so同级目录

再压缩

然后签名

就可以了

这里没有修改dex文件 也没有修改AndroidManifest.xml所以并不用使用apktool重新打包

把修改后的apk目录压缩一下就可以了

搞完后 用apktoolbox重新签个名就ojbk

安装app执行 看一下效果

bingo,成功在没有root的手机上用frida进行了hook

6

结束语

上面搞了这么多,实际上还有更简单的办法

有大佬早就写好了一键脚本

文章地址:https://bbs.pediy.com/thread-268175.htm

脚本地址:https://github.com/nszdhd1/UtilScript/

只不过,脚本用起来不太灵活。

我准备把脚本改改,让脚本用起来更方便。

搞完会分享给大佬们的。

这个文章用到的所有文件,周末会录个视频,然后一起发上去。

以上。

王某某2021.0903于十平米出租屋。

关于作者:

一个乙方安全公司搬砖的菜鸡,移动安全从业者。

最近忙着找女票,忙着在b站当扑街up主。

b/公众号:移动安全王铁头

希望和大佬们一起学习,一起成长

点个

在看

你最好看

上一页
下一页