精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

配置fridaserver為后臺進程

哆啦安全 ? 來源:哆啦安全 ? 2023-07-29 15:07 ? 次閱讀

1.安卓系統中配置后臺進程討論

在以下討論兩種selinux開啟的情況啟動frida-server的方法。

1.1 init.xx.rc文件中配置

在安卓系統中配置native后臺服務,主要是在init.xx.rc文件中添加服務配置信息。比如adbd后臺服務配置如下:

#adbdiscontrolledviapropertytriggersininit..usb.rc
serviceadbd/system/bin/adbd--root_seclabel=usu:s0
classcore
socketadbdseqpacket660systemsystem
disabled
seclabeluadbd:s0

這種方法配置主要是通過init進程進行啟動管理。如果配置的后臺進程服務的功能需要超級root權限操作的,最好關閉selinux的情況下進行配置。

以下是通過init.xx.rc文件中配置啟動fridaserver的一個參考配置:

servicemyfridaserver/system/bin/myfridaserverarm64-D
classmain
userroot
seclabeluinit:s0

1.2 進程中啟動服務配置

可以選擇合適的后臺進程,調用 system函數進行服務啟動。比如選擇超級 root權限的adbd、或者root權限的init進程。

1.3 兩種方式的測試

在內置fridaserver的過程中,分別對以上兩種方式進行了測試。

  • init.xx.rc中國配置

    在開啟 selinux的情況下,由于 init進程被限制了很多功能,比如禁止ptrace其他進程,會導致失敗。所以該種配置需要根據需要內置服務的功能進行分析,是否適合。雖然init進程運行的是root用戶運行,但是selinux的域為init,被限制了很多特權功能。如果不在乎selinux,可以關閉selinux之后進行內置。

  • 進程中啟動服務

    進程中啟動服務主要是需要找到權限高的進程作為母體。比如像 init進程、adbd進程。在測試過程中,selinux打開的情況下雖然init進程root用戶運行,但是selinux標簽init限制了很多特權,所以不大適合啟動fridaserver。在上一篇文章中已經實現了adbdroot權限運行,并且運行標簽變成了usu:s0,所以adbd作為母體啟動服務之后,服務就存在了超級權限,比較適合fridaserver這種需要特權的服務。

    以下是通過命令查看的系統init進程和adbd進程運行的selinux域的情況:

C:UsersQiang>adbshellps-Z|findstr"adbd"
usu:s0root1143111359604564poll_schedule_timeout794c9aa3c8Sadbd

C:UsersQiang>adbshellps-Z|findstr"init"
uinit:s0root10869848240SyS_epoll_wait76f889a248Sinit
uvendor_init:s0root4541397365256poll_schedule_timeout79937963c8Sinit
uvendor_init:s0root4551389684328poll_schedule_timeout74340f23c8Sinit

二、adbd中啟動fridaserver開發

2.1 查找合適的啟動入口

adbd啟動過程中,會根據傳入的參數如果存在root_seclabel會將adbd進程的域由uadbd:s0修改為"usu:s0"域。具體相關邏輯位于文件"systemcoreadbdaemonmain.cpp" 中,代碼如下:

staticvoiddrop_privileges(intserver_port){
ScopedMinijailjail(minijail_new());

...
if(should_drop_privileges()){
...
}else{
//minijail_enter()willabortifanypriv-droppingstepfails.
minijail_enter(jail.get());

if(root_seclabel!=nullptr){
//修改當前進程的域為usu:s0,從而獲得超級權限
if(selinux_android_setcon(root_seclabel)0){
LOG(FATAL)<"CouldnotsetSELinuxcontext";
}
//TODO可以考慮在此處添加啟動的邏輯
}
...
}
}
}

通過以上分析我們可以在adbd設置root_seclable成功之后加入啟動frida-server的啟動邏輯。

2.2 添加啟動核心代碼

添加如下方法實現啟動 fridaserver進程。

