Running frida without root

Running frida without root
S0cke3t关于ROOT
ARMV8的引入以及Google对安全的重视,使得Android获取ROOT权限很难。那个仅仅依靠一个apk就能实现手机ROOT的时代基本上一去不返了。apk提权基于的是Android系统的漏洞,目前Android已经很完善了,寻找漏洞非常困难。
目前获取ROOT基本都是通过刷安装包来实现。当然了Android模拟器可以很轻松获取ROOT权限。但是很多APP都对模拟器有检测,并且模拟器的架构基本上基于的是x86,与arm有很大的区别。
市面上大多数的手机都是非ROOT的,不能为了使用一次Frida就去刷机吧
————————————————
摘自: helloworlddm
确定手机cpu架构
1 | adb shell getprop ro.product.cpu.abi |
APK设置
解包
1 | java -jar apktool_2.7.0.jar d "G:\Android\SecDemo\app\release\app-release.apk" -o E:\AndroidSec\Secdemo-decomplie -f |
编辑AndroidManifest
添加android:debuggable="true"
如果apk没有联网权限添加
1 | <uses-permission android:name="android.permission.INTERNET" /> |
添加frida-gadget依赖库文件
下载Frida-gadget依赖库文件https://github.com/frida/frida/releases
在解包lib目录对应架构目录下添加frida-gadget依赖库文件,并重命名为libfrida-gadget.so
如果apk未引用native层函数,则手动创建相应目录
编辑Smali
修改smali代码,加载libfrida-gadget.so,通常是在Application的onCreate方法或者启动Activity的onCreate方法
代码含义
1 | .locals 1 //声明局部寄存器数量 |
重新打包APK
1 | java -jar apktool_2.7.0.jar b E:\AndroidSec\Secdemo-decomplie -o secdemo-unsigned.apk |
重签名APK
1 | apksigner.bat sign -verbose --ks secdemo.jks --v1-signing-enabled true --v2-signing-enabled true --ks-pass pass:123456 --ks-key-alias key0 --out s ecdemo-signed.apk secdemo-unsigned.apk |
覆盖安装APK
1 | adb install -r secdemo-signed.apk |
启动Frida-server
启动apk,此时apk会卡住,说明frida-server正在等待连接
使用logcat查看frida-server是否启动成功
1 | adb shell |
看到Listening on 127.0.0.1 TCP port 27042说明firda-server监听成功
Hook测试
接下来就是正常使用frida客户端进行hook了
随便写一个hook脚本
加载脚本
1 | frida.exe -U Gadget -l hook.js |















