document.write("");

Android 执行shell命令 非root

一个开源的项目已经完成了这个功能

app_process-shell-use,这个项目网上讲解的,很多,我这边就把操作时一些简要步骤说明一下

但是该方式有缺点:必须要先USB连接,debug的时候,运行第13步,

断开USB 无法再通过Socket运行adb shell命令

国内github又访问不了了,我就在gitee上随便找了个一样的项目,

步骤如下:

1. Android Studio 新增一个没有Activity的项目

2. 新建package shellService

3. 将路径中四个文件都copy到新建的package下

文件地址:https://gitee.com/zhang_yu_xing/app_process-shell-use/tree/master/app/src/main/java/shellService

4. java ->项目包名 ->copyMainActivity,

文件地址:https://gitee.com/zhang_yu_xing/app_process-shell-use/blob/master/app/src/main/java/top/gtf35/shellapplicatontest/MainActivity.java

同路径下,copy工具类

文件地址:https://gitee.com/zhang_yu_xing/app_process-shell-use/blob/master/app/src/main/java/top/gtf35/shellapplicatontest/SocketClient.java

5. res -> layout copy布局

文件地址:https://gitee.com/zhang_yu_xing/app_process-shell-use/blob/master/app/src/main/res/layout/activity_main.xml

6. 文件清单修改,copy应用入口,及默认权限

文件地址:https://gitee.com/zhang_yu_xing/app_process-shell-use/blob/master/app/src/main/AndroidManifest.xml

7.连上设备 debug运行

8. 在项目名称\\app\build\outputs\apk\debug\下存在debug APK,将其解压,将解压后文件夹内的classes.dex copy到与debug APK同级的路径下

 cd app\build\outputs\apk\debug\

9. Android Studio 底部terminal窗口,默认在当前项目下,cd app\build\outputs\apk\debug

10. adb push classes.dex /data/local/tmp

11.adb shell

12.cd /data/local/tmp

13. app_process -Djava.class.path=/data/local/tmp/classes.dex /system/bin shellService.Main

 

至此,执行shell命令的socket服务开启,

打印内容如下:

>>>>>>Shell服务端程序被调用<<<<<<

服务端运行在4521端口

 

在设备运行的初始页面中,输入要执行的命令(如命令前带有abd shell,可将其去掉),点击执行即可

 

至此完成 

 

posted @ 2022-02-23 16:58  人间春风意  阅读(1008)  评论(0编辑  收藏  举报