Android中如何自己製作su

2021-06-21 23:15:52 字數 3501 閱讀 4155

本文原部落格:

在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 undef ...

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 ...