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

    文章

    16191

    浏览量

    177347
  • SDK
    SDK
    +关注

    关注

    3

    文章

    1026

    浏览量

    45763
  • ADB驱动
    +关注

    关注

    0

    文章

    13

    浏览量

    6259
  • TCP通信
    +关注

    关注

    0

    文章

    146

    浏览量

    4215

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

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

收藏 人收藏

    评论

    相关推荐

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

    调试时,我的代码启动闪存停止。程序内存为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

    BGA封装技术与质量控制

    BGA封装技术与质量控制   SMT(Surface Mount Technology)表面安装技术顺应了电子产品小型化、轻型化的潮流趋势,为实现电子
    发表于 03-30 16:49 1473次阅读

    鼠标HID例程()

    鼠标 HID 例程 紧接《鼠标 HID 例程(上)》一文,继续向大家介绍鼠 标 HID 例程的未完的内容。
    发表于 07-26 15:18 0次下载

    顺序启动逆序停止带报警

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

    可编程逻辑控制器PLC

    PLC代表可编程逻辑控制器。它们基本上用于控制工业的自动化系统。它们是最先进和最简单的控制系统之一,现在正在大规模地取代硬连线
    发表于 07-03 14:48 2215次阅读
    <b class='flag-5'>简</b><b class='flag-5'>析</b>可编程<b class='flag-5'>逻辑</b><b class='flag-5'>控制</b>器PLC

    获取单片机代码运行时间的方法资料下载

    电子发烧友网为你提供获取单片机代码运行时间的方法资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助
    发表于 04-24 08:49 12次下载
    <b class='flag-5'>简</b><b class='flag-5'>析</b>获取单片机<b class='flag-5'>代码</b>运行时间的方法资料下载

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

    App inventor 编写安卓app控制 ESP8266第一 下载ESP8266示例(arduino ide 编程开发)第二 修改demo例程第三
    发表于 12-08 17:06 28次下载
    (远程<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 5567次阅读

    5G AAU 功放控制和监测模块

    5G AAU 功放控制和监测模块
    发表于 10-28 12:00 2次下载
    5G AAU 功放<b class='flag-5'>控制</b>和监测模块<b class='flag-5'>简</b><b class='flag-5'>析</b>

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

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

    AFE8092帧同步特性

    AFE8092帧同步特性
    的头像 发表于 08-24 13:37 625次阅读
    AFE8092帧同步特性<b class='flag-5'>简</b><b class='flag-5'>析</b>

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

    实际应用场景,用户常常需要按一定逻辑和时序来控制TSMaster内置功能模块的启动停止,T
    的头像 发表于 12-02 08:21 1221次阅读
    TSMaster小程序<b class='flag-5'>启动</b>和<b class='flag-5'>停止</b>的自动化<b class='flag-5'>控制</b>流程

    【鸿蒙】OpenHarmony 4.0蓝牙代码结构

    OpenHarmony 4.0蓝牙代码结构前言 OpenHarmony 4.0上蓝牙仓和目录结构进行一次较大整改,本文基于4.0以上版本对蓝牙代码进行分析,便于读者快速了解和学习
    的头像 发表于 02-26 16:08 1474次阅读
    【鸿蒙】OpenHarmony 4.0蓝牙<b class='flag-5'>代码</b>结构<b class='flag-5'>简</b><b class='flag-5'>析</b>