0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

添加自定義屬性控制fridaserver啟動和停止

哆啦安全 ? 來源: 卓碼星球 ? 2023-08-09 10:08 ? 次閱讀

1.屬性添加說明

為了通過安卓系統(tǒng)的屬性控制fridaserver啟動和停止,將加入如下屬性:

#該屬性控制啟動和停止frida
#0:停止 1:啟動
xro.start.myfrd=0
#該屬性設(shè)置fridaserver啟動的端口,默認(rèn)端口為27042
xro.start.myfrd.port=27042
#該屬性控制adbd進(jìn)程重啟,這個屬性是為了方便控制adbd進(jìn)程重啟
#1:停止adbd然后再啟動
#0:停止adbd然后再重啟
xro.start.myadbd=

2.系統(tǒng)中添加屬性

2.1 系統(tǒng)中新增屬性

在文件"build oolsuildinfo.sh"中添加以下屬性,添加之后屬性如下:

...
echo"xro.start.myfrd=0"
echo"xro.start.myfrd.port=27042"
echo"xro.start.myadbd="
...

2.2 為新增的屬性配置selinux標(biāo)簽

由于新增的屬性需要在后續(xù)開發(fā)的具有System權(quán)限的App中設(shè)置和獲取。如果不配置系統(tǒng)Appselinux訪問策略,App將沒有權(quán)限進(jìn)行屬性修改操作。由于adbd運(yùn)行已經(jīng)擁有了超級權(quán)限,adbd對新增的屬性具有讀取和設(shè)置的能力,所以可以不用為adbd配置訪問新增屬性的selinux策略。安卓系統(tǒng)中和selinux配置相關(guān)的目錄路徑如下:

systemsepolicy

新增屬性配置操作如下。

(1).定義屬性標(biāo)簽類型"mysystem_prop"

在以下文件中添加自定義的屬性標(biāo)簽類型定義,文件路徑如下:

systemsepolicypublicproperty.te
systemsepolicyprebuiltsapi29.0publicproperty.te

自定義的屬性標(biāo)簽定義如下:

typemysystem_prop,property_type;

由于以上兩個文件內(nèi)容必須保持一致,所以請確保以上兩個文件中添加的內(nèi)容保持一致,否則編譯報錯。

(2).為自定義的屬性關(guān)聯(lián)標(biāo)簽

在以下文件中添加自定義的屬性關(guān)聯(lián)的selinux標(biāo)簽,文件路徑如下:

systemsepolicyprivateproperty_contexts
systemsepolicyprebuiltsapi29.0privateproperty_contexts

添加的標(biāo)簽內(nèi)容如下:

#表示xro.start.前綴的屬性標(biāo)簽都為mysystem_prop
xro.start.umysystem_prop:s0

由于以上兩個文件內(nèi)容必須保持一致,所以請確保以上兩個文件中添加的內(nèi)容保持一致,否則編譯報錯。

(3).為system_app添加自定義屬性訪問權(quán)限

為了讓system權(quán)限的app能夠訪問到自定義的屬性,需要在以下文件中添加訪問規(guī)則,文件路徑如下:

systemsepolicyprivatesystem_app.te
systemsepolicyprebuiltsapi29.0privatesystem_app.te

添加的訪問規(guī)則如下:

#表示允許系統(tǒng)權(quán)限的app讀取mysystem_prop標(biāo)簽的屬性
get_prop(system_app,mysystem_prop)
#表示允許系統(tǒng)權(quán)限的app修改mysystem_prop標(biāo)簽的屬性值
set_prop(system_app,mysystem_prop)

由于以上兩個文件內(nèi)容必須保持一致,所以請確保以上兩個文件中添加的內(nèi)容保持一致,否則編譯報錯。

3.使用屬性控制fridaserver運(yùn)行

在課程"配置fridaserver為后臺服務(wù)程序"中已經(jīng)實現(xiàn)了adbd啟動之后啟動fridaserver的功能。本篇中將使用新增的屬性來控制fridaserver啟動、停止。
在文件"systemcoreadbdaemonmain.cpp"中通過屬性控制fridaserver的核心關(guān)鍵代碼如下:

//該函數(shù)判斷fridaserver是否已經(jīng)在運(yùn)行了
staticintis_fridaserver_running(){

intret=-1;
charbuf[256]={0};
FILE*fp=NULL;
if((fp=popen("ps","r"))==NULL)
{
MYLOGD("popenerrorinis_fridaserver_running");
returnret;
}

while(fgets(buf,255,fp)!=NULL){
MYLOGD("readline====>%s",buf);
if(strstr(buf,"myfridaserverarm64")!=NULL)
{
ret=0;
break;
}
}
pclose(fp);
returnret;
}

