推广

【Android】免Root实现静默安装和点击任意位置(非无障碍)

iseeyu2年前 (2024-02-21)推广136

image

我们新建个包,存放我们要在 shell 下运行的 Java 代码:

image

这里我们补全 Main 方法,因为我们这个不是个 Android 程序,只是编译成 dex 的纯 Java 程序,所以我们这个的入口是 Main :

package shellService;

public class Main {
    public static void main(String[] args){
        System.out.println("我是在 shell 里运行的!!!");
    }
}

我们在代码里只是打印一行「我是在 shell 里运行的!!!」,因为这里是纯 Java 所以也用的 println。现在编译 apk:

image

因为 apk 就是 zip 所以我们直接解压出 apk 文件里的classes.dex,然后执行 :

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

这时就能看到已经成功运行啦:

image

这里因为 utf8 在 Windows shell 里有题,所以乱码了,但是还是说明我们成功了。

4 具有实用性

只能输出肯定是不行的,不具有实用性。我们之前说过,我们应该建立个本地 socket 服务器来接受命令并执行,这里的「Service」类实现了这个功能,因为如何建立 socket 不是文章的重点,所以大家只要知道这个类内部实现了一个「ServiceGetText」接口,在收到命令之后会把命令内容作为参数回掉 getText 方法,然后我们执行 shell 命令之后,吧结果作为字符串返回即可,具体实现可以看查看源码Service。

我们新建一个「ServiceThread」来运行「Service」服务和执行设立了命令:

public class ServiceThread extends Thread {
    private static int ShellPORT = 4521;

    @Override
    public void run() {
        System.out.println(">>>>>>Shell服务端程序被调用<<<<<<");
        new Service(new Service.ServiceGetText() {
            @Override
            public String getText(String text) {
                if (text.startsWith("###AreYouOK")){
                    return "###IamOK#";
                }
                try{
                    ServiceShellUtils.ServiceShellCommandResult sr =  ServiceShellUtils.execCommand(text, false);
                    if (sr.result == 0){
                        return "###ShellOK#" + sr.successMsg;
                    } else {
                        return "###ShellError#" + sr.errorMsg;
                    }
                }catch (Exception e){
                    return "###CodeError#" + e.toString();
                }
            }
        }, ShellPORT);
    }
}

其中 ServiceShellUtils 用到了开源项目 ShellUtils 在此感谢。这个类用来执行 shell 命令。

然后在 Main 中调用这个线程:

public class Main {

    public static void main(String[] args){
        new ServiceThread().start();
        while (true);
    }

}

这样,我们服务端就准备好了,我们来写控制服务端的 app 。我们新建类「SocketClient」用来和服务端进行通信,并在活动里调用他(完整代码请参看SocketClient和MainActivity):

private void runShell(final String cmd){
        if (TextUtils.isEmpty(cmd)) return;
        new Thread(new Runnable() {
            @Override
            public void run() {
              new SocketClient(cmd, new SocketClient.onServiceSend() {
                  @Override
                  public void getSend(String result) {
                      showTextOnTextView(result);
                  }
              });
            }
        }).start();
    }

然后重复 3 小节的操作,运行这个服务端:

image

然后安装 apk ,运行:

input text HelloWord

image

可以看到,在不 root 的情况下,成功的执行了需要 shell 权限的命令

5 最可爱的人

最后,我真的是要由衷的感谢各种技术分析文章和开源项目,真的太感谢了,没有无条件的奉献就没有互联网这么快的进步。

我对 app_process 利用方法的研究离不开以下项目和前辈的汗水:

Brevent 最早利用app_process进程实现无 root 权限使用的开源应用(虽然已经闭源,仍然尊重并感谢 liudongmiao)

Android system log viewer on Android phone without root. 利用app_process进程实现无 root 权限使用的优秀开源应用

Android上app_process启动java进程 通俗易懂的教程

使用 app_process 来调用高权限 API 分析的很深刻的教程

本文的项目可以在GitHub上获取:https://github.com/gtf35/app_process-shell-use

作者:gtf
链接:https://www.jianshu.com/p/86253b2c49f3
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论

hengbaby
11楼
拔掉数据线就停止运行的可以试试在 app-process 前加 nohup 试试,我加了这个拔掉数据线就正常了

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://0291.com.cn/post/57658.html

相关文章

下载app拼多多签到

下载app拼多多签到

标题:轻松下载 app 拼多多签到,领红包、享优惠,让你购物更省钱! 随着互联网的快速发展,购物 APP 已经成为我们生活中不可或缺的一部分。而在众多购物 APP 中,拼多多以其独特的拼团模式和低价商品吸引了大量用户。那么如何更好地使用拼多多呢?答案就是每天签到。今天,我就要给大家...

小编分享企业营销策划公司:广告创意设计与文案师的思考方向。

小编分享企业营销策划公司:广告创意设计与文案师的思考方向。

在网络整合营销公司排名展览中产品导向大家提示了广告创意设计与师的思考方向。在广告作业流程中,广告创意设计与文案人员的职责就是准确地表现产品,塑造产品的个性。如果广告创意设计与文案人员在表现产品的过程中能够充分地把握其表现对象的“产品氛围”,无疑对他全面地认识和思考产品,准确地表现产品,塑造产品的个性...

决定你在seo优化行业做出成绩的三要素。

决定你在seo优化行业做出成绩的三要素。

决定你在seo优化行业做出成绩的三要素!近年来,人们对搜索引擎的依赖性也越来越大。传统企业对网络推广,网站优化越来越重视。因此对SEO优化的需求急剧上升,尤其是对于搜索引擎优化、很多传统企业看中了网络销售这个大市场,也纷纷在其市场上发力,但是商机一瞬而过,我认为只有真正提高执行力的SEO优化才能效果...

逆向思维:但凡是能赚钱的人,都是会拼命的人,无一例外

逆向思维:但凡是能赚钱的人,都是会拼命的人,无一例外

逆向:但凡能的人,都是会拼命的人,无一例外。这个世界上从来就没有什么秘密,太阳底下没有新鲜事。你想要做成事,赚到钱,就是耳熟能详的那些大道理,没有别的。比如,学习,实践,坚持,努力,死磕,拼命,重复,深度思考,高效执行……当然,知信行者说的就是普通人,不是官二代,不是富二代...

抖音小店怎么修改类目?

抖音小店怎么修改类目?

  网店商品类目是对商品种类的一种划分方式,方便消费者搜索商品的同时平台也能更好的管理好店铺,今天幕思城小编就详细的为介绍抖音小店怎么修改类目?抖音小店修改类目有什么注意事宜?这个问题。 一、抖音小店怎么修改类目 抖音类目可分为两类,分别为店铺经营类目和商品类目,不同类型类...

新闻(2022.11.15)

新闻(2022.11.15)

周一,上证指数报3083.40点,下跌0.13%,成交额4545.47亿。深证成指报11113.46点,下跌0.24%,成交额6127.51亿。板指报2375.21点,下跌1.25%,成交额2051.08亿。总体上个股跌多涨少,两市超2800只个股下跌。两市成交额10763...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片