您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關Android系統中怎么添加自定義工具,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
在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查看幫助或者網上搜索。
這里介紹如何自己用c或者c++編寫一個工具并且在android編譯的時候加入到系統當中
一 編寫一個測試ioctl接口的小工具
創建文件夾frameworks/base/cmds/dytest
1.創建Android.mk文件
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES:= \ test.c \ LOCAL_SHARED_LIBRARIES := \ libcutils \ liblog \ LOCAL_LDLIBS :=-llog LOCAL_MODULE:= dytest LOCAL_MODULE_TAGS := optional include $(BUILD_EXECUTABLE)
2.創建test.h
#include <linux/types.h> #include <linux/stddef.h> #include <asm/ioctl.h> #ifndef IO_BASIC_H_ #define IO_BASIC_H_ #define RD_UNIT_SIZE 1024 #define WR_UNIT_SIZE 1024 #define RDWR_UNIT_SIZE 1024 #define S_IRWXU 00700 #define S_IRUSR 00400 #define S_IWUSR 00200 #define S_IXUSR 00100 #define S_IRWXG 00070 #define S_IRGRP 00040 #define S_IWGRP 00020 #define S_IXGRP 00010 #define S_IRWXO 00007 #define S_IROTH 00004 #define S_IWOTH 00002 #define S_IXOTH 00001 #define SI4754_CMDMAGIC 0X81 #define usrdatatype unsigned long enum FM_CMD_TYPE{ FM_START = _IOWR(SI4754_CMDMAGIC, 1, unsigned long), FM_STOP, FM_SEEKUP, FM_SEEKDOWN, FM_SETFREQ, FM_SETVOL, FM_GETFREQ, FM_GETVOL, FM_TEST }; /* ============================================================================ Name : IO_Operation.c Author : DongYi Version : ============================================================================ */ //以O_RDWR | O_CREAT | O_TRUNC,S_IWUSR | S_IRUSR | S_IWGRP | S_IRGRP | S_IROTH權限打開文件 int open_file(const char* filename); //以O_RDWR | O_CREAT | O_TRUNC,S_IWUSR | S_IRUSR | S_IWGRP | S_IRGRP | S_IROTH權限打開文件 int open_file_create(const char* filename) ; //以O_RDONLY,S_IWUSR | S_IRUSR | S_IWGRP | S_IRGRP | S_IROTH權限打開文件
3.創建test.c
#include <stdio.h> #include <stdlib.h> #include <asm/io.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <linux/delay.h> #include "test.h" unsigned long qndData; const char* filename = "/dev/fmsi4754"; int open_file(const char* filename) { return open_file_create(filename); } int open_file_create(const char* filename) { int fd; //文件描述符 fd = open(filename, O_RDWR | O_CREAT | O_TRUNC, S_IWUSR | S_IRUSR | S_IWGRP | S_IRGRP | S_IROTH); if (fd == -1) { printf("\nopen_file:文件操作失敗"); return -1; } printf("\nopen_file:文件操作成功"); return fd; } int main(void) { int fp; int ret; char buf[1024]={0}; long len; puts("~~~~~~~~~~test.c測試程序 Linux I/O操作~~~~~~~~~~~~\n\n"); /* prints Linux I/O操作 */ // for(len=64000;len>0;len--); sleep(1); fp = open_file_create(filename); if (fp < 0) { printf("open_file:faild!\n"); return -1; }else{ printf("open_file:success!\n"); } qndData=0x12345678; do{ ret=ioctl(fp, FM_START, &qndData); printf("ioctl_file:qndData:0x%x\n ",qndData); if (ret < 0) { printf("ioctl_file:faild!\n"); close(fp); return -1; }else{ printf("ioctl_file:success\n"); } }while(qndData==0x12345678); //開機 return 1; }
代碼和編譯規則文件準備好了,輸入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
這個工具是在網上下載的,不方便公布代碼,實際使用socket實現在控制臺輸入指令。
獲取seustub壓縮包后解壓seustub放置在external/文件夾
1.external/seustub/下創建Android.mk
include external/seustub/seustub/Android.mk include external/seustub/seustubtest/Android.mk
2.創建external/seustub/seustub/Android.mk
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES:= \ seustub.cpp \ util.cpp \ LOCAL_SHARED_LIBRARIES := \ libcutils \ liblog \ LOCAL_LDLIBS :=-llog LOCAL_MODULE:= seustub LOCAL_MODULE_TAGS := optional include $(BUILD_EXECUTABLE)
3.創建external/seustub/seustubtest/Android.mk
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES:= \ seustubtest.cpp \ ../seustub/util.cpp \ LOCAL_SHARED_LIBRARIES := \ libcutils \ liblog \ LOCAL_LDLIBS :=-llog LOCAL_MODULE:= seustubtest LOCAL_MODULE_TAGS := optional include $(BUILD_EXECUTABLE)
4.init.rc中添加啟動服務
service seustub /system/bin/seustub class main
最后輸入mmm android/external/seustub編譯
使用方法是seustubtest +指令+參數,例seustubtest chmod 777 /dev/si4754
上述就是小編為大家分享的Android系統中怎么添加自定義工具了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。