日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android su程序分析

發布時間:2023/12/18 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android su程序分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
android su程序分析


下載位置:https://github.com/ChainsDD/su-binary


1:第一步,查看android.mk
? ?查看這個可以了解編譯結果是動態庫,靜態庫,還是apk 還是bin文件。還有可以看到文件包含關系。這個我們可以看到是
? ?編譯一個可執行文件su


2:需要百度搜索一些資料,/proc/%u/cmdline,getopt_long ,其他相關的百度下,很詳細。


3:查看 su.c 505行
? ? if (ctx.from.uid == AID_ROOT || ctx.from.uid == AID_SHELL)
? ? ? ? allow(&ctx);
? ? ?如果為root或者shell執行,則直接允許。否則繼續向下看:
? ? ?
? ? ?dballow = database_check(&ctx);
? ? ?這個便是讀取之前我們是否保存了對此程序允許還是禁止root權限申請。依據返回結果,直接允許或者
? ? ?禁止,沒有讀到,則繼續。
? ? ?通過?
? ? ?socket_create_temp ?send_intent socket_accept ?socket_send_request socket_receive_result
? ? ?來進行創建了一個socket,從send_intent里面我們可以看到使用了命令
? ? ? /system/bin/am broadcast -a ...... ?借助am腳本,向系統廣播出去一個action=ACTION_REQUEST的
? ? ? 廣播,這時我們的Superuser.apk 的AndroidManifest.xml會注冊接收此廣播,彈出選擇框。
? ? ? 操作完畢后socket_receive_result函數會返回,
? ? ? ? ? if (!strcmp(result, "DENY")) {
? ? ? ? deny(&ctx);
? ? } else if (!strcmp(result, "ALLOW")) {
? ? ? ? allow(&ctx);
? ? ? ? 進行拒絕允許操作。
? ? ? ? deny 函數發送一個拒絕廣播send_intent(ctx, "", 0, ACTION_RESULT);,然后退出。
? ? ? ? allow函數發送一個允許廣播send_intent(ctx, "", 1, ACTION_RESULT); 然后使用 execv(ctx->to.shell, ctx->to.argv + argc);將su進程直接替換成需要執行的
? ? ? ? 程序。發送 send_intent函數的目的是Superuser.apk里面需要存儲數據。
? ? ? ? 至此android su程序分析完畢。


4:編譯自己的su程序
? 參照http://blog.csdn.net/hunhunzi/article/details/6043032,進行修改編譯。
? 編譯完畢先將之前的su備份,將編譯好的重命名為su_my,放到、system/bin下面,使用終端root狀態下輸入chmod 777 su_my
? chmod u+s su_my ,此時可以將su_my重名為su,編譯完成。
參考:


http://os.51cto.com/art/201108/286445.htm
http://hi.baidu.com/williwill/item/377331b8dbedcca2ebba93ee
http://baike.baidu.com/view/906700.htm

總結

以上是生活随笔為你收集整理的android su程序分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。