在android原始碼的
system\extras(比如
android4.0\system\extras
)下新建乙個目錄,比如
su_robin目錄
在su_robin目錄下包含以三個檔案:
su.h檔案
#ifndef
su_h
#define
su_h 1
#ifdef
log_tag
#undef
log_tag
#endif
#define
log_tag
"robin"
#define
requestor
"com.noshufou.android.su"
#define
requestor_data_path
"/data/data/"
requestor
#define
requestor_cache_path
"/dev/"
requestor
#define
requestor_databases_path requestor_data_path
"/databases"
#define
requestor_database_path requestor_databases_path
"/permissions.sqlite"
/* intent actions */
#define
action_request requestor
".request"
#define
action_result requestor
".result"
#define
default_shell
"/system/bin/sh"
#ifdef
su_legacy_build
#define
version_extra
"l" #else
#define
version_extra
"" #endif
#define
version
"3.1.1"
version_extra
#define
version_code
17
#define
database_version
6 #define
proto_version 0
struct
su_initiator ;
struct
su_request ;
struct
su_context ;
enum
; #endif
注意,這裡的很多東西是多餘。
su.c檔案
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
"su.h"
intmain
(int
argc
,char
*argv
)
char
command
[1024
];
logi
("hello !robin-su end %d !"
,getuid
());
printf
("hello !robin-su end"
);
/* default exec shell. */
execlp
("/system/bin/sh"
,"sh"
,null
); fprintf
(stderr
,"su: exec failed\n"
);
return1;
}
android.mk檔案
local_path :=$
(call my-
dir)
include $
(clear_vars)
local_module
:=sur
local_src_files
:=su.c
local_static_libraries :=\
liblog \
libc \
local_module_path :=$
(target_out_optional_executables
) local_module_tags
:=eng debug
local_force_static_executable
:=true
include $
(build_executable
)
編譯android原始碼,生成rom
如果你還不知道如何編譯android原始碼,請參照
在out\target\product\generic\system\xbin目錄下找到生成的可執行檔案
sur,就是我們自己製作的su檔案
通過adb push命令將其推送到手機上的
system\xbin目錄,
通過執行系統原來自己帶的su切換到root使用者,對手機上sur檔案執行
chmod
6777 sur命令。
使檔案屬性變為
rwsrwsrwx,如下所示 rw
srwsrwx root root 58960 2013-08-29 11:31
sur
然後你可以
通過執行系統原來自己帶的sur切換到root使用者 關於
chmod
6777 sur
命令請參考《
chmod命令基本篇
》和請參考《
chmod命令高階篇( setuid與setgid標識位)》
關於setuid
請參考《
setuid()與setgid()的使用 》
結束!
Android中如何自己製作su
本文原部落格 在android原始碼的 system extras 比如 android4.0 system extras 下新建乙個目錄,比如 su robin目錄 在su robin目錄下包含以三個檔案 su.h檔案 ifndef su h define su h 1 ifdef log tag...
android 開發 製作自己的su
所需材料 su.c android.mk 如果是從android原始碼中提取的su,請自行注釋掉許可權檢查部分哈 1 ubuntu linux環境 進入android原始碼所在目錄 將 su.c,android.mk 拷貝至system extras su 目錄 拷貝前最好備份下原生su 開啟控制台...
docker中如何製作自己的基礎映象
舉個例子 現在把自己的開發環境打包,取名為centos6 base.tar,然後在docker中,以centos6 base.tar作為基準映象。1.建立自己的映象,放置於 root目錄下 tar numeric owner exclude proc exclude sys cvf centos6 ...