app逆向基础 安装frida框架

对于frida ,就不再过多解释,是一种可以hook安卓app的工具之一,方便自己在逆向的时候常用的工具之一,现在主要讲解器如何安装。

提前准备软件
  • pip

​ 本篇章主要讲解的是在windows中安装步骤,首先我们确定电脑上有pip这个软件,可以在cmd的dos窗口中可以输入pip 查看是否安装了这个软件。

​ pip是python的一个工具,用来安装python包特别方便,所以一般在配置python环境的时候一般默认都会安装这个软件。

  • adb

adb官网下载

​ 或者本人百度云盘自取:链接: https://pan.baidu.com/s/1oT74bq5JoiLJd0ta7Kutig 提取码: 4f8f

下载后解压到自己想要安装的路径,一般不建议安装在c盘,不过现在很多win10系统只有一个盘符,如果不重新分盘,也没有办法(比如我买的所谓的超级本,一共200多G,懒得分盘所以只有一个c盘)。

第一步:找到自己放的路径比如是 D:/ADB 文件夹找到adb.exe,整体路径是 D:/ADB/adb.exe

第二步:找到图标 “我的电脑”——右击——点击 ”属性“——找到 ”高级系统设置“并点击进入环境变量设置页;点击”环境变量“—— 系统变量框下 找到“Path”——编辑——新建——将刚才复制的adb路径(D:/ADB)粘贴上去——保存即可。
在这里插入图片描述

一般选择放在下面,下面是所有用户都可以用。

第三步:打开cmd 输入输入 adb version ,如果出现版本信息那就是安装上了,如果没有那看是否路径有问题,或者在用户和系统path中都放入adb的路径试试。

硬件设备

需要的设备一个电脑,一个手机(或者安卓模拟器)

安装frida
电脑上安装frida

现在就需要给电脑安装firda 相关的人软件,简单给命令即可

pip install frida-tool
//有时候安装国外资源会慢,所以可以用国内资源
pip3 install frida-tools -i https://pypi.tuna.tsinghua.edu.cn/simple/

等安装完毕后,可以用frida 命令进行测试,电脑是否安装完成打开cmd输入下面命令。当然也有人说pip install frida,然后pip install frida-tool的,其实个人安装的时候直接pip install frida-tool就可以了。

frida --version 

如果出现版本号那就是安装完毕

手机端安装 frida

这个需要有两种一种是手机有root权限(安装frida-server),一种是手机没有root权限的(安装frida-gadget),如果是安卓模拟器一般都是由root权限的。

个人建议最好使用root权限,因为简单直接,不像没有root权限的手机需要手动注入,会有些麻烦。

无论是否由root权限,都必须做两件事情。

第一: 看电脑的frida版本。

第二:看手机的芯片的版本。

目前就以本人的为例子,演示一下过程,所以大家在安装的时候记得注意自己安装的版本要求。

frida version

在这里插入图片描述

adb shell getprop ro.product.cpu.abi

在这里插入图片描述

我的是ARM 处理器 ,如果自己不知道可以百度一下自己的型号。

打开官网:https://github.com/frida/frida/releases

官网frida-server和frida-gadget都用,自己根据自己的需要选择下载。

  • root权限的手机安装 frida-server

在这里插入图片描述

因为分32位和64位,记得确定号版本下载,不过下错了也没有关系,比如我手机是21位,但是大意下载了64位的,然后安装的时候提示无法安装64位,然后删除重新安装即可。

通过adb命令将解压后的软件push到手机里面。cd到解压后的文件里面然后输入下面命令

adb push frida-server-14.2.14-android-arm /data/local/tmp/frida-server

因为一般习惯都是将解压后的文件放入/data/local/tmp这个文件下面,将其改名为frida-server,方便启动。

这个时候就需要运行frida-server,具体如下

//进入安卓手机,可以使用linux的命令
adb shell
//获得root权限
su
//到放frida-server的文件夹里面
cd /data/local/tmp
//修改frida-server的权限修改,如果对linux了解的就知道linux权限可以通过数字来表示
chmod 755 frida-server
//运行frida-server
./frida-server

这个cmd 可以通过ctri+c退出,但是这个窗口在调app的时候不能关闭或退出,如果需要其他操作就重新打开要给cmd进行操作。

为了测试是否安装成功,需要重新打开一个cmd窗口,然后输入frida-ps -U 如果成功输出进程列表,如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5XDlrnLx-1618388405815)(C:\Users\jhfan\AppData\Roaming\Typora\typora-user-images\image-20210414152407411.png)]

那就是安装成功了。但是这个时候你通过python调用frida框架的时候,还会报错的是,因为你缺少了一个端口监控,就是本地和手机是数据两者相互监控,需要输入下面两句

adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043

这两句是默认这样写的,一般不会变,这个时候就可以通过frida框架进行调试app。

  • 非root权限的手机安装frida-gadget

为什么我不建议这种,因为需要对目标应用的app进行反编译注入和调用。

反编译对方的app,需要重新打包以及签名等。

这个又需要一个神奇的软件 apktool,如果没有安装就就看括号里面内容

(如果没有安装就软件安装很简单,本人百度云盘自取:链接: https://pan.baidu.com/s/1oT74bq5JoiLJd0ta7Kutig 提取码: 4f8f 安装步骤在apktool中的readme中写了如何安装,所以这里不在演示了)

打开cmd ,然后cd到下载好的app文件夹下面

apktool d target_app.apk -o target_app_floder

然后下载系统对应版本的 frida-gadget(官网地址上面又),解压并放到指定位置。也是需要根据手机版本进行选择。就算下载错了也没事,可以再根据整个步骤来一遍。

下载的是frida-gadget-14.2.14-android-arm.so.xz,然后解压。如果解压后文件不是so文件,就修改一下后缀.so

对于apd反编译的结构文件,可以看另一篇文章,大体差不多:安卓逆向基础 安卓逆向结构简单说

代码中加载上一步so 文件,建议在应用的入口文件中执行,这样app在运行的时候就会调用frida。
根据 AndroidManifest.xml 文件找到程序的入口文件,例如 MainActivity,在反编译生成的代码 smali 中的 onCreate 方法中注入如下代码。一般的app都是这样的结构,不过后面有些app的方法会被重写。

打开app源码,需要另一个空间,我百度分享里面又jadx,然后找到对应的smail文件进行修改如下(这个还是有点麻烦的,有时候对方修改了需要查找):

const-string v0, "frida-gadget"
invoke-static {v0}, Ljava/lang/System;>loadLibrary(Ljava/lang/String;)V

然后查看AndroidManifest.xml权限

<uses-permission android:name="android.permission.INTERNET" />

然后就需要重新打包 app

apktool b -o repackage.apk target_app_floder

打包完毕的文件会在target_app_floder,这个文件

但是一般反编译的app 都不能直接被安装上,需要签名,签名有好几种,而我常用的是

keytool jarsigner 工具是JAVA JDK自带的

//生成证书命令
 keytool -genkey -keystore target_app.keystore -alias 密码 -keyalg RSA -keysize 4096 -validity 10000
//用证书给apk签名
 jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore target_app.keystore  -signedjar target_app_sign.apk target_app.apk my_alias


然后安装app ,但是有时候我的签名不一定可以过去,这个也是我不建议这种方式的原因之一。

adb install target_app_sign.ap

执行命令,看是否成功

frida-ps -U


frida -U gadget

pip3 install -U objection

objection patchapk -s target_app.apk
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值