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,可将其去掉),点击执行即可
至此完成
Android 执行shell命令 非root的更多相关文章
- Android执行shell命令
一.方法 /** * 执行一个shell命令,并返回字符串值 * * @param cmd * 命令名称&参数组成的数组(例如:{"/system/bin/cat", &q ...
- Android执行shell命令 top ps
Android执行shell命令 一.方法 /** * 执行一个shell命令,并返回字符串值 * * @param cmd * 命令名称&参数组成的数组(例如:{"/system/ ...
- Android Java执行Shell命令
最新内容建议直接访问原文:http://www.trinea.cn/android/android-java-execute-shell-commands/ 主要介绍Android或Java应用中如何 ...
- Android 用java语言执行Shell命令
最近项目中需要用到java语言来执行shell命令,在网上查了资料, 把自己在项目里用到的命令整理成了工具类开放给大家,希望对大家有用.功能不全,后期我会慢慢添加整合. public class Sh ...
- c++ cgi执行shell命令l发送qq邮件mailx
#include <cstdlib> //随机数 #include <iostream> #include <cstdio> //popen函数调用的需要 #inc ...
- Linux远程执行Shell命令或脚本
## 远程执行shell命令 ssh [user]@[server] '[command]' # eg. ssh root@192.168.1.1 'uptime' ## 远程执行本地shell脚本 ...
- subprocess模块还提供了很多方便的方法来使得执行 shell 命令
现在你可以看到它正常地处理了转义. 注意 实际上你也可以在shell=False那里直接使用一个单独的字符串作为参数, 但是它必须是命令程序本身,这种做法和在一个列表中定义一个args没什么区别.而如 ...
- python(6)-执行shell命令
可以执行shell命令的相关模块和函数有: os.system os.spawn* os.popen* --废弃 popen2.* --废弃 commands.* ...
- loadrunner调用plink,远程linux执行shell命令
loadrunner调用plink,远程linux执行shell命令 脚本: Action() { char* cmd; cmd = lr_eval_string("C:\\\&qu ...
- python中执行shell命令的几个方法小结
原文 http://www.jb51.net/article/55327.htm 最近有个需求就是页面上执行shell命令,第一想到的就是os.system, os.system('cat /proc ...
随机推荐
- ubuntu 同时安装python2 和 python3 版本的 gunicorn
前言 最近在学习使用 gunicorn 部署 flask 项目.发现使用 pip3 安装完 gunicorn后,如如果再使用 pip2 安装 gunicorn,后安装的 gunicorn 就会覆盖掉原 ...
- kafka3.0创建topic出现zookeeper is not a recognized option
在linux云服务器上搭建了一套kafka3.0集群,然后安装以前的创建topic指令,例如这样-- ./kafka-topics.sh --bootstrap-server master:2181, ...
- 解决方案 | 将时间转换为毫秒bat
@echo off setlocal enabledelayedexpansion rem 输入的时间 set "time_input=00:07:07.1" rem 解析时间 f ...
- [oeasy]python0104_指示灯_显示_LED_辉光管_霓虹灯
编码进化 回忆上次内容 x86.arm.riscv等基础架构 都是二进制的 包括各种数据.指令 但是我们接触到的东西 都是屏幕显示出来的字符 计算机 显示出来的 一个个具体的字型 ...
- [oeasy]python0088_字节_Byte_存储单位_KB_MB_GB_TB
编码进化 回忆上次内容 上次 回顾了 字符大战的结果 ibm 曾经的 EBCDIC 由于字符不连续的隐患 导致后续 出现 无数问题 无法补救 7-bit 的 ASA X3.4-1963 字母序号连续 ...
- [oeasy]教您玩转python - 0005- 勇闯地下城
继续运行 回忆上次内容 上次从1行代码进化到了2行代码 yy p粘贴剪贴板中的内容 将剪贴板中的代码粘贴9999次 9999p 真的实现了万行代码梦 是真·圆梦 没有撒谎的那种 不过圆梦之后多少 ...
- 关于使用c++制作蓝牙连接,Windows版本
1 #define _CRT_SECURE_NO_WARNINGS 2 #pragma warning(disable : 4995) 3 #include <iostream> 4 #i ...
- 常用ffmpeg命令集合(收藏吧,帮你省一个录屏软件的会员费)
录制屏幕: 全屏的话用screen-capture-recoder下载地址:https://github.com/rdp/screen-capture-recorder-to-video-window ...
- nodejs的服务器,用ffmpeg推流
http://m.zhizuobiao.com/node/node-19061200018/ ffmpeg -list_devices true -f dshow -i dummyffmpeg -f ...
- 如何在AS中实现mysql查询并输出在视图上
新建子线程启用mysql new Thread(){ @override public void run(){ //在这里进行数据库调用 } }.start(); handler简单使用方法 hand ...