<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

1.屬性添加說明

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

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

2.系統中添加屬性

2.1 系統中新增屬性

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

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

2.2 為新增的屬性配置selinux標簽

由于新增的屬性需要在后續開發的具有System權限的App中設置和獲取。如果不配置系統Appselinux訪問策略,App將沒有權限進行屬性修改操作。由于adbd運行已經擁有了超級權限,adbd對新增的屬性具有讀取和設置的能力,所以可以不用為adbd配置訪問新增屬性的selinux策略。安卓系統中和selinux配置相關的目錄路徑如下:

systemsepolicy

新增屬性配置操作如下。

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

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

systemsepolicypublicproperty.te
systemsepolicyprebuiltsapi29.0publicproperty.te

自定義的屬性標簽定義如下:

typemysystem_prop,property_type;

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

(2).為自定義的屬性關聯標簽

在以下文件中添加自定義的屬性關聯的selinux標簽,文件路徑如下:

systemsepolicyprivateproperty_contexts
systemsepolicyprebuiltsapi29.0privateproperty_contexts

添加的標簽內容如下:

#表示xro.start.前綴的屬性標簽都為mysystem_prop
xro.start.umysystem_prop:s0

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

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

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

systemsepolicyprivatesystem_app.te
systemsepolicyprebuiltsapi29.0privatesystem_app.te

添加的訪問規則如下:

#表示允許系統權限的app讀取mysystem_prop標簽的屬性
get_prop(system_app,mysystem_prop)
#表示允許系統權限的app修改mysystem_prop標簽的屬性值
set_prop(system_app,mysystem_prop)

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

3.使用屬性控制fridaserver運行

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

//該函數判斷fridaserver是否已經在運行了
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;
}

//通過廣播發送當前的fridaserver運行狀態,方便App中狀態更新
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");
}

//線程處理函數,根據屬性值來判斷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母體調用system函數創建的。測試過程中如果adbd殺掉fridaserver也會被殺掉。所以為了防止fridaserver卡死的情況,增加屬性控制adbd重啟的功能。同時通過該屬性控制adbd重啟方便在修改模塊adbd的代碼之后編譯測試。

具體操作如下:

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

systemcore
ootdirinit.rc

添加的內容為:

onproperty:xro.start.myadbd=1
stopadbd
startadbd

5.編譯刷機驗證

5.1 編譯

參考命令如下:

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

5.2 刷機

參考命令:

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 測試驗證

測試關閉fridaserver服務:

C:UsersQiang>adbshellsetpropxro.start.myfrd0

測試打開fridaserver服務:

C:UsersQiang>adbshellsetpropxro.start.myfrd1

測試重啟adbd服務:

C:UsersQiang>adbshellsetpropxro.start.myadbd1

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

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • System
    +關注

    關注

    0

    文章

    162

    瀏覽量

    36585
  • 文件
    +關注

    關注

    1

    文章

    540

    瀏覽量

    24421
  • 端口
    +關注

    關注

    4

    文章

    828

    瀏覽量

    31640
  • 安卓系統
    +關注

    關注

    0

    文章

    267

    瀏覽量

    20332

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

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

收藏 人收藏

    評論

    相關推薦

    matlab的自定義窗口屬性命令

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

    labview 的Xcontrol控件 的自定義屬性

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

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

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

    如何自定義Component 屬性

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

    嚴格自定義控件屬性節點能使用嗎

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

    1602自定義字符

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

    自定義fifo接口控制

    自定義fifo接口控制器,利用sopc builder實現。
    發表于 03-22 14:09 ?1次下載

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

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

    自定義進度指示器progressbutton

    概述 1、描述:progressbutton是占位面積很小的自定義進度指示器。默認實現提供了一個pin進度按鈕。 2、實現功能:a.自定義圓形進度條。 b.實現根據Slider滑動更新自定義進度條
    發表于 03-24 14:26 ?1次下載

    自定義視圖組件教程案例

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

    應用程序在崩潰時能啟動自定義活動的OHOS庫

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

    教程 2:添加特征-自定義配置文件創建

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

    教程 2:添加特征-自定義配置文件創建

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

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

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

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

    在章節"添加自定義屬性控制fridaserver啟動停止
    的頭像 發表于 08-22 09:27 ?1601次閱讀
    在App中編寫<b class='flag-5'>控制</b><b class='flag-5'>fridaserver</b><b class='flag-5'>啟動</b>和<b class='flag-5'>停止</b>的代碼邏輯簡析
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>