Android應用呼叫su的方法

2021-08-22 06:09:20 字數 2187 閱讀 2123

1.首先取消su只限定root,shell使用者使用的限制

code/system/extras/su/su.c

int main(int argc, char** argv) ;

int i = 1;

//char *result2 = null;

file *ptr = null;

strcpy(ps, cmd);

if ((ptr = popen(ps, 「r」)) != null)

pclose(ptr);

ptr = null;

} else int main() else if (pc > 0)

exit(0); // 父程序退出 , 這個子程序變成孤兒程序 , 由 init 程序接管 ,

*/setsid(); // 變為後台程式

chdir("/");

umask(0); // 對所有的許可權開放

for (i = 0; i < maxfile; i++)

close(i); // 關閉所有的不需要的檔案描述符

int server_sockfd; //伺服器端套接字

int client_sockfd; //客戶端套接字

int len;

struct sockaddr_in my_addr; //伺服器網路位址結構體

struct sockaddr_in remote_addr; //客戶端網路位址結構體

int sin_size;

char buf[8192]; //資料傳送的緩衝區

memset(&my_addr, 0, sizeof(my_addr)); //資料初始化--清零

my_addr.sin_family = af_inet; //設定為ip通訊

my_addr.sin_addr.s_addr = inaddr_any; //伺服器ip位址--允許連線到所有本地位址上

my_addr.sin_port = htons(40000); //伺服器端口號

/*建立伺服器端套接字--ipv4協議,面向連線通訊,tcp協議*/

if ((server_sockfd = socket(pf_inet, sock_stream, 0)) < 0)

/*將套接字繫結到伺服器的網路位址上*/

if (bind(server_sockfd, (struct sockaddr *) &my_addr,

sizeof(struct sockaddr)) < 0)

/*監聽連線請求--監聽佇列長度為5*/

listen(server_sockfd, 5);

sin_size = sizeof(struct sockaddr_in);

while (1) // 守護程序實現的服務

//printf("接受到乙個連線:%s \r\n", inet_ntoa(remote_addr.sin_addr));

if ((len = recv(client_sockfd, buf, 8192, 0)) > 0)

if (send(client_sockfd, result, strlen(result), 0) < 0)

}close(client_sockfd);

}close(server_sockfd);

return 0;}

3.suserver security 相關

4.啟動服務

android重複呼叫OnCreate方法的原因

情況1 手機鎖屏或螢幕旋轉 手機橫豎屏的時候重新oncreate,所以在配置檔案中增加了配置選項 android configchanges orientation keyboardhidden 可是跟蹤發現,在螢幕旋轉的時候還會繼續呼叫oncreate 從sdk 3.2 當手機螢幕發現旋轉,新增加...

android系統Intent呼叫應用

public class intentutils 瀏覽網頁 public static void openurl context context,string url 撥打 需要新增許可權 public static void tel context context,string telurl 呼叫...

android 開發 製作自己的su

所需材料 su.c android.mk 如果是從android原始碼中提取的su,請自行注釋掉許可權檢查部分哈 1 ubuntu linux環境 進入android原始碼所在目錄 將 su.c,android.mk 拷貝至system extras su 目錄 拷貝前最好備份下原生su 開啟控制台...