//通過廣播發(fā)送當(dāng)前的fridaserver運(yùn)行狀態(tài),方便App中狀態(tài)更新
staticvoidbroadcast_frida_server_status(intstatus,constchar*portstr)
{
//ambroadcast-acom.android.myaction.FRIDA_SERVER_STATUS--esisRunning0
charcmd_buf[128]={0};
sprintf(cmd_buf,"ambroadcast-acom.android.myaction.FRIDA_SERVER_STATUS--esisRunning%d--esport%s",status,portstr);
system(cmd_buf);
MYLOGD("broadcast_frida_server_statussuccess");
}

//線程處理函數(shù),根據(jù)屬性值來判斷fridaserver的啟動、停止
//1forstart
//2forstop
//3forrunning
void*work_thread(void*m){
MYLOGD("work_threadstart");

while(1>0){
std::stringprop=android::GetProperty("sys.boot_completed","");
std::stringmyfrd=android::GetProperty("xro.start.myfrd","");
std::stringport_str=android::GetProperty("xro.start.myfrd.port","27042");
boolboot_ok=(prop=="1");
//boolbool_myfrd=(myfrd=="1");
MYLOGD("sys.boot_completed:%s",prop.c_str());
if(boot_ok){
intfrida_status=is_fridaserver_running();
broadcast_frida_server_status(frida_status,port_str.c_str());
MYLOGD("is_fridaserver_running==>%d",frida_status);
if(myfrd=="1"){
MYLOGD("starttolaunchmyfridaserverarm64");
charcmd_buf[128]={0};
sprintf(cmd_buf,
"killallmyfridaserverarm64
sleep1
myfridaserverarm64-l0.0.0.0:%s-D",
port_str.c_str());
system(cmd_buf);
MYLOGD("startmyfridaserverarm64finish");
android::SetProperty("xro.start.myfrd","3");

}elseif(myfrd=="0"){
MYLOGD("starttostopmyfridaserverarm64");
charcmd_buf[128]={0};
sprintf(cmd_buf,"killallmyfridaserverarm64");
if(frida_status>=0){
system(cmd_buf);
}
MYLOGD("stopmyfridaserverarm64finish");

}elseif(myfrd=="3"){
if(frida_status

4.屬性控制adbd重啟配置

在本方案中,fridaserver是由adbd母體調(diào)用system函數(shù)創(chuàng)建的。測試過程中如果adbd殺掉fridaserver也會被殺掉。所以為了防止fridaserver卡死的情況,增加屬性控制adbd重啟的功能。同時通過該屬性控制adbd重啟方便在修改模塊adbd的代碼之后編譯測試。

具體操作如下:

在文件init.rc中添加屬性控制adbd的配置信息,init.rc文件路徑如下:

systemcore
ootdirinit.rc

添加的內(nèi)容為:

onproperty:xro.start.myadbd=1
stopadbd
startadbd

5.編譯刷機(jī)驗證

5.1 編譯

參考命令如下:

qiang@ubuntu:~/lineageOs$sourcebuild/envsetup.sh
qiang@ubuntu:~/lineageOs$breakfastoneplus3
qiang@ubuntu:~/lineageOs$brunchoneplus3
Lookingfordependenciesindevice/oneplus/oneplus3
Lookingfordependenciesindevice/oppo/common
....

5.2 刷機(jī)

參考命令:

qiang@ubuntu:~/lineageOs$adbpushout/target/product/oneplus3/lineage-17.1-20210324-UNOFFICIAL-oneplus3.zip/sdcard/update.zip
out/target/product/oneplus3/lineage-17...28.1MB/s(783285269bytesin26.561s)
qiang@ubuntu:~/lineageOs$
qiang@ubuntu:~/lineageOs$
qiang@ubuntu:~/lineageOs$adbrebootrecovery
qiang@ubuntu:~/lineageOs$
qiang@ubuntu:~/lineageOs$
qiang@ubuntu:~/lineageOs$

5.3 測試驗證

測試關(guān)閉fridaserver服務(wù):

C:UsersQiang>adbshellsetpropxro.start.myfrd0

測試打開fridaserver服務(wù):

C:UsersQiang>adbshellsetpropxro.start.myfrd1

測試重啟adbd服務(wù):

C:UsersQiang>adbshellsetpropxro.start.myadbd1

3106890a-3641-11ee-9e74-dac502259ad0.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • System
    +關(guān)注

    關(guān)注

    0

    文章

    165

    瀏覽量

    36943
  • 文件
    +關(guān)注

    關(guān)注

    1

    文章

    566

    瀏覽量

    24744
  • 端口
    +關(guān)注

    關(guān)注

    4

    文章

    964

    瀏覽量

    32079
  • 安卓系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    273

    瀏覽量

    20563

原文標(biāo)題:添加自定義屬性控制fridaserver啟動和停止

文章出處:【微信號:哆啦安全,微信公眾號:哆啦安全】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    matlab的自定義窗口屬性命令

    matlab的自定義窗口屬性命令函數(shù)名    功能描述    函數(shù)名 
    發(fā)表于 09-22 15:53

    labview 的Xcontrol控件 的自定義屬性

    大家有沒有發(fā)現(xiàn)labview的Xcontrol控件自定義屬性執(zhí)行速度相當(dāng)慢?做界面簡直受不了!對labview的期望太高了
    發(fā)表于 04-22 10:41

    如何讓自定義布爾控件的顏色屬性節(jié)點有效

    NI自帶的布爾控件有顏色屬性節(jié)點,通過對顏色的賦值可以改變控件的顏色但是對控件進(jìn)行自定義,替換了圖片項之后,顏色屬性節(jié)點就失去了效果如何讓自定義布爾控件依舊能像NI自帶的那樣,能用顏色
    發(fā)表于 07-11 11:29

    如何自定義Component 屬性

    , AttrSet attrSet) {回復(fù):AttrSet attrSet這個參數(shù)不是讓開發(fā)者自己進(jìn)行自定義組件用的。而是用于讀取在XML中的各類組件屬性。例如,您通過xml布局添加了Button,并且設(shè)置了其高度
    發(fā)表于 12-21 09:31

    嚴(yán)格自定義控件屬性節(jié)點能使用嗎

    因為我想預(yù)防以后修改起來麻煩,于是我就想用下嚴(yán)格自定義控件。我改了選項卡控件,像圖一我保存為自定義控件,用屬性節(jié)點隱藏第2個頁面可以;但是就像圖二我先保存為嚴(yán)格自定義控件,再用同樣的方
    發(fā)表于 04-23 09:04

    1602自定義字符

    1602液晶能夠顯示自定義字符,能夠根據(jù)讀者的具體情況顯示自定義字符。
    發(fā)表于 01-20 15:43 ?1次下載

    如何制作自定義控制

    在您擁有自己的自定義模塊控制器,完美地工作用于Gamecube模擬器的PC!
    的頭像 發(fā)表于 09-04 09:33 ?5321次閱讀
    如何制作<b class='flag-5'>自定義</b><b class='flag-5'>控制</b>器

    Orcad中元器件自定義屬性方法

    答:運(yùn)用Orcad進(jìn)行原理圖的繪制時,除了它本身自帶的這些屬性以外呢,有時候會給它增加一些額外的屬性,來方便別人查看你的原理圖與檢查原理圖,例如器件的料號、ROOM屬性、差分屬性等,這
    的頭像 發(fā)表于 02-28 16:35 ?7305次閱讀
    Orcad中元器件<b class='flag-5'>自定義</b><b class='flag-5'>屬性</b>方法

    自定義視圖組件教程案例

    自定義組件 1.自定義組件-particles(粒子效果) 2.自定義組件- pulse(脈沖button效果) 3.自定義組件-progress(progress效果) 4.
    發(fā)表于 04-08 10:48 ?14次下載

    應(yīng)用程序在崩潰時能啟動自定義活動的OHOS庫

    CustomActivityOnCrash 是一個 OHOS 庫,允許在應(yīng)用程序崩潰時啟動自定義活動,而不是顯示討厭的“不幸的是,X 已停止”對話框。 CustomActivityOnCrash
    發(fā)表于 04-11 09:32 ?0次下載

    ArkUI如何自定義彈窗(eTS)

    自定義彈窗其實也是比較簡單的,通過CustomDialogController類就可以顯示自定義彈窗。
    的頭像 發(fā)表于 08-31 08:24 ?2201次閱讀

    教程 2:添加特征-自定義配置文件創(chuàng)建

    教程 2:添加特征 - 自定義配置文件創(chuàng)建
    發(fā)表于 03-15 19:39 ?0次下載
    教程 2:<b class='flag-5'>添加</b>特征-<b class='flag-5'>自定義</b>配置文件創(chuàng)建

    教程 2:添加特征-自定義配置文件創(chuàng)建

    教程 2:添加特征 - 自定義配置文件創(chuàng)建
    發(fā)表于 07-06 18:50 ?0次下載
    教程 2:<b class='flag-5'>添加</b>特征-<b class='flag-5'>自定義</b>配置文件創(chuàng)建

    labview超快自定義控件制作和普通自定義控件制作

    labview超快自定義控件制作和普通自定義控件制作
    發(fā)表于 08-21 10:32 ?13次下載

    在App中編寫控制fridaserver啟動停止的代碼邏輯簡析

    在章節(jié)"添加自定義屬性控制fridaserver啟動停止
    的頭像 發(fā)表于 08-22 09:27 ?2592次閱讀
    在App中編寫<b class='flag-5'>控制</b><b class='flag-5'>fridaserver</b><b class='flag-5'>啟動</b>和<b class='flag-5'>停止</b>的代碼邏輯簡析