frida学习

r0ysue frida学习复现
摘要由CSDN通过智能技术生成

主要参考链接,本文是r0ysue系列文章的复现
本文附件仓库

frida是面向开发人员、逆向工程师和安全研究人员的动态工具集

可以用它将JavaScript的片段或自己的库注入Windows,MacOS,GNU/Linux,iOS,Android和QNX上的本机应用程序。Frida还提供了一些在Frida API之上构建的简单工具。

环境配置

Windows平台:pip install frida

root过的pixel 2 android 10:下载amd64位的frida-server并使用adb安装

Windows平台通过frida-ps -U测试是否能够呈现app进程

frida-server版本和pip安装的frida版本要一致

关闭selinux:

adb shell getenforce
adb shell setenforce 0 

frida直接运行js脚本:

-U usb,-f target,-l script,–no-pause 在启动后自动开始主线程

frida -U -f com.example.testfrida2 -l 1.js --no-pause

基本能力Ⅰ:hook参数、修改结果

附件:1.apk 1.js

app中onCreate函数中调用fun(50,30),fun函数实现:

public void fun(int x , int y ){
   
    Log.d("Sum" , String.valueOf(x+y));
}

frida js:

  • Dalvik层的代码必须定义为一个函数并使用**Java.perform(…)**注册
  • Java.use选取要HOOK的类
  • 将目标方法的implementation属性修改为一个新的函数,其参数的数量必须与原函数相同
    • 运行原方法只需在函数内部调用this.方法名
  • setImmediate()用于异步执行一段代码,越快越好
function main() {
   
    Java.perform(() => {
   
        var my_class = Java.use("com.example.testfrida2.MainActivity");
        my_class.fun.implementation = function(x,y){
   
                this.fun(2,5);
                console.log("x => " + x + "   y => " + y);
            };
    });
}

setImmediate(main)

运行效果:

在这里插入图片描述

logcat | grep Sum,看到log改变:

在这里插入图片描述

基本能力Ⅱ:参数构造、方法重载、隐藏函数的处理

附件:2.apk、2.js

app中定义一个成员、两个fun及其调用:

private String total = "@@@###@@@";

onCreate函数中:

fun(50,30);
Log.d("ROYSUE.string" , fun("LoWeRcAsE Me!!!!!!!!!"));
void fun(int x , int y ){
   
    Log.d("ROYSUE.Sum" , String.valueOf(x+y));
}

String fun(String x){
   
    total +=x;
    return x.toLowerCase();
}

String secret(){
   
    return total;
}

frida js:

  • overload实现函数重载
  • java string类型数据需获取java.lang.String类,通过**类.new()**方法构造函数
  • Java.choose方法可以用来调用隐藏函数
    • onMatch查找类的实例,调用每个类实例的方法,有多少类实例就会调用多少次
  • Java.choose选择内存中已有的实例,Java.use会新建实例
function main() {
   
    Java.perform(() => {
   
        var string_class = Java.use("java.lang.String");
        var my_class = Java.use("com.example.testfrida2.MainActivity");
        my_class.fun.overload("java.lang.String").implementation = function(x){
   
            console.log("Original arg: " + x );
            var my_string = string_class.$new("My Test String#####");
            var ret =  this.fun(my_string);
            console.log("Return value: " + ret);
            return ret;
            };
        my_class.fun.overload("int" , "int").implementation = function(x,y){
   
            console.log("x => " + x + "   y => " + y);
            this.fun(x, y);
            console.log("*************************************");
            };
        Java.choose("com.example.testfrida2.MainActivity" , {
   
            onMatch : function(instance)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用,在安装Frida时需要参考最新的安装教程,并确保安装的是最新版本的Fridafrida-tools。使用pip进行安装可能会导致安装最新版的Frida成功,但安装frida-tools时会报错。 根据引用,可以使用重载方法hook的方式来编写代码,例如: ```javascript var utils = Java.use('com.xiaojianbang.app.Utils'); utils.test.overload().implementation = function (a) { // 在这里编写你的代码逻辑 } ``` 要注意的是,如果传入的内容是个人定义的内容,可以参考传入字符串的方式来进行overload,将overload的内容要求变成传入方法的全路径。例如: ```javascript utils.test.overload('com.xiaojianbang.app.Money').implementation ``` 根据引用,我们发现内容经过`RequestUtil.encodeDesMap`进行了处理,处理的数据内容为`addMap`。然而,关于Frida获取content的具体方法或实例,引用中并未提及。因此,需要进一步查找相关资料来获取准确的信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Frida—HOOK 学习笔记1](https://blog.csdn.net/m0_38036918/article/details/126624565)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值