1.控制屬性梳理
在章節(jié)"添加自定義屬性控制fridaserver啟動(dòng)和停止"已經(jīng)添加了相關(guān)控制屬性。具體添加的屬性功能如下:
#控制adbd重啟的屬性,為1表示重啟 xro.start.myadb= #控制fridaserver啟動(dòng)停止的屬性 #0表示停止fridaserver1表示啟動(dòng)fridaserver xro.start.myfrd=0 #設(shè)置fridaserver啟動(dòng)的端口 xro.start.myfrd.port=27042
2.封裝屬性讀取和寫入接口
在安卓系統(tǒng)中提供了SystemProperties類來(lái)進(jìn)行系統(tǒng)屬性獲取和設(shè)置操作。但是由于該類是隱藏類,沒有在sdk中提供。所以在我們開發(fā)的App中是不能直接調(diào)用的。可以采用以下兩種方法進(jìn)行該接口調(diào)用。
(1) 反射方式調(diào)用
在代碼中通過反射方法使用SystemProperties類提供的接口。如下關(guān)鍵代碼:
publicstaticStringget(Stringkey,StringdefValue){ try{ ClasssystemPropertiesCls=Class.forName("android.os.SystemProperties"); MethodsetKeyMethod=systemPropertiesCls.getDeclaredMethod("get",String.class,String.class); setKeyMethod.setAccessible(true); return(String)setKeyMethod.invoke(null,key,defValue); }catch(Exceptioneee){ eee.printStackTrace(); } returnnull; } publicstaticvoidset(Stringkey,Stringval){ try{ ClasssystemPropertiesCls=Class.forName("android.os.SystemProperties"); MethodsetKeyMethod=systemPropertiesCls.getDeclaredMethod("set",String.class,String.class); setKeyMethod.setAccessible(true); setKeyMethod.invoke(null,key,val); }catch(Exceptioneee){ eee.printStackTrace(); } }
(2).App工程中添加只編譯方式的依賴庫(kù)調(diào)用
在App工程中添加獨(dú)立工程模塊,然后聲明和系統(tǒng)類SystemProperties一模一樣的類。該類中聲明需要調(diào)用的方法,但是不具體實(shí)現(xiàn)函數(shù)功能。比如參考如下:
packageandroid.os; publicclassSystemProperties{ publicstaticStringget(Stringkey,Stringdef){ thrownewUnsupportedOperationException("SystemProperties"); } publicstaticvoidset(Stringkey,Stringval){ thrownewUnsupportedOperationException("SystemProperties"); } }
App工程配置如圖所示:
3.編譯內(nèi)置測(cè)試
將App工程中的AndroidManifest.xml中添加"android:sharedUserId="android.uid.system"",然后編譯打包apk并內(nèi)置到系統(tǒng)即可。
由于我們只是增加了App模塊,所以只需要編譯App模塊然后adb push模塊apk文件到手機(jī)進(jìn)行測(cè)試。參考編譯模塊測(cè)試命令:
qiang@ubuntu:~/lineageOs$makeclean-ControlFrida qiang@ubuntu:~/lineageOs$makeControlFrida 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/app/ControlFrida/ControlFrida.apk/system/app/ControlFrida/ControlFrida.apk out/target/product/oneplus3/system/app/ControlFrida/Co...pk:1filepushed.21.4MB/s(2754053bytesin0.123s) qiang@ubuntu:~/lineageOs$ qiang@ubuntu:~/lineageOs$
4.驗(yàn)證測(cè)試
4.1 控制fridaserver主界面
內(nèi)置的控制FridaServer的App功能控制界面如下所示:
4.2 控制啟動(dòng)fridaserver
App控制啟動(dòng)frida-server測(cè)試如下所示:
4.3 控制停止運(yùn)行的fridaserver
App控制停止frida-server測(cè)試如下:
4.3 修改fridaserver端口后再重啟
App控制修改fridaserver端口測(cè)試:
App端修改fridaserver端口重啟之后,PC端需要使用adb進(jìn)行端口重定向,否則電腦端frida工具是不能連上的。參考如下命令:
C:UsersQiang>adbforwardtcp:27049tcp:27049 C:UsersQiang>frida-ps-H127.0.0.1:27049
,否則電腦端frida工具是不能連上的。參考如下命令:
C:UsersQiang>adbforwardtcp:27049tcp:27049 C:UsersQiang>frida-ps-H127.0.0.1:27049
審核編輯:劉清
-
控制器
+關(guān)注
關(guān)注
114文章
16838瀏覽量
182289 -
SDK
+關(guān)注
關(guān)注
3文章
1057瀏覽量
47369 -
ADB驅(qū)動(dòng)
+關(guān)注
關(guān)注
0文章
13瀏覽量
6393 -
TCP通信
+關(guān)注
關(guān)注
0文章
146瀏覽量
4418
原文標(biāo)題:App中編寫控制fridaserver啟動(dòng)和停止的代碼邏輯
文章出處:【微信號(hào):哆啦安全,微信公眾號(hào):哆啦安全】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
調(diào)試代碼程序在啟動(dòng)閃存中停止
為什么16位單片機(jī)在集成環(huán)境下編寫代碼時(shí)不需要自己寫啟動(dòng)代碼?
(可遠(yuǎn)程)App inventor編寫安卓app控制ESP8266
簡(jiǎn)析BGA封裝技術(shù)與質(zhì)量控制
鼠標(biāo)HID例程(中)簡(jiǎn)析
順序啟動(dòng)逆序停止帶報(bào)警
簡(jiǎn)析可編程邏輯控制器PLC

簡(jiǎn)析獲取單片機(jī)代碼運(yùn)行時(shí)間的方法資料下載

(遠(yuǎn)程控制)App inventor 編寫安卓app控制 ESP8266

AD9361芯片進(jìn)行數(shù)據(jù)接口邏輯代碼的編寫
TSMaster小程序啟動(dòng)和停止的自動(dòng)化控制流程

【鴻蒙】OpenHarmony 4.0藍(lán)牙代碼結(jié)構(gòu)簡(jiǎn)析

評(píng)論