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

admin 2024年10月7日18:28:00评论20 views字数 3195阅读10分39秒阅读模式

1.控制属性梳理

在章节"添加自定义属性控制fridaserver启动和停止"已经添加了相关控制属性。具体添加的属性功能如下:

# 控制adbd重启的属性,为1表示重启
xro.start.myadb=

#
 控制fridaserver启动停止的属性
# 0表示停止fridaserver 1表示启动fridaserver
xro.start.myfrd=0

#
设置fridaserver启动的端口
xro.start.myfrd.port=27042

2.封装属性读取和写入接口

在安卓系统中提供了SystemProperties类来进行系统属性获取和设置操作。但是由于该类是隐藏类,没有在sdk中提供。所以在我们开发的App中是不能直接调用的。可以采用以下两种方法进行该接口调用。

(1) 反射方式调用
在代码中通过反射方法使用SystemProperties类提供的接口。如下关键代码:

 public static String get(String key,String defValue) {
        try {
            Class systemPropertiesCls = Class.forName("android.os.SystemProperties");
            Method setKeyMethod = systemPropertiesCls.getDeclaredMethod("get"String.class,String.class);
            setKeyMethod.setAccessible(true);
            return (String) setKeyMethod.invoke(null, key,defValue);
        } catch (Exception eee) {
            eee.printStackTrace();
        }
        return null;
    }

    public static void set(String key, String val) {
        try {
            Class systemPropertiesCls = Class.forName("android.os.SystemProperties");
            Method setKeyMethod = systemPropertiesCls.getDeclaredMethod("set"String.classString.class);
            setKeyMethod.setAccessible(true);
            setKeyMethod.invoke(null, key, val);
        } catch (Exception eee) {
            eee.printStackTrace();
        }
    }

(2).App工程中添加只编译方式的依赖库调用

App工程中添加独立工程模块,然后声明和系统类SystemProperties一模一样的类。该类中声明需要调用的方法,但是不具体实现函数功能。比如参考如下:

package android.os;

public class SystemProperties {
    public static String get(String key, String def) {
        throw new UnsupportedOperationException("SystemProperties");
    }

    public static void set(String key, String val) {
        throw new UnsupportedOperationException("SystemProperties");
    }
}

App工程配置如图所示:

App中编写控制fridaserver启动和停止的代码逻辑
在这里插入图片描述

3.编译内置测试

App工程中的AndroidManifest.xml中添加"android:sharedUserId="android.uid.system"",然后编译打包apk并内置到系统即可。

由于我们只是增加了App模块,所以只需要编译App模块然后adb push模块apk文件到手机进行测试。参考编译模块测试命令:

qiang@ubuntu:~/lineageOs$ make clean-ControlFrida
qiang@ubuntu:~/lineageOs$ make ControlFrida
qiang@ubuntu:~/lineageOs$ adb remount
[libfs_mgr]dt_fstab: Skip disabled entry for partition vendor
[libfs_mgr]dt_fstab: Skip disabled entry for partition vendor
[libfs_mgr]dt_fstab: Skip disabled entry for partition vendor
remount succeeded
qiang@ubuntu:~/lineageOs$ adb push out/target/product/oneplus3/system/app/ControlFrida/ControlFrida.apk  /system/app/ControlFrida/ControlFrida.apk
out/target/product/oneplus3/system/app/ControlFrida/Co...pk: 1 file pushed. 21.4 MB/s (2754053 bytes in 0.123s)
qiang@ubuntu:~/lineageOs$ 
qiang@ubuntu:~/lineageOs$ 

4.验证测试

4.1 控制fridaserver主界面

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

App中编写控制fridaserver启动和停止的代码逻辑
在这里插入图片描述

4.2 控制启动fridaserver

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

App中编写控制fridaserver启动和停止的代码逻辑
在这里插入图片描述

4.3 控制停止运行的fridaserver

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

App中编写控制fridaserver启动和停止的代码逻辑
在这里插入图片描述

4.3 修改fridaserver端口后再重启

App控制修改fridaserver端口测试:

App中编写控制fridaserver启动和停止的代码逻辑
在这里插入图片描述

App端修改fridaserver端口重启之后,PC端需要使用adb进行端口重定向,否则电脑端frida工具是不能连上的。参考如下命令:

C:UsersQiang>adb forward tcp:27049  tcp:27049
C:UsersQiang>frida-ps -H 127.0.0.1:27049

,否则电脑端frida工具是不能连上的。参考如下命令:

C:UsersQiang>adb forward tcp:27049  tcp:27049
C:UsersQiang>frida-ps -H 127.0.0.1:27049

先扫码关注"哆啦安全"视频号,然后在文章后面添加微信号,免费领取付费课程,8折加入知识星球(自愿原则),最后免费加群,"哆啦安全"视频号,即将更新更多视频和课程直播,欢迎关注、分享、推荐!

1.谷歌系列Android机型群

2.Android系统定制项目交流群

3.Android安全研究技术交流群

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

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

原文始发于微信公众号(哆啦安全):App中编写控制fridaserver启动和停止的代码逻辑

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月7日18:28:00
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   App中编写控制fridaserver启动和停止的代码逻辑https://cn-sec.com/archives/1989665.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息