免Root静默安装
实现原理:在PC上运行一Java程序,建立socket服务器与app通信,远程执行app下发的代码。「并不是给 app 提权,而是运行了一个有 shell 权限的新程序」
Tips:需要USB连着PC,实现免Root点击任意位置或静默安装。
步骤:
- 运行app。连着PC,adb shell后才可以输入app_process指令
- 找到build/outputs/apk/debug/app-debug.apk,解压得到classes.dex。通过app_process来启动
app_process -Djava.class.path=/data/local/tmp/classes.dex /system/bin shellService.Main
通过「app_process」来启动 Java 。app_process 的参数如下:
1 | app_process [vm-options] cmd-dir [options] start-class-name[main-options] |
vm-options – VM 选项
cmd-dir –父目录 (/system/bin)
options –运行的参数 :
–zygote
–start-system-server
–application (api>=14)
–nice-name=nice_proc_name (api>=14)
start-class-name–包含main方法的主类 (com.android.commands.am.Am)
main-options–启动时候传递到main方法中的参数
**完整代码**
- app代码:发送指令
1 | //app/src/main/java/top.gtf35.shellapplicatontest/MainActivity.java |
1 | //app/src/main/java/top.gtf35.shellapplicatontest/SocketClient.java |
- java程序代码:接收指令,执行免root的操作
1 | //app/src/main/java/shellService/shellService.Main.java Java程序启动新线程 |
1 | //app/src/main/java/shellService/ServiceThread.java 子线程调用服务,服务中执行指令 |
1 | //app/src/main/java/shellService/Service.java 执行具体指令的服务 |
1 | //app/src/main/java/shellService/ServiceSellUtils.java 执行命令的工具类 |