190702 安卓-Frida-gadget

开始鹅厂实习的社畜搬砖生活(°∀°)ノ

frida-gadget的优势在于通过对应用重打包,加入gadget.so的调用,从而实现frida的hook
这种途径避免了注入所需要的root权限

发现了一个现成的脚本,但测了一下似乎有一些问题,明天修一下看看

以下是手动流程

解包

apktool d xxx.apk
-r选项可以使得不解析资源,但AndroidManifest.xml也不会解析,此时无法添加gadget.so需要的socket权限

添加lib和修改smali

lib/armeabi/libxxx.so

修改入口smali的construct method
将locals加1

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

寄存器名称v0的数字使用locals数量的最后一个

添加权限

在AndroidManifest.xml中,外添加权限

    
    

打包

直接apktool b xxx打包经常会报资源错误,此时有四个解决办法

  1. 暴力删除出错的layout文件
  2. 修改出错的layout文件
  3. 不解包资源文件,也就是在解包的时候加入-r选项
  4. 通过-f -p 选项使得打包时忽略这些资源

apktool b -f -p . xxx -o output.apk

-f => --force-all
-p => resource path

或者单独通过其他程序解码AndroidManifest.xml,添加权限后再编码回目录中,此时可以直接apktool b打包

签名

java -jar signapk.jar testkey.x509.pem testkey.pk8 ori.apk output_sig.apk

安装

apk install -r xxx.apk

-r => replace,直接覆盖旧包

其他

除此以外还有通过其他lib.so的依赖项来加载gadget.so的方法,这样子可以省去修改smali的步骤,但要求APK必须存在至少一个native.so的使用,因此有一定使用条件

你可能感兴趣的:(Android)