国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android 源碼修改,使第三方應(yīng)用可以直接使用su命令

這篇具有很好參考價(jià)值的文章主要介紹了Android 源碼修改,使第三方應(yīng)用可以直接使用su命令。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

? ? 在android原生系統(tǒng)中,只有root權(quán)限和shell權(quán)限下才可以使用su命令,雖然在userdebug模式下編譯的系統(tǒng)鏡像有自帶的su文件,但是第三方應(yīng)用卻無(wú)法使用。于是在這種場(chǎng)景下,有兩種方式可以實(shí)現(xiàn)第三方應(yīng)用使用su命令。

? ? 1.修改原來(lái)的su相關(guān)的源碼(所有的應(yīng)用都可以使用)

? ? 2.通過(guò)supersu.apk 的方式進(jìn)行實(shí)現(xiàn)(可以通過(guò)supersu進(jìn)行控制應(yīng)用是否可以使用su)

一、修改原來(lái)的su相關(guān)的源碼
1.修改 system/extras/su/su.c ,屏蔽如下代碼:

修改前
?

uid_t current_uid = getuid(); ??
if (current_uid != AID_ROOT && current_uid != AID_SHELL) error(1, 0, "not allowed");


修改后
?

// uid_t current_uid = getuid(); ??
// if (current_uid != AID_ROOT && current_uid != AID_SHELL) error(1, 0, "not allowed");


將su文件中的判斷是否是root,或是shell的用戶id判斷進(jìn)行注釋。

2.修改 system/core/libcutils/fs_config.c, 做如下修改:

修改 fs_path_config android_files結(jié)構(gòu)體中的
?
修改前
?

{ 04750, AID_ROOT, ? ? ?AID_SHELL, ? ? 0, "system/xbin/su" },


?
修改后
?

{ 06755, AID_ROOT, ? ? ?AID_SHELL, ? ? 0, "system/xbin/su" },


修改su文件的訪問(wèn)權(quán)限,將其他用戶的權(quán)限修改為可讀,可執(zhí)行權(quán)限。

3.修改 frameworks/base/cmds/app_process/app_main.cpp,做如下的修改:

注釋 main 函數(shù)中的以下代碼
?
修改前
?

if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0) < 0) {
? ? ? ? // Older kernels don't understand PR_SET_NO_NEW_PRIVS and return
? ? ? ? // EINVAL. Don't die on such kernels.
? ? ? ? if (errno != EINVAL) {
? ? ? ? ? ? LOG_ALWAYS_FATAL("PR_SET_NO_NEW_PRIVS failed: %s", strerror(errno));
? ? ? ? ? ? return 12;
? ? ? ? }
?}


?
修改后
?

/* if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0) < 0) {
? ? ? ? // Older kernels don't understand PR_SET_NO_NEW_PRIVS and return
? ? ? ? // EINVAL. Don't die on such kernels.
? ? ? ? if (errno != EINVAL) {
? ? ? ? ? ? LOG_ALWAYS_FATAL("PR_SET_NO_NEW_PRIVS failed: %s", strerror(errno));
? ? ? ? ? ? return 12;
? ? ? ? }
? ? } */

4、修改 frameworks/base/core/jni/com_android_internal_os_Zygote.cpp,做如下的修改:

注釋 DropCapabilitiesBoundingSet 中的如下代碼
?
修改前
?

for (int i = 0; prctl(PR_CAPBSET_READ, i, 0, 0, 0) >= 0; i++) {
? ? int rc = prctl(PR_CAPBSET_DROP, i, 0, 0, 0);
? ? if (rc == -1) {
? ? ? if (errno == EINVAL) {
? ? ? ? ALOGE("prctl(PR_CAPBSET_DROP) failed with EINVAL. Please verify "
? ? ? ? ? ? ? "your kernel is compiled with file capabilities support");
? ? ? } else {
? ? ? ? RuntimeAbort(env, __LINE__, "prctl(PR_CAPBSET_DROP) failed");
? ? ? }
? ? }
? }
?


修改后
?

/* for (int i = 0; prctl(PR_CAPBSET_READ, i, 0, 0, 0) >= 0; i++) {
? ? int rc = prctl(PR_CAPBSET_DROP, i, 0, 0, 0);
? ? if (rc == -1) {
? ? ? if (errno == EINVAL) {
? ? ? ? ALOGE("prctl(PR_CAPBSET_DROP) failed with EINVAL. Please verify "
? ? ? ? ? ? ? "your kernel is compiled with file capabilities support");
? ? ? } else {
? ? ? ? RuntimeAbort(env, __LINE__, "prctl(PR_CAPBSET_DROP) failed");
? ? ? }
? ? }
? } */

注釋后就是一個(gè)空方法了。

5.修改 system/core/adb/daemon/main.cpp,做如下的修改

將 should_drop_privileges函數(shù) 直接返回false
?
修改前
?