//線程處理函數,主要是判斷手機重啟完成之后再去啟動**fridaserver**
void*work_thread_once(void*m)
{
MYLOGD("work_threadstart");

while(1>0)
{
std::stringprop=android::GetProperty("sys.boot_completed","");

MYLOGD("start_fridaserver_oncesys.boot_completed:%s",prop.c_str());
boolboot_ok=(prop=="1");
//boolbool_myfrd=(myfrd=="1");
MYLOGD("start_fridaserver_oncesys.boot_completed:%s",prop.c_str());
if(boot_ok)
{

break;

}
sleep(4);
}

std::stringport_str="27042";
MYLOGD("start_fridaserver_oncestarttolaunchmyfridaserverarm64");
charcmd_buf[128]={0};
sprintf(cmd_buf,"killallmyfridaserverarm64
sleep1
myfridaserverarm64-l0.0.0.0:%s-D",port_str.c_str());
system(cmd_buf);
MYLOGD("start_fridaserver_oncestartmyfridaserverarm64finish");

returnNULL;
}

//創建線程等待手機啟動完成之后啟動fridaserver
staticvoidstart_fridaserver_once()
{

MYLOGD("start_fridaserver_oncestart");
pthread_tthread_id;
inti=9;
pthread_create(&thread_id,NULL,&work_thread_once,(void*)&i);
MYLOGD("start_fridaserver_oncethreadiscreated!");

}

以上邏輯中判斷手機完全重啟了才啟動。

在設置 root_label的地方加入調用,參考代碼如下:

staticvoiddrop_privileges(intserver_port){
ScopedMinijailjail(minijail_new());

...
if(should_drop_privileges()){
...
}else{
//minijail_enter()willabortifanypriv-droppingstepfails.
minijail_enter(jail.get());

if(root_seclabel!=nullptr){
//修改當前進程的域為usu:s0,從而獲得超級權限
if(selinux_android_setcon(root_seclabel)0){
LOG(FATAL)<"CouldnotsetSELinuxcontext";
}
//TODO可以考慮在此處添加啟動的邏輯
start_fridaserver_once();
}
...
}
}
}

3.編譯測試

3.1 編譯adb模塊

參考命令:

//完整編譯手機鏡像參考命令
qiang@ubuntu:~/lineageOs$sourcebuild/envsetup.sh
qiang@ubuntu:~/lineageOs$breakfastoneplus3
qiang@ubuntu:~/lineageOs$brunchoneplus3

//只編譯adbd模塊參考
qiang@ubuntu:~/lineageOs$makeadbd
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=10
LINEAGE_VERSION=17.1-20210324-UNOFFICIAL-oneplus3
...

3.2 push到手機

由于之前我們已經刷了一次自己編譯的手機鏡像。所以此處只修改了adbd模塊,可以只編譯單個模塊替換手機系統的就可以。參考命令:

qiang@ubuntu:~/lineageOs$adbdevices
*daemonnotrunning;startingnowattcp:5037
*daemonstartedsuccessfully
Listofdevicesattached
d5cc1133device

qiang@ubuntu:~/lineageOs$adbremount
[libfs_mgr]dt_fstab:Skipdisabledentryforpartitionvendor
[libfs_mgr]dt_fstab:Skipdisabledentryforpartitionvendor
[libfs_mgr]dt_fstab:Skipdisabledentryforpartitionvendor
remountsucceeded
qiang@ubuntu:~/lineageOs$adbpushout/target/product/oneplus3/system/bin/adbd/system/bin/adbd
out/target/product/oneplus3/system/bin...shed.0.9MB/s(30608bytesin0.034s)
qiang@ubuntu:~/lineageOs$
qiang@ubuntu:~/lineageOs$

3.3 重啟手機測試

參考如下命令:

//查看當前內置的fridaserver是否開機之后自動啟動
C:UsersQiang>adbreboot
C:UsersQiang>adbshellps-Z|findstr"myfridaserver"
usu:s0root3216113942443008poll_schedule_timeout7da95663c8Smyfridaserverarm64

//測試手機frida-server是否能連接上
C:UsersQiang>frida-ps-U
PIDName
-------------------------------------------------------
2190.dataservices
3290.dataservices
2305.qtidataservices
...


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

    關注

    0

    文章

    202

    瀏覽量

    13947
  • 安卓系統
    +關注

    關注

    0

    文章

    273

    瀏覽量

    20535
  • root
    +關注

    關注

    1

    文章

    85

    瀏覽量

    21376

原文標題:配置fridaserver為后臺進程

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

