当前位置:   article > 正文

android系统添加自己写的工具_com.mediatek.autobootcontroller 包名

com.mediatek.autobootcontroller 包名

    在android系统的源码有很多工具的源码。存放路径如下

    android/system 底层文件系统库、应用及组件,linux自带的
    android/external android 使用的一些开源的模组
    android/frameworks/base/cmds 一些android重要命令:am、app_proce等

    实际上这些工具都是小应用。调试串口接电脑,开启控制台可以使用这些工具。如果USB连电脑,用adb调试工具,输入adb shell指令进入控制台 。dumpsys:能dump系统服务的各种状态。
dumpstatus:android的相关信息,内核,进程,相关信息的主要实现地方
top:CPU使用
pm:包管理(package manager)
am:活动管理activity manager
tinyalsa:音频调试,有tinycap、tinymix、tinyplay
settings:更改SettingsProvider数据库的值
logcat:系统日志
monkey:测试工具
svc:控制电源、数据流量、wifi、usb、以太网的开关状态
wm:查看设置屏幕的分辨率、密度
screencap:截屏

screenrecord:录屏

    目标设备的system/bin和system/xbin有android添加的一些工具和linux自带的工具,这些工具可能是java、c、c++或shell指令写的。上面提到的几个工具都挺好玩的,具体使用方法可以输入参数--help查看帮助或者网上搜索。

欢迎来到我的网站wzjdy.cc

     这里介绍如何自己用c或者c++编写一个工具并且在android编译的时候加入到系统当中

一 编写一个测试ioctl接口的小工具

    创建文件夹frameworks/base/cmds/dytest

1.创建Android.mk文件

  1. LOCAL_PATH:= $(call my-dir)
  2. include $(CLEAR_VARS)
  3. LOCAL_SRC_FILES:= \
  4. test.c \
  5. LOCAL_SHARED_LIBRARIES := \
  6. libcutils \
  7. liblog \
  8. LOCAL_LDLIBS :=-llog
  9. LOCAL_MODULE:= dytest
  10. LOCAL_MODULE_TAGS := optional
  11. include $(BUILD_EXECUTABLE)

2.创建test.h

  1. #include <linux/types.h>
  2. #include <linux/stddef.h>
  3. #include <asm/ioctl.h>
  4. #ifndef IO_BASIC_H_
  5. #define IO_BASIC_H_
  6. #define RD_UNIT_SIZE 1024
  7. #define WR_UNIT_SIZE 1024
  8. #define RDWR_UNIT_SIZE 1024
  9. #define S_IRWXU 00700
  10. #define S_IRUSR 00400
  11. #define S_IWUSR 00200
  12. #define S_IXUSR 00100
  13. #define S_IRWXG 00070
  14. #define S_IRGRP 00040
  15. #define S_IWGRP 00020
  16. #define S_IXGRP 00010
  17. #define S_IRWXO 00007
  18. #define S_IROTH 00004
  19. #define S_IWOTH 00002
  20. #define S_IXOTH 00001
  21. #define SI4754_CMDMAGIC 0X81
  22. #define usrdatatype unsigned long
  23. enum FM_CMD_TYPE{
  24. FM_START = _IOWR(SI4754_CMDMAGIC, 1, unsigned long),
  25. FM_STOP,
  26. FM_SEEKUP,
  27. FM_SEEKDOWN,
  28. FM_SETFREQ,
  29. FM_SETVOL,
  30. FM_GETFREQ,
  31. FM_GETVOL,
  32. FM_TEST
  33. };
  34. /*
  35. ============================================================================
  36. Name : IO_Operation.c
  37. Author : DongYi
  38. Version :
  39. ============================================================================
  40. */
  41. //以O_RDWR | O_CREAT | O_TRUNC,S_IWUSR | S_IRUSR | S_IWGRP | S_IRGRP | S_IROTH权限打开文件
  42. int open_file(const char* filename);
  43. //以O_RDWR | O_CREAT | O_TRUNC,S_IWUSR | S_IRUSR | S_IWGRP | S_IRGRP | S_IROTH权限打开文件
  44. int open_file_create(const char* filename) ;
  45. //以O_RDONLY,S_IWUSR | S_IRUSR | S_IWGRP | S_IRGRP | S_IROTH权限打开文件