static bool should_drop_privileges() {
#if defined(ALLOW_ADBD_ROOT)
? ? char value[PROPERTY_VALUE_MAX];
?
? ? // The properties that affect `adb root` and `adb unroot` are ro.secure and
? ? // ro.debuggable. In this context the names don't make the expected behavior
? ? // particularly obvious.
? ? //
? ? // ro.debuggable:
? ? // ? Allowed to become root, but not necessarily the default. Set to 1 on
? ? // ? eng and userdebug builds.
? ? //
? ? // ro.secure:
? ? // ? Drop privileges by default. Set to 1 on userdebug and user builds.
? ? property_get("ro.secure", value, "1");
? ? bool ro_secure = (strcmp(value, "1") == 0);
?
? ? property_get("ro.debuggable", value, "");
? ? bool ro_debuggable = (strcmp(value, "1") == 0);


?
修改后
?

static bool should_drop_privileges() {
? ? return false;
#if defined(ALLOW_ADBD_ROOT)
? ? char value[PROPERTY_VALUE_MAX];
?
? ? // The properties that affect `adb root` and `adb unroot` are ro.secure and
? ? // ro.debuggable. In this context the names don't make the expected behavior
? ? // particularly obvious.
? ? //
? ? // ro.debuggable:
? ? // ? Allowed to become root, but not necessarily the default. Set to 1 on
? ? // ? eng and userdebug builds.
? ? //
? ? // ro.secure:
? ? // ? Drop privileges by default. Set to 1 on userdebug and user builds.
? ? property_get("ro.secure", value, "1");
? ? bool ro_secure = (strcmp(value, "1") == 0);
?
? ? property_get("ro.debuggable", value, "");
? ? bool ro_debuggable = (strcmp(value, "1") == 0);

6、修改 system/core/init/init.cpp,做如下的修改:

將selinux_is_enforcing函數(shù)直接返回false
?
修改前
?

static bool selinux_is_enforcing(void)
{
? ? if (ALLOW_PERMISSIVE_SELINUX) {
? ? ? ? return selinux_status_from_cmdline() == SELINUX_ENFORCING;
? ? }
? ? return true;
}


?
修改后
?

static bool selinux_is_enforcing(void)
{
? ? return false;
? ? if (ALLOW_PERMISSIVE_SELINUX) {
? ? ? ? return selinux_status_from_cmdline() == SELINUX_ENFORCING;
? ? }
? ? return true;
}

7、修改 system/core/init/Android.mk,做如下修改:

修改前
?

init_options += -DALLOW_LOCAL_PROP_OVERRIDE=0 -DALLOW_DISABLE_SELINUX=0


修改后
?

init_options += -DALLOW_LOCAL_PROP_OVERRIDE=0 -DALLOW_DISABLE_SELINUX=1


8、修改 ?device/**/aa/init.aa.rc,在文件最后添加如下代碼 (在device下,通過(guò)grep "init.rc" ?./* -r -n ?查找自己設(shè)備的 init.設(shè)備名.rc文件)

# wtw let other user can use su?
service?? ?superuser /system/xbin/su --daemon
? ? class super-user
? ? user root
? ? oneshot
?
on property:superuser.start=on
? ? class_start super-user


9、修改 system/core/adb/Android.mk,做如下修改:

找到 ?# adbd device daemon 位置,注釋掉判斷。
?
修改前
?

ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
LOCAL_CFLAGS += -DALLOW_ADBD_DISABLE_VERITY=1
LOCAL_CFLAGS += -DALLOW_ADBD_ROOT=1
endif


?
修改后
?

# ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
LOCAL_CFLAGS += -DALLOW_ADBD_DISABLE_VERITY=1
LOCAL_CFLAGS += -DALLOW_ADBD_ROOT=1
# endif

10、對(duì)源碼進(jìn)行 make clean,再進(jìn)行編譯。生成鏡像就可以了。
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-708916.html

到了這里,關(guān)于Android 源碼修改,使第三方應(yīng)用可以直接使用su命令的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 編輯視頻無(wú)需第三方軟件,在iPhone上也可以輕松編輯視頻

    編輯視頻無(wú)需第三方軟件,在iPhone上也可以輕松編輯視頻

    如果你學(xué)會(huì)了如何在iPhone上編輯視頻,你可以在很大程度上把匆忙拍攝的視頻變成適合好萊塢的視頻。好吧,也許這有點(diǎn)夸張了,但至少,你可以通過(guò)使用照片應(yīng)用程序中的編輯工具,讓你的視頻看起來(lái)更令人印象深刻。 雖然它不一定能與最好的視頻編輯軟件相匹配,但它仍

    2024年02月07日
    瀏覽(26)
  • Maven 配置文件修改及導(dǎo)入第三方j(luò)ar包

    Maven 配置文件修改及導(dǎo)入第三方j(luò)ar包

    (D:appapache-maven-3.5.0confsettings.xml,1中環(huán)境變量對(duì)應(yīng)的maven包下的conf)

    2024年02月11日
    瀏覽(98)
  • 查看python第三方庫(kù)的安裝路徑并修改路徑(二)之Pycharm下如何安裝第三方函數(shù)庫(kù),并明確安裝位置

    查看python第三方庫(kù)的安裝路徑并修改路徑(二)之Pycharm下如何安裝第三方函數(shù)庫(kù),并明確安裝位置

    #第一步:學(xué)習(xí)如何利用pycharm安裝第三方庫(kù) 如圖,打開(kāi)pycharm的文件–設(shè)置。 打開(kāi)python的編譯器,點(diǎn)開(kāi)+號(hào),即可搜索并下載需要的第三方庫(kù),軟件會(huì)自動(dòng)默認(rèn)安裝在某個(gè)路徑,此路徑和你當(dāng)初安裝軟件的位置有關(guān)系。 #第二步:查找第三方庫(kù)的安裝路徑 以我為例,我的針對(duì)于

    2024年02月14日
    瀏覽(99)
  • 項(xiàng)目中拖拽元素,可以使用html的draggable屬性,當(dāng)然也可以用第三方插件interact

    項(xiàng)目中拖拽元素,可以使用html的draggable屬性,當(dāng)然也可以用第三方插件interact

    html的draggable屬性需要自己寫邏輯,用人家封裝好的代碼簡(jiǎn)單邏輯清楚,非常香 鏈接: https://blog.csdn.net/vvv3171071/article/details/122705408

    2024年02月08日
    瀏覽(21)
  • Android Pdf第三方框架

    導(dǎo)入AndroidPdfViewer 在 repositories 里面添加庫(kù) 布局文件引用PDFView PdfViewer 為我們提供了以下幾種讀取文件的方法: Configurator 主要方法 PDFView 其他方法 github地址: https://github.com/barteksc/AndroidPdfViewer 導(dǎo)入mupdf 在 repositories 里面添加庫(kù) mupdf提供了解析代碼, Document 讀取pdf文件, Androi

    2024年02月13日
    瀏覽(98)
  • 微信小程序自定義字體樣式、字體修改、第三方字體設(shè)置

    微信小程序自定義字體樣式、字體修改、第三方字體設(shè)置

    ?博主介紹: 本人專注于Android/java/數(shù)據(jù)庫(kù)/微信小程序技術(shù)領(lǐng)域的開(kāi)發(fā),以及有好幾年的計(jì)算機(jī)畢業(yè)設(shè)計(jì)方面的實(shí)戰(zhàn)開(kāi)發(fā)經(jīng)驗(yàn)和技術(shù)積累;尤其是在安卓(Android)的app的開(kāi)發(fā)和微信小程序的開(kāi)發(fā),很是熟悉和了解;本人也是多年的Android開(kāi)發(fā)人員;希望我發(fā)布的此篇文件可以幫

    2024年02月04日
    瀏覽(101)
  • Android 解決第三方庫(kù)版本沖突

    在開(kāi)發(fā)游戲SDK時(shí)會(huì)使用一些第三方庫(kù),例如上文提到的 OkHttp ,或者集成某些第三方,而這些第三方使用的系統(tǒng)庫(kù)(例如 supportv7)和項(xiàng)目組使用的版本不一致,在編譯時(shí)就會(huì)出現(xiàn)版本沖突問(wèn)題。解決辦法有兩個(gè): 盡量不使用第三庫(kù),例如針對(duì) OkHttp ,如果沒(méi)有特殊的需求(比

    2023年04月27日
    瀏覽(89)
  • Android Studio查看第三方庫(kù)依賴樹(shù)

    Android Studio查看第三方庫(kù)依賴樹(shù)

    在Android開(kāi)發(fā)過(guò)程中,我們或多或少都會(huì)引入第三方庫(kù),引入的庫(kù)越多,越容易產(chǎn)生庫(kù)之間的依賴沖突,所以我們今天一起來(lái)了解Android Studio查看第三方庫(kù)依賴樹(shù)。 下面就拿我遇到的問(wèn)題還原一下: 之前接人容聯(lián)客服系統(tǒng)的時(shí)候,集成完成后進(jìn)入客服頁(yè)面發(fā)生閃退,我們回顧

    2024年02月08日
    瀏覽(25)
  • Android Studio引用第三方庫(kù)的方式

    title: 大小端詳解 date: 2023-06-06 21:01:24 comments: true #是否可評(píng)論 toc: true #是否顯示文章目錄 categories: #分類 - gradle - android studio tags: #標(biāo)簽 - gradle - android studio summary: android stduio 導(dǎo)入第三方庫(kù)方式 這里描述的第三方庫(kù)文件格式指的是 so aar so庫(kù)介紹一種方法 Aar介紹兩種方法 libs目錄

    2024年02月08日
    瀏覽(22)
  • Android Studio連接使用第三方模擬器

    Android Studio連接使用第三方模擬器

    ? ? ? ?使用Android Studio自帶的模擬器,第一會(huì)比較卡,第二配置容易出錯(cuò),第三,自帶的模擬器很吃電腦配置。如果電腦配置較差,會(huì)比較耽誤事。所以為例解決上面三個(gè)問(wèn)題,可以在電腦上按照第三方手機(jī)模擬器,例如:夜神模擬器、雷電模擬器、MUMU模擬器等等,不管是

    2024年01月15日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包