收藏 人收藏

    評論

    相關推薦

    Linux 查看進程和刪除進程

    還是用于監控后臺進程地工作情況,因為后臺進程是不和屏幕鍵盤這些標準輸入/輸出設備進行通信地,所以如果需要檢測其情況,便可以運用 ps 命令了.該命令語法格式如下:ps [選項]-e 顯
    發表于 04-24 00:04

    打開Multisim沒有窗口,但是后臺進程,怎么解決?

    第一次安裝好用著正常。這半年過去了,需要使用它,但是打不開了。打開程序屏幕沒反應,但是后臺進程;再打開一次程序就多一個進程,還是沒窗口。從10.0到14.0版本都安裝過了,結果一樣,都打不開。請問
    發表于 11-23 15:15

    麒麟開源堡壘機后臺進程列表及DEBUG分享!

    1. 認證授權進程:二進制程序位置: /opt/freesvr/audit/authd/***in/freesvr-authd配置文件位置:/opt/freesvr/audit/authd/etc
    發表于 08-25 22:18

    i.MX6ULL終結者進程基礎-進程創建

    代碼在process/目錄下。進程類型:1.交互進程:由shell啟動,用戶和計算機進行問答的進程。2.批處理進程:不與特定終端相關聯,將任務提交到等待隊列按順序執行的
    發表于 03-03 14:11

    前臺運行和后臺運行二者有何區別

    core dump時有何區別 前臺進程如何生成core dump 后臺進程如何生成core dump 正文...
    發表于 11-04 08:18

    LabVIEW可執行文件作為后臺進程運行

    LabVIEW可執行文件作為后臺進程運行已經使用LabVIEW Application Builder將LabVIEW VI構建獨立應用程序(可執行文件)中??蓤绦形募恍枰魏斡脩糨斎?,因此想將
    發表于 03-18 21:15

    HarmonyOS后臺任務管理開發指南上線!

    : 代理提醒是指應用退后臺進程終止后,系統會代理應用做相應的提醒。適用于定時提醒類業務,當前支持的提醒類型包括倒計時、日歷和鬧鐘三類。 圖 1 后臺任務類型選擇 保障選擇到合適的
    發表于 11-29 09:58

    iPhone后臺清理進程是否真的能省電?

    去年年中,蘋果官方確認清理iPhone后臺是無用功的消息傳遍了各個數碼角落,然而事實并非如蘋果公司回復的那般自信,清理進程有時真的能省電。
    的頭像 發表于 06-18 09:46 ?4090次閱讀

    你了解過Linux后臺服務進程的開發過程?

    守護進程(Daemon)是運行在后臺的一種特殊進程。它獨立于控制終端并且周期性地執行某種任務或等待處理某些發生的事件。守護進程是一種很有用的進程
    發表于 05-13 09:21 ?1903次閱讀

    Linux 后臺運行程序

    。jobsjos?命令用于顯示 Linux 中的任務列表及任務狀態,包括后臺運行的任務。該命令可以顯示任務號及其對應的進程號。其中,任務號是以普通用戶的角度進行的,而進程號則是從系統管理員的角度來看的。一個
    發表于 04-02 14:41 ?778次閱讀

    谷歌將限制 Chrome 標簽頁后臺進程,增加筆記本續航

    谷歌希望通過限制標簽頁的后臺進程來大幅降低其Chrome瀏覽器的能耗。
    的頭像 發表于 07-07 14:04 ?2474次閱讀

    Linux 安全模塊:守護進程和套接字

    守護進程通常是在后臺觀察操作以等待狀態、服務于特定子系統并確定整個系統的操作規則的實用程序。例如,一個守護進程配置監控打印服務的狀態。
    發表于 08-26 10:01 ?653次閱讀

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

    添加自定義屬性控制fridaserver啟動和停止
    的頭像 發表于 08-09 10:08 ?1646次閱讀
    添加自定義屬性控制<b class='flag-5'>fridaserver</b>啟動和停止

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

    在章節"添加自定義屬性控制fridaserver啟動和停止"已經添加了相關控制屬性。
    的頭像 發表于 08-22 09:27 ?2412次閱讀
    在App中編寫控制<b class='flag-5'>fridaserver</b>啟動和停止的代碼邏輯簡析

    編譯官方fridaserver或者strongFrida并替換系統內置版本

    下載官方frida源碼并編譯安卓版本的fridaserver,然后替換內置版本。
    的頭像 發表于 10-24 16:51 ?2970次閱讀