Android Socket学习(三)三方apk执行shell命令

2023-05-16

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/stat.h>
#include <sys/un.h>
#include <sys/socket.h>
#include <utils/Log.h>
#include <sys/epoll.h>
#define MAXFILE 65535 // 最大的文件描述符
char* result;
long lenght = 8192;
char *socket_path = "server-socket";
void executeCMD(const char *cmd) {
    ALOGE(" executeCMD  \n");
    char buf_ps[8192];
    char ps[8192] = { 0 };
    int i = 1;
    char *result2 = NULL;
    FILE *ptr = NULL;
    strcpy(ps, cmd);
    if ((ptr = popen(ps, "r")) != NULL) {
        result = (char *) malloc(lenght * sizeof(char));
        char *result2 = (char *) malloc(lenght * sizeof(char));

        while (fgets(buf_ps, 8192, ptr) != NULL) {
            result = (char *) malloc(lenght * i * sizeof(char));
            if (result2 != NULL)
                strcpy(result, result2);
            strcat(result, buf_ps);
            i++;
            result2 = (char *) malloc(lenght * (i - 1) * sizeof(char));
            strcpy(result2, result);
    	    ALOGE(" executeCMD  result = %s\n",result);
        }
        pclose(ptr);
        ptr = NULL;
    } else {
        printf("popen %s error\n", ps);
    }

}

int main() {

    printf("main rootServer running \n");
     struct sockaddr_un serun, cliun;
       socklen_t cliun_len;
       int listenfd, connfd, size;
       char buf[8192];
       int i, n;

       if ((listenfd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
           perror("socket error");
           exit(1);
       }

       memset(&serun, 0, sizeof(serun));
       serun.sun_family = AF_UNIX;
       serun.sun_path[0] = 0;
       strcpy(serun.sun_path+1,socket_path);
       socklen_t addrlen_ = sizeof(serun.sun_family) + strlen(socket_path) + 1;
	//unlink(socket_path);
       if (bind(listenfd, (struct sockaddr *)&serun, addrlen_) < 0) {
           perror("bind error");
           exit(1);
       }

       if (listen(listenfd, 20) < 0) {
           perror("listen error");
           exit(1);
       }


    while (1) // 守护进程实现的服务
    {
        ALOGE("wait connect...\n");
         printf("wait connect...\n");
        socklen_t l =   sizeof(struct sockaddr_un);
        if ((connfd = accept(listenfd,(struct sockaddr *) &cliun,  &l)) < 0) {
            perror("accept");
            //return 1;
        }
        int len =0;
        if ((len = recv(connfd, buf, 8192, 0)) > 0) {
            ALOGE("connect  recv\n");
            buf[len] = '\0';
            printf("%s\n", buf);
            executeCMD(buf);
            if (strlen(result) == 0) {
                strcpy(result, "Returing is null!");
            }
            if (send(connfd, result, strlen(result), 0) < 0) {
                perror("write");
                //return 1;
            }
        }
        close(connfd);
    }

    close(listenfd);
    return 0;
}

mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES := SocketClient.c

LOCAL_MODULE := rootclient
LOCAL_SHARED_LIBRARIES :=liblog

LOCAL_PRELINK_MODULE := false

include $(BUILD_EXECUTABLE)

system/core/adb/daemon/main.cpp

StartSubprocess("./system/bin/rootServer", nullptr, SubprocessType::kRaw,
                              SubprocessProtocol::kNone);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Socket学习(三)三方apk执行shell命令 的相关文章

  • Android SoundPool 堆限制

    我正在使用 SoundPool 加载多个声音剪辑并播放它们 据我所知 它的功能 100 正确 但在 load 调用期间 我的日志中充斥着以下内容 06 09 11 30 26 110 ERROR AudioCache 23363 Heap
  • 如何将安卓手机从睡眠状态唤醒?

    如何以编程方式将 Android 手机从睡眠状态唤醒 挂起至内存 我不想获取任何唤醒锁 这意味着手机在禁用 CPU 的情况下进入 真正的 睡眠状态 我想我可以使用某种RTC 实时时钟 机制 有人有例子吗 Thanks 为了让Activity
  • Phonegap - 如何将.txt文件保存在Android手机的根目录中

    我正在尝试使用phonegap 将 txt 文件保存在Android 手机的根目录中 我已经安装了这些插件 cordova plugin file 和 cordova plugin file transfer 在 config xml 文件
  • sed 错误“未终止的 's' 命令”故障排除

    我正在构建一个script https stackoverflow com questions 4036832 replacing a specific term in an xml file其中 它将用文件夹路径替换 XML 文件中的模式
  • 菜单未显示在应用程序中

    由于某种原因 我的操作菜单在我的 Android Studio 应用程序中消失了 我正在按照教程学习如何创建 Android 应用程序 但最终遇到了这个问题 我正在使用 atm 的教程 http www raywenderlich com
  • Android libgdx 首选项丢失

    我在 Libgdx 引擎中创建了 Android 游戏 一段时间后 我注意到在某些应用程序杀手中杀死该应用程序后 或者如果我在 Android 设置中执行 强制关闭 操作 我保存到首选项中的游戏选项就会丢失 有办法防止这种情况吗 我从来没有
  • 线程自动利用多个CPU核心?

    假设我的应用程序运行 2 个线程 例如渲染线程和游戏更新线程 如果它在具有多核 CPU 当今典型 的移动设备上运行 我是否可以期望线程在可能的情况下自动分配给不同的核心 我知道底层操作系统内核 Android linux内核 决定调度 我的
  • 在 iOS 模拟器中安装应用程序的脚本

    我正在尝试自动化构建应用程序 运行单元测试以及最终运行 UI 测试的过程 我正在通过命令行 xcodebuild sdk iphonesimulator6 0 在某个目录中构建应用程序 如何通过命令行 在 Library Applicati
  • 已经使用 AsyncTask doInBackground 但新数据未显示

    我使用 AsyncTask 创建一个聊天室来接收消息 因此它总是检查即将到来的消息并将其显示给客户端 但代码似乎无法按我希望的方式工作 在客户端只显示所有旧数据 新数据不显示 因为当我尝试从服务器发送消息时 新数据没有显示在客户端中 我对这
  • Android 原理图内容提供程序库配置?

    Jake Wharton 在最近的一次演讲中提到了这个库 它看起来是避免大量样板文件的好方法 所以我尝试了一下 但没有任何成功 https github com SimonVT schematic https github com Simo
  • 获取 AlarmManager 中活动的 PendingIntents 列表

    我有办法获取活动列表PendingIntent在设备中 我开始工作AlarmManager我想看看我的PendingIntents 已正确创建和删除 也很高兴看到其他什么PendingIntent在那里 只是为了看看某些应用程序是否正在做一
  • 应用程序未安装在 Android 模拟器上

    我正在 android Geocoder 中开发一个应用程序 当我运行该应用程序时 它会显示 2011 01 11 11 08 13 GeoTourProject 自动目标模式 使用现有模拟器 emulator 5554 运行兼容的 AVD
  • MediaCodec 创建输入表面

    我想使用 MediaCodec 将 Surface 编码为 H 264 使用 API 18 有一种方法可以通过调用 createInputSurface 然后在该表面上绘图来对表面中的内容进行编码 我在 createInputSurface
  • 应用程序关闭时的倒计时问题

    我制作了一个 CountDownTimer 代码 我希望 CountDownTimer 在完成时重新启动 即使应用程序已关闭 但它仅在应用程序正在运行或重新启动应用程序时重新启动 因此 如果我在倒计时为 00 10 分钟 秒 时关闭应用程序
  • Android - 将 ImageView 保存到具有全分辨率图像的文件

    我将图像放入 ImageView 中 并实现了多点触控来调整 ImageView 中的图像大小和移动图像 现在我需要将调整大小的图像保存到图像文件中 我已经尝试过 getDrawingCache 但该图像具有 ImageView 的大小 我
  • 使用 Espresso 检查 EditText 的字体大小、高度和宽度

    如何使用 Espresso 检查 EditText 的字体大小 高度和宽度 目前要分割我使用的文本 onView withId R id editText1 perform clearText typeText Amr 并阅读文本 onVi
  • 如何将图像从 Android 应用程序上传到网络服务器的特定文件夹中

    如何将图像从 android 移动到 Web 服务器上的指定文件夹 这是我的安卓代码 package com example bitmaptest import java io ByteArrayOutputStream import ja
  • 在 Android 中,如何将字符串从 Activity 传递到 Service?

    任何人都可以告诉如何将字符串或整数从活动传递到服务 我试图传递一个整数 setpossition 4 但它不需要 启动时总是需要 0 Service 我不知道为什么我不能通过使用 Service 实例从 Activity 进行操作 publ
  • 无法运行我的应用程序,要求选择 Android SDK

    今天我已经安装了Android Studio 金丝雀 1 现在我无法运行我的应用程序 将出现以下对话框 我已经通过 文件 gt 项目结构 gt Android SDK 位置 设置了正确的 SDK 位置 期待您的帮助来解决这个问题 警告对话框
  • 在 Google 地图上绘制线条/路径

    我很长一段时间都在忙于寻找如何在 HelloMapView 中的地图上的两个 GPS 点之间画一条线 但没有运气 谁能告诉我该怎么做 假设我使用扩展 MapView 的 HelloMapView 我需要使用叠加层吗 如果是这样 我是否必须重

随机推荐

  • ftp连接错误——服务器发回了不可路由的地址。使用服务器地址代替。

    设置filezilla客户端的连接参数 选中某一连接项高级 加密 只使用普通ftp传输设置 传输模式 主动重新连接
  • VNC内网穿透--MAC控制windos

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言SSH和VNCSSHSSH服务端SSH客户端 VNCVNC serverVNC viewer 内网穿透花生壳 前言 翻出很久
  • Excel 2016双击文件打开为空白的解决办法

    故障描述 xff1a 安装Office 2016后 xff0c 双击EXCEL文件打开后显示为空白 解决办法 xff1a 开始 运行 regedit 修改HKEY CLASSES ROOT Excel Sheet 12 shell Open
  • Linux 修改远程默认端口(22)

    如题 xff1a 在此前 xff0c 建议先查看redhat的release版本 xff0c CentOS 7的启动服务不同 xff1a more etc redhat release 正文 xff1a 1 编辑sshd配置 xff0c 修
  • pytorch环境配置(装cuda、cudnn)win10+cuda10.1+cudnn7.6.5+torch1.7.1 && 集显装pytorch

    为了装这个走了太多坑了 xff0c 所以想写一篇具体教程 xff0c 有缘人看吧 xff0c 希望能解决你的问题 xff08 第一次写文章啥也不懂 xff0c 万一冒犯了啥 xff0c 麻烦告知我改 xff09 我anaconda很早就装过
  • APM无人机软件在环仿真环境搭建

    题记 xff1a 最近做毕业设计得用到无人机仿真 xff0c 重操旧业 xff0c 搞一搞SITL仿真 给个传送门参考 xff1a 无人机SITL仿真 APM软件在环仿真 我的环境 xff1a ubuntu18 04虚拟机 1 官方教程 a
  • 无人机导航中的各类坐标系

    无人机中的各类坐标系学习笔记 xff1a 北东地坐标系 NED north east down 东北天 ENU east north up 机体坐标系 body frame 1 导航中的坐标系理解 重要参考 导航中 xff0c 最重要的两个
  • 有了Systick中断为什么还要PendSV中断?

    文章目录 问题 xff1a 原因 xff1a 1 在SysTick中断里完成任务切换会降低操作系统的实时性 xff1a 2 把systick优先级设置为最高把PendSV设置为最低的好处 xff1a 3 结语 xff1a 问题 xff1a
  • OpenCV/caffe安装流程

    公司正在做人脸识别系统 xff0c 用到了OpenCV库 xff0c 下面就是根据网上资料以及自己多次部署安装的经验整理的安装流程 xff0c 希望能给一些人一点参考 系统 xff1a Ubuntu1604 CPU架构 xff1a 一般是x
  • win10远程桌面连接ubuntu18.04

    一开始 xff0c 我是根据这个教程进行操作的 xff0c 改了设置为共享 xff0c 安装xrdp等 xff0c 一切都完成后 xff0c 当进行连接时 xff0c 也会出现那个xrdp连接界面 xff0c 但只要一登陆 xff0c 界面
  • 机器学习算法知识点整理

    1生成模型generative model和判别模型 discriminative model 已知输入变量x xff0c 生成模型通过对观测值和标注数据计算联合概率分布P x y 来达到判定估算y的目的 判别模型通过求解条件概率分布P y
  • 我的2014年总结——奔波的一年

    2014年 xff0c 发生了一些人生的大事 xff0c 这些事既有忧 xff0c 又有喜 这因为有这些事情的发生 xff0c 所以我们才越发成熟 xff0c 越发稳重 2014年技术的提升没有前2年那么突飞猛进了 xff0c 生活的事情也
  • 谈谈你对Spring Bean生命周期的理解【面试】

    前言 面试中经常会被问到Spring Bean的生命周期 xff0c 有些人说记不住 xff0c 看了一遍源码也是云里雾里的 xff0c 那是因为只看理论 xff0c 没有自己实践 xff0c 如果自己亲自写代码验证一下 xff0c 不管是
  • FreeRTOS初级篇----名称规范

    数据类型 TickType t xff1a FreeRTOS中断计数值类型 xff0c 可以是16位也可以是32位 xff0c 对于32位CPU来说TickType t最好为32位 BaseType t xff1a 是能够让CPU运行效率最
  • FreeRTOS初级篇----创建任务--动态创建、静态创建

    任务创建函数 xff1a xTaskCreate BaseType t span class token function xTaskCreate span span class token punctuation span TaskFun
  • Linux 性能测试与分析

    源自 http blog sina com cn s blog 71ad0d3f01019uzl html Linux 性能测试与分析 Revision History Version Date Author Description 1 0
  • HashMap底层原理

    文章目录 1 HashMap的概念2 底层数据结构2 JDK1 8之前存在的问题 xff1f 3 问题 xff1a 加载因子为什么默认值为0 75f xff1f 4 问题 xff1a 如果得到key的hash值 xff08 哈希码 xff0
  • 解决虚拟机能够ping通本机,但是无法上网问题

    查看centos网关是否设置正确 root 64 localhost ethan grep GATEWAY etc sysconfig network scripts ifcfg etc sysconfig network scripts
  • c语言字符串分割函数

    C语言字符串分割 strsep函数用于分解字符串为一组字符串 定义语句为char strsep char stringp const char delim 使用实例 xff1a include lt stdio h gt include l
  • Android Socket学习(三)三方apk执行shell命令

    include lt stdio h gt include lt stdlib h gt include lt string h gt include lt fcntl h gt include lt sys types h gt incl