3.创建test.c

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <asm/io.h>
  4. #include <sys/types.h>
  5. #include <sys/stat.h>
  6. #include <fcntl.h>
  7. #include <unistd.h>
  8. #include <linux/delay.h>
  9. #include "test.h"
  10. unsigned long qndData;
  11. const char* filename = "/dev/fmsi4754";
  12. int open_file(const char* filename) {
  13. return open_file_create(filename);
  14. }
  15. int open_file_create(const char* filename) {
  16. int fd; //文件描述符
  17. fd = open(filename, O_RDWR | O_CREAT | O_TRUNC,
  18. S_IWUSR | S_IRUSR | S_IWGRP | S_IRGRP | S_IROTH);
  19. if (fd == -1) {
  20. printf("\nopen_file:文件操作失败");
  21. return -1;
  22. }
  23. printf("\nopen_file:文件操作成功");
  24. return fd;
  25. }
  26. int main(void) {
  27. int fp;
  28. int ret;
  29. char buf[1024]={0};
  30. long len;
  31. puts("~~~~~~~~~~test.c测试程序 Linux I/O操作~~~~~~~~~~~~\n\n"); /* prints Linux I/O操作 */
  32. // for(len=64000;len>0;len--);
  33. sleep(1);
  34. fp = open_file_create(filename);
  35. if (fp < 0) {
  36. printf("open_file:faild!\n");
  37. return -1;
  38. }else{
  39. printf("open_file:success!\n");
  40. }
  41. qndData=0x12345678;
  42. do{
  43. ret=ioctl(fp, FM_START, &qndData);
  44. printf("ioctl_file:qndData:0x%x\n ",qndData);
  45. if (ret < 0) {
  46. printf("ioctl_file:faild!\n");
  47. close(fp);
  48. return -1;
  49. }else{
  50. printf("ioctl_file:success\n");
  51. }
  52. }while(qndData==0x12345678); //开机
  53. return 1;
  54. }

    代码和编译规则文件准备好了,输入mmm frameworks/base/cmds/dytest/编译。烧录就可使用。

    这个工具还可以使用arm-linux-androideabi-gcc工具编译

arm-linux-androideabi-gcc -o dytest --sysroot=/home/android/SambShare/dyT3-v1.0/android/prebuilts/ndk/current/platforms/android-18/arch-arm/ test.c
    用这个方式编译的话就要把dytest工具push到android系统,然后修改权限。当然你也可以用android.mk文件拷贝dytest到system/bin目录下。


二添加android权限后门工具seustub

    这个工具是在网上下载的,不方便公布代码,博客android新版本中如何解决厂商应用的su权限,实际使用socket实现在控制台输入指令。

    获取seustub压缩包后解压seustub放置在external/文件夹

1.external/seustub/下创建Android.mk

  1. include external/seustub/seustub/Android.mk
  2. include external/seustub/seustubtest/Android.mk


2.创建external/seustub/seustub/Android.mk

  1. LOCAL_PATH:= $(call my-dir)
  2. include $(CLEAR_VARS)
  3. LOCAL_SRC_FILES:= \
  4. seustub.cpp \
  5. util.cpp \
  6. LOCAL_SHARED_LIBRARIES := \
  7. libcutils \
  8. liblog \
  9. LOCAL_LDLIBS :=-llog
  10. LOCAL_MODULE:= seustub
  11. LOCAL_MODULE_TAGS := optional
  12. include $(BUILD_EXECUTABLE)

3.创建external/seustub/seustubtest/Android.mk

  1. LOCAL_PATH:= $(call my-dir)
  2. include $(CLEAR_VARS)
  3. LOCAL_SRC_FILES:= \
  4. seustubtest.cpp \
  5. ../seustub/util.cpp \
  6. LOCAL_SHARED_LIBRARIES := \
  7. libcutils \
  8. liblog \
  9. LOCAL_LDLIBS :=-llog
  10. LOCAL_MODULE:= seustubtest
  11. LOCAL_MODULE_TAGS := optional
  12. include $(BUILD_EXECUTABLE)


4.init.rc中添加启动服务

service seustub /system/bin/seustub  
    class main 

    最后输入mmm android/external/seustub编译

    使用方法是seustubtest +指令+参数,例seustubtest chmod 777 /dev/si4754
    公司的JAVA应用需要临时的root权限,还需要获取返回值判断指令的成功。因此删除seustubtest部分,为seustub添加了供上层调用的JNI接口,并且指令的返回结果输出到文件中。不做详细介绍。

    。。。。。。














声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/134521
推荐阅读
相关标签
  

闽ICP备14008679号