1.控制属性梳理
在章节"添加自定义属性控制fridaserver启动和停止"已经添加了相关控制属性。具体添加的属性功能如下:
#控制adbd重启的属性,为1表示重启 xro.start.myadb= #控制fridaserver启动停止的属性 #0表示停止fridaserver1表示启动fridaserver xro.start.myfrd=0 #设置fridaserver启动的端口 xro.start.myfrd.port=27042
2.封装属性读取和写入接口
在安卓系统中提供了SystemProperties类来进行系统属性获取和设置操作。但是由于该类是隐藏类,没有在sdk中提供。所以在我们开发的App中是不能直接调用的。可以采用以下两种方法进行该接口调用。
(1) 反射方式调用
在代码中通过反射方法使用SystemProperties类提供的接口。如下关键代码:
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工程中添加只编译方式的依赖库调用
在App工程中添加独立工程模块,然后声明和系统类SystemProperties一模一样的类。该类中声明需要调用的方法,但是不具体实现函数功能。比如参考如下:
packageandroid.os; publicclassSystemProperties{ publicstaticStringget(Stringkey,Stringdef){ thrownewUnsupportedOperationException("SystemProperties"); } publicstaticvoidset(Stringkey,Stringval){ thrownewUnsupportedOperationException("SystemProperties"); } }
App工程配置如图所示:
3.编译内置测试
将App工程中的AndroidManifest.xml中添加"android:sharedUserId="android.uid.system"",然后编译打包apk并内置到系统即可。
由于我们只是增加了App模块,所以只需要编译App模块然后adb push模块apk文件到手机进行测试。参考编译模块测试命令:
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.验证测试
4.1 控制fridaserver主界面
内置的控制FridaServer的App功能控制界面如下所示:
4.2 控制启动fridaserver
App控制启动frida-server测试如下所示:
4.3 控制停止运行的fridaserver
App控制停止frida-server测试如下:
4.3 修改fridaserver端口后再重启
App控制修改fridaserver端口测试:
App端修改fridaserver端口重启之后,PC端需要使用adb进行端口重定向,否则电脑端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
审核编辑:刘清
-
控制器
+关注
关注
112文章
16191浏览量
177347 -
SDK
+关注
关注
3文章
1026浏览量
45763 -
ADB驱动
+关注
关注
0文章
13浏览量
6259 -
TCP通信
+关注
关注
0文章
146浏览量
4215
原文标题:App中编写控制fridaserver启动和停止的代码逻辑
文章出处:【微信号:哆啦安全,微信公众号:哆啦安全】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论