美文网首页
Android逆向- frida

Android逆向- frida

作者: 冷野明 | 来源:发表于2023-12-22 15:08 被阅读0次

一.Firda安装:

  1. frida分为客户端和服务端:
  • 客户端:PC(控制端)
  • 服务器:手机设备(被控制端)
  • 客户端编写的 Python 代码,用于连接远程设备,提交要注入的 JS 代码到服务端,接受服务端发来的消息的
  1. 客户端安装:
pip install frida-tools
  1. 服务端安装:

adb shell cat /proc/cpuinfo 查看CPU架构
https://github.com/frida/frida/releases 根据手机架构要求找到frida-server

1.armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它.
2.arm64-v8a: 第8代、64位ARM处理器,很少设备。
3.x86: 平板、模拟器用得比较多。
4.x86_64: 64位的平板。

把下载好的frida-server解压完,adb 放到 /data/local/tmp 目录下,进行启动。

转发端口: adb forward tcp:27042 tcp:27042

二.HOOK:

上面基本简单介绍一下frida, 和安装流程,接下来就是一个简单的HookDemo, 话不多说上代码。

import frida
import sys




jscode = """

/* 这个字段标记Java虚拟机(例如: Dalvik 或者 ART)是否已加载, 操作Java任何东西的之前,要确认这个值是否为true */
if(Java.available){
    Java.perform(function(){

        /* Java.use方法用于声明一个Java类,在用一个Java类之前首先得声明。比如声明一个String类,要指定完整的类名var StringClass=Java.use("java.lang.String"); */
        var MainActivity = Java.use("xxx.xxx.xxx.helpers.utils.Sign");
        /* 类.函数.overload(参数类型).implementation = function(形参名称){ */
        
        MainActivity.a.overload("java.lang.String", "java.lang.String", "java.lang.String", "java.lang.String").implementation = function(str1, str2, str3, str4){
            
            for( var i=0; i<arguments.length; i++){
                console.log("arge >>>>>>>" + arguments[i])
            }               
            /* 修改addnumber函数的返回值 */
            var result = this.a(str1, str2, str3, str4);
            
            console.log("this sign >>>>>>>> " + result)
            console.log('------------------------------------------------')
            return result
        }
    });

}
"""

def on_message(message, data):
    if message['type'] == 'send':
        print(" {0}".format(message['payload']))
    else:
        print(message)


# 查找USB设备并附加到目标进程
session = frida.get_usb_device().attach('xxx.xxx.xxx') # appName

# 在目标进程里创建脚本
script = session.create_script(jscode)

# 注册消息回调
script.on('message', on_message)

# 加载创建好的javascript脚本
script.load()

# 读取系统输入
sys.stdin.read()

相关文章

网友评论

      本文标题:Android逆向- frida

      本文链接:https://www.haomeiwen.com/subject/itqqndtx.html