Frida入门总结

一、Frida概述

    Frida是一款轻量级HOOK框架,可用于多平台上,例如android、windows、ios等。    frida分为两部分,服务端运行在目标机上,通过注入进程的方式来实现劫持应用函数,另一部分运行在系统机器上。    frida上层接口支持js、python、c等。    Frida官方github地址为:frida官方github地址


二、Frida安装

    1 、安装python3.7并配置好环境变量(官方推荐python3以上版本至少为3.7),python安装包官方下载地址:https://www.python.org/downloads/

    2 、安装frida模块,命令为pip install frida(配置了多个python版本环境的可以使用命令python -m pip install frida防止用pip install frida命令报错)。

 3、安装frida-tools模块,命令同上,pip install frida-tools或者python -m pip install frida-tools

  4、下载运行在目标机上的frida-sever端,官方下载地址:https://github.com/frida/frida/releases,下载时要选择对应的版本下载,例如我的机器为arm32为架构,就选择frida-server-12.8.14-android-arm.xz下载。(可以在adb使用命令cat /proc/cpuinfo查询)

 5、将第四步下载好的文件解压,然后通过命令adb push 你的电脑是存放位置 /data/local/tmp将文件传输到手机中,然后通过adb shell进入手机端,给文件赋权777,并于root权限启动。

 6、做完以上几步后,新开一个命令行输入命令frida-ps -U查看手机进程,如果出现以下结果,则frida安装成功。

三、Frida Hook Java层

    1、编写一个小demo用来hook,该demo关键部分代码如下:

2、现在我们将该apk安装好,运行看一下未Hook前的显示字符串!!!

3、现在来编写Hook的Python脚本,脚本代码如下:

  4、现在python脚本编写完毕,我们来执行该脚本,首先手机端执行frida,然后通过命令adb forward tcp:27043 tcp:27043adb forward tcp:27042 tcp:27042来转发这两个端口,接着在手机上运行该应用程序,在命令行中执行脚本,最后点击应用的按钮,即可看到字符串已经被替换成我们要替换的了!!!

四、Frida Hook Native层

  4.1、Hook native层返回值为int类型的demo

     1、还是先写一个小demo,下面贴一下关键代码和未Hook前截图:

代码:

  2、接下来我们来写python hook脚本,我们需要hook native层这个函数,达到返回值修改为0的效果。写到这里需要说明一下关于so文件当中的函数,分为导出函数和未导出函数两种,导出函数打开IDA后能够在导出表中找到的函数就是导出函数,未导出函数则在导出表中寻找不到,一般来说静态编写的native函数都能在导出表中寻找到,而动态加载的则无法在导出表中发现!!!

代码如下:(跟上面hook java层重复的代码不在注释详讲了!!!)

 3、最后在手机端执行frida-server,转发端口,开启应用,执行脚本,点击按钮,即可看到返回值已经被修改成了0,效果图如下:

  4.2、Hook native层返回值为String类型的demo

    1、上面已经写了怎么Hook修改native层函数返回值为int类型的情况,使用replace()函数直接修改即可,但是返回情况为字符串则不一样,在c语言中,返回值为字符串其实是返回了一个char *(字符串指针),所以简单的替换是无法取效果的,具体怎么修改返回值,接着看下面,下面还是贴上demo的关键代码和未Hook前截图:

代码如下:

未Hook前运行截图:

  2、接下来是python Hook脚本(只解释与上面有差异的代码),Hook的函数具体函数名还是使用IDA去寻找

python代码:

3、运行脚本后,点击按钮,我们可以看到字符串已经被替换成了tamper,如下所示:

 4、关于为导出函数的Hook,大体上差不多,差别在于需要通过ida找到偏移值计算地址,而不是像导出函数这么方便罢了,但原理都是差不多的,就不在细说了!!!有兴趣的可以私下探讨哈

发表回复

相关推荐

8個癥狀說明你懷孕瞭!懷孕初期癥狀太準瞭

女性在懷孕初期自己也有可能不知道,沒有生育過的新媽媽缺少經驗,往往要等懷孕一個月後才知道。其實女性在備孕的時候就需要...

· 5秒前

初中歷史 | 八年級歷史上冊期末背記要點【可下載打印】

★溫馨提示:需要電子檔的同學可以直接拉至文末查看領取方式哈!第1課鴉片戰爭一、林則徐虎門銷煙1.虎門銷煙原因:①鴉片不斷輸...

· 8秒前

MGW——美团点评高性能四层负载均衡

本文整理自美团点评技术沙龙第14期:美团背后的故事-你不知道的美团云。

· 28秒前

絕佳聽寫材料!12GEnglishpod全集+CNN新聞中英文本合集分享 | 資源分享

聽寫一向是大傢學習中提高英語的重要方式之一,但是,對於聽寫什麼材料,許多人在選擇上都有一些疑問——是選擇嚴肅正規的時事...

· 1分钟前

流動比率怎麼算-把握好這幾點尤其重要!

在上市公司財務分析中,流動比率是一個比較重要的指標,通過這一數據我們能清楚的瞭解公司的資產負債情況。那麼流動比率怎麼...

· 1分钟前