0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在App中编写控制fridaserver启动和停止的代码逻辑简析

哆啦安全 来源:卓码星球 2023-08-22 09:27 次阅读

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工程配置如图所示:

f3828b78-407d-11ee-ac96-dac502259ad0.jpg

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主界面

内置的控制FridaServerApp功能控制界面如下所示:

f3a22262-407d-11ee-ac96-dac502259ad0.png

4.2 控制启动fridaserver

App控制启动frida-server测试如下所示:

f3b98196-407d-11ee-ac96-dac502259ad0.jpg

4.3 控制停止运行的fridaserver

App控制停止frida-server测试如下:

f3d7831c-407d-11ee-ac96-dac502259ad0.jpg

4.3 修改fridaserver端口后再重启

App控制修改fridaserver端口测试:

f3e8bdbc-407d-11ee-ac96-dac502259ad0.jpg

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

    文章

    15223

    浏览量

    171188
  • SDK
    SDK
    +关注

    关注

    3

    文章

    966

    浏览量

    44696
  • ADB驱动
    +关注

    关注

    0

    文章

    13

    浏览量

    6234
  • TCP通信
    +关注

    关注

    0

    文章

    144

    浏览量

    4138

原文标题:App中编写控制fridaserver启动和停止的代码逻辑

文章出处:【微信号:哆啦安全,微信公众号:哆啦安全】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    零编码生成智能硬件APP代码

    和百度推送。开发者下载源码后,只需要优化UI和设计设备控制界面控制逻辑,源码的控制页面编写了机智云SDK
    发表于 03-29 09:52

    调试代码程序启动闪存停止

    调试时,我的代码启动闪存停止。程序内存为84%,数据存储器为20%,这可能是问题的原因。
    发表于 09-26 17:22

    为什么16位单片机集成环境下编写代码时不需要自己写启动代码

    视频APP直接写C文件启动代码由操作系统提供然而比如16位单片机没有操作系统集成环境下编写
    发表于 06-26 04:20

    (可远程)App inventor编写安卓app控制ESP8266

    ,如果WIFI信息没有填错的话ESP8266就会自动连接到云服务器上。开发者可进行测试,测试方法,控制台该主题处推送消息,可观察ESP8266是否收到该消息。可通过串口工具查看输出。消息检测
    发表于 08-23 18:52

    UARTFPGA的原理与实现

    IIC,iic属于半双工的传输,内部通过上拉电阻的配置进行双向传输。为了更好的理解,我们分别写UART的RS232类型的数据接收与发送,最后一个统一的顶层文件调用两个子模块理解这种通用异步收发方式
    发表于 09-06 20:22

    基于stm32的巡线小车联合调试

    #采用stm32f103c8t6芯片基础的服务函数写完了,接下来开始联合调试了。整合篇第一章,我将会进行蓝牙模块更加进一步的编写,其中包括传输红外传感器数据,pid调试部分代码。不
    发表于 01-14 07:49

    Armv8.1-M PAC和BTI扩展

    1、Armv8.1-M PAC和 BTI 扩展Armv8-M通过Trustzone for Armv8-M, Memory Protection Unit (MPU) 和Privileged
    发表于 08-05 14:56

    OpenHarmony应用核心技术理念与需求机遇

    一、核心技术理念 图片来源:OpenHarmony官方网站 二、需求机遇 新的万物互联智能世界代表着新规则、新赛道、新切入点、新财富机会;各WEB网站、客户端( 苹果APP、安卓APK)、微信
    发表于 09-22 16:12

    顺序启动逆序停止带报警

    三菱PLC(可编程逻辑控制器)编程实例项目例程:顺序启动逆序停止带报警
    发表于 12-10 13:13 9次下载

    (远程控制App inventor 编写安卓app控制 ESP8266

    App inventor 编写安卓app控制 ESP8266第一 下载ESP8266示例(arduino ide 编程开发)第二 修改demo例程第三
    发表于 12-08 17:06 26次下载
    (远程<b class='flag-5'>控制</b>)<b class='flag-5'>App</b> inventor <b class='flag-5'>编写</b>安卓<b class='flag-5'>app</b><b class='flag-5'>控制</b> ESP8266

    AD9361芯片进行数据接口逻辑代码编写

    本文通过以高速AD9361芯片为例进行数据接口逻辑代码编写,利用SelectIO IP快速高效完成芯片驱动的生成。
    的头像 发表于 07-01 09:59 4516次阅读

    添加自定义属性控制fridaserver启动停止

    添加自定义属性控制fridaserver启动停止
    的头像 发表于 08-09 10:08 866次阅读
    添加自定义属性<b class='flag-5'>控制</b><b class='flag-5'>fridaserver</b><b class='flag-5'>启动</b>和<b class='flag-5'>停止</b>

    多地启动停止、点动控制电路运行原理

    今天给大家介绍一下多地启动停止、点动控制电路的运行原理。
    的头像 发表于 08-14 11:33 969次阅读
    多地<b class='flag-5'>启动</b>、<b class='flag-5'>停止</b>、点动<b class='flag-5'>控制</b>电路运行原理

    变频器启动停止怎么接线

    变频器的控制,不外乎启动停止,正转,反转,调速这几样基本的逻辑,这些逻辑基本上要求是电平状态有效,而不是上升边缘有效,所以使用按钮开关
    的头像 发表于 09-03 14:41 1828次阅读
    变频器<b class='flag-5'>启动</b><b class='flag-5'>停止</b>怎么接线

    TSMaster小程序启动停止的自动化控制流程

    在实际应用场景中,用户常常需要按一定逻辑和时序来控制TSMaster内置功能模块的启动停止,TSMaster软件内置有C/Python小程序和图形程序,开发者可以通过编程对这些模块的
    的头像 发表于 12-02 08:21 579次阅读
    TSMaster小程序<b class='flag-5'>启动</b>和<b class='flag-5'>停止</b>的自动化<b class='flag-5'>控制</b>流程