android逆向神器之firda

使用frida完成X信视频转发功能 安卓/手游逆向交流群:963612891 目标: 使用frida 分析 实现 微信7.0.3 版的视频转发 工具:android killer ,frida 1.分析过程 1)在聊天对话框中长按某个视频文件,点转发弹出聊系人选择,选中某个联系人后显示发送确认信息,如下图 2)命令行中输入adb shell dumpsys activity top ,显示当前acitivity信息。SelectC... 阅读详情

这东西ios和android有部分相似
ios装插件,android是个原生的arm包,放进去运行一下。不过要端口转发如下:

echo hello world!!
source ~/.bash_profile
adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043
echo work

写成了脚本,没啥好说的。
花了些时间写了个挂钩脚本模版,留着以后用:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import frida
import sys
import optparse
import re

global session

def enume_proc():
    global session
    rdev = frida.get_remote_device()
    session = rdev.attach("com.tencent.mm")  
    modules = session.enumerate_modules()
    for module in modules:
        print module
        export_funcs = module.enumerate_exports()
        print "\tfunc_name\tRVA"
        for export_func in export_funcs:
            print "\t%s\t%s"%(export_func.name,hex(export_func.relative_address))

#枚举某个进程加载的所有模块
def proc_module_show():
    global session
    rdev = frida.get_remote_device()
    session = rdev.attach("com.tencent.mm")  #如果存在两个一样的进程名可以采用rdev.attach(pid)的方式
    modules = session.enumerate_modules()
    for module in modules:
        print module
        export_funcs = module.enumerate_exports()
        print "\tfunc_name\tRVA"
        for export_func in export_funcs:
            print "\t%s\t%s"%(export_func.name,hex(export_func.relative_address))


#hook native函数
def native_hook(name):
    global session
    rdev = frida.get_remote_device()
    session = rdev.attach(name)
    scr = """
    Interceptor.attach(Module.findExportByName("libc.so" , "open"), {
        onEnter: function(args) {
            send("open("+Memory.readCString(args[0])+","+args[1]+")");
        },
        onLeave:function(retval){

        }
    });
    """
    script = session.create_script(scr)
    script.on("message" , on_message)
    script.load()
    sys.stdin.read()


'''如下代码为hook微信(测试版本为6.3.13,不同版本由于混淆名字的随机生成的原因或者代码改动导致名称不一样)com.tencent.mm.sdk.platformtools.ay类的随机数生成函数,让微信猜拳随机(tye=2),二摇色子总是为6点(type=5)'''
def hook(name):
    global session
    print name
    rdev = frida.get_remote_device()
    session = rdev.attach(name)
    scr = """
    Java.perform(function () {
    var ay = Java.use("com.sina.deviceidjnisdk.DeviceId");
    DeviceId.getDeviceId.implementation = function(){
        var type = arguments[0];
        send("type="+type);
        var result=this.getDeviceId();
        send("reuslt="+result)
        return result;
    };
    });
    """
    script = session.create_script(scr)
    script.on("message" , on_message)
    script.load()
    sys.stdin.read()
def on_message(message ,data):
    print message

'''枚举手机进程'''
def enume_proc():
    rdev = frida.get_remote_device()
    processes = rdev.enumerate_processes()
    for process in processes:
        print process
def find_proc(name):
    rdev = frida.get_remote_device()
    processes = rdev.enumerate_processes()
    for process in processes:
        if process.name==name:
            return True
    return False
def main():
    if len(sys.argv)>2:
        name=sys.argv[2]
    else:
        name="com.sina.weibo"

    if sys.argv[1]=='ps':
        enume_proc()

    elif sys.argv[1]=='hookjava':
        #等待程序启动,直接附加
        print "please app waiting launched..."
        while True:
            if find_proc(name)==False:
                continue
            else:
                break
        print "find process"
        hook(name)


if __name__ == "__main__":
    try:
        main()
    except KeyboardInterrupt:
        if session:
            session.detach()
        sys.exit()
    else:
        pass
    finally:
        pass

据说还可以注入dex没试,记录下:



'''通过friada向android进程注入dex'''

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

jscode = """
Java.perform(function () {
    var currentApplication = Java.use("android.app.ActivityThread").currentApplication();
    var context = currentApplication.getApplicationContext();
    var pkgName = context.getPackageName();
    var dexPath = "%s";
    var entryClass = "%s";
    Java.openClassFile(dexPath).load();
    console.log("inject " + dexPath +" to " + pkgName + " successfully!")
    Java.use(entryClass).%s("%s");
    console.log("call entry successfully!")
});
"""

def checkRequiredArguments(opts, parser):
    missing_options = []
    for option in parser.option_list:
        if re.match(r'^\[REQUIRED\]', option.help) and eval('opts.' + option.dest) == None:
            missing_options.extend(option._long_opts)
    if len(missing_options) > 0:
        parser.error('Missing REQUIRED parameters: ' + str(missing_options))

if __name__ == "__main__":
    usage = "usage: python %prog [options] arg\n\n" \
            "example: python %prog -p com.android.launcher " \
            "-f /data/local/tmp/test.apk " \
            "-e com.parker.test.DexMain/main " \
            "\"hello fridex!\""
    parser = optparse.OptionParser(usage)
    parser.add_option("-p", "--package", dest="pkg", type="string",
                      help="[REQUIRED]package name of the app to be injected.")
    parser.add_option("-f", "--file", dest="dexPath", type="string",
                      help="[REQUIRED]path of the dex")
    parser.add_option("-e", "--entry", dest="entry", type="string",
                      help="[REQUIRED]the entry function Name.")

    (options, args) = parser.parse_args()
    checkRequiredArguments(options, parser)
    if len(args) == 0:
        arg = ""
    else:
        arg = args[0]

    pkgName = options.pkg
    dexPath = options.dexPath
    entry = options.entry.split("/")
    if len(entry) > 1:
        entryClass = entry[0]
        entryFunction = entry[1]
    else:
        entryClass = entry[0]
        entryFunction = "main"

    process = frida.get_usb_device(1).attach(pkgName)
    jscode = jscode%(dexPath, entryClass, entryFunction, arg)
    script = process.create_script(jscode)
    script.on('message', on_message2)
    print('[*] Running fridex')
    script.load()
    sys.stdin.read()
安卓逆向之过frida检测总结版 启动一个服务(fs1),监听。使用adb设置端口转发,使得本地计算机的6666端口可以与 Android 设备的6666端口通信。使用 Frida 连接到这个服务,指定要注入的目标应用程序(wuaipojie)和要加载的脚本(hook.js。 阅读详情

相关推荐

如何使你的直流电机闭环?(PID讲解)

看了看很多大佬写的PID讲解很全面也很复杂,实在是不适合很多萌新入坑,所以想按自己的理解写一篇通俗易懂的PID算法讲解

a2001444的博客 1万+

Frida之安装和使用教程

前言 在日常分析安卓应用时,通常会有对应用进行hook的需求,用的比较多的hook框架有Xposed,frida,xhook等,正好最近接触Frida接触的较多,所以对Frida的一些常用操作做个记录,方便以后翻阅查询,同时也可以对学习frida的小伙伴有个参考的资料; 一般Frida逆向三阶段: 阶段一.分析程序执行逻辑,函数参数,函数返回值 阶段二.在1的基础上对数据进行修改,执行流程的控制,核心方法的调用 阶段三.在2的基础上实现对核心方法的封装调用,提供对外服务接口 1.FRIDA安装 1.1.

菜鸡小白的成长记录 3万+

如何实现MCGS与S7-200SMART PLC以太网多台通信控制?

第九步:(设备工具箱—设备管理—鼠标依次点击通用TCP/IP父设备—西门子_ Smart200到设备窗口里面去)数据类型:第0位(指PLC地址变量小数点后面的位数,例如我地址是M0.0,那么在数据类型应填写通道的第00位)第十步:(鼠标双击打开通用TCPIP父设备0--[通用TCP/IP父设备]进入通信配置)通道地址:0(指小数点前面起始字节的地址,例如我地址是M0.0,那么应在通道地填写0)。第七步:(选择通用TCP/IP父设备,点击新增,右侧选定设备就会自动添加进去。

u010670857的博客 6718

frida学习及使用

我使用15.1.27版本的frida版本,在安卓手机上会报错。所以我果断升级了frida版本。通过IDA找到要hook的native函数(静态)创建工程的时候,记得将鼠标所在的两个勾选框选上。

AdrianAndroid的专栏 9033

拆解大疆M300电池BMS:基于TI TIDA-010030方案的硬件架构深度分析

本文深度解析了大疆M300无人机电池管理系统(BMS)基于TI TIDA-010030参考设计的硬件架构。通过对比TI方案与大疆实现的差异,详细介绍了BQ7694003监控前端和BQ34Z100电量计的优化设计,以及通信架构的可靠性改进。文章还揭示了大疆在成本、空间和标准化方面的工程妥协与创新平衡,为锂电池保护方案提供了实践参考。

weixin_27066963的博客 238

定位分析RCU stall问题

在编译内核时打开或者在启动参数中增加这样统计信息是在采样周期中收集的。其中number行分别是发生stalled的cpu上的硬中断,软中断,和上下文的切换次数cputime行的前三列分别是硬中断,软中断和任务消耗的cpu时间,单位为ms.最后一个数字是统计的周期时间(ms).因为用户态的任务通常不会引起RCU CPU stalls,所以任务通常是内核任务,这也是为什么只统计system cpu的原因.

happyAnger6的专栏 1994

Firda基础命令和脚本入门 APP 逆向系列

注入指定 js 文件 -U参数是指USB设备 -l参数用于指定注入脚本所在路径 最后是进程名

zhaoxiaoba123的博客 4788

【RT-DETR有效改进】计算训练好权重文件对应的FPS、推理每张图片的平均时间(科研必备)

本文给大家带来的改进机制是利用我们训练好的权重文件计算FPS,同时打印每张图片所利用的平均时间,模型大小(以MB为单位),同时支持batch_size功能的选择,对于轻量化模型的读者来说,本文的内容对你一定有帮助,可以清晰帮你展示出模型速度性能的提升以及轻量化的效果(模型大小),对于以提高精度为目的的读者本文也能够帮助大家展示出现阶段的模型速度指标。所以本文的内容是十分有用的机制,对于大家发表论文来说,下面的图片为运行后的效果可以看到,该有的指标均已打印(本文内容为我独家创新,全网无第二份)下面是效果图和文

Snu77的博客 3629

Firda安装

Firda 是一款易用的跨平台Hook工具, Java层到Native层的Hook无所不能,是一种 动态 的插桩工具,可以插入代码到原生App的内存空间中,动态的去监视和修改行为,原生平台包括Win、Mac、Linux、Android、iOS全平台。

weixin_74761057的博客 1518

基于Python的军事装备信息爬虫实战:Scrapy+Playwright+智能反反爬技术

本文将详细介绍如何使用Python构建一个高效的军事装备信息爬虫系统。我们将从基础的HTTP请求开始,逐步深入到使用Scrapy框架、Playwright浏览器自动化以及最新的反反爬技术。文章包含完整的代码实现、性能优化策略以及数据处理方案,旨在为读者提供一个全面的军事信息爬取解决方案。关键词:Python爬虫、军事装备、Scrapy、Playwright、反反爬。

2201_76125261的博客 1155

21天教你学会PCIe专栏(21)--总结和展望

回顾整个课程的主要内容和知识点总结PCIe技术的发展历程和现状展望PCIe技术的未来发展趋势和应用方向分享学习心得和实践经验1.1 课程回顾基础知识:了解了PCIe的基本概念、发展历程、标准和规范。分层结构:学习了PCIe的物理层、数据链路层和事务层的结构和功能。功能和特性:掌握了PCIe的热插拔、电源管理、多功能设备等高级功能。高速接口技术:学习了PCIe 4.0、5.0和未来趋势。实际案例分析:分析了GPU加速器和存储设备的PCIe设计和优化。常见问题和解决方案。

xiaoheshang_123的博客 672

Firda介绍

Firda介绍 Frida 是一款基于 Python + JavaScript 的 Hook 与调试框架。 Firda 是一款易用的跨平 Hook 工具, Java 层到 Native 层的 Hook 无所不能,是一种 动态 的插桩工具,可以插入代码到原生 App 的内存空间中,动态的去监视和修改行为,原生平台包括 Win、Mac、Linux、Android、iOS 全平台。 静态二进制插桩:在程序执行前插入额外的代码和数据,生成一个永久改变的可执行文件。 动态二进制插桩:在程序运行时实时地插入额外代码和数

weixin_43733912的博客 2401

PINN驱动的3D不可压缩流场重建——从稀疏2D2C观测到完整物理场反演——含源码实现

多尺度融合策略在此发挥作用:高分辨率的2D2C数据用于约束平面内的精细结构,而低分辨率的3D3C数据提供第三维度的粗尺度信息。迁移学习架构在此发挥关键作用。这种策略在湍流封闭模型构建中尤为有效,其中RANS提供的平均流场与DNS的雷诺应力数据融合,显著提升了分离流的预测精度。在稀疏数据场景下,注意力权重根据观测数据的分布动态调整,强化数据缺失区域的物理约束,同时避免过拟合于观测点。这种机制与自适应采样的结合,实现了计算效率与重建精度的平衡,在仅保留约百分之十关键节点的情况下,仍能保持高物理一致性。

u012133341的博客 136

Frida 的使用

Frida 是一个基于 Python 和 JS 的 Hook 与调试框架,是一款易用的跨平台 Hook 工具,无论 Java 层的逻辑,还是 Native 层(c/c++ 编写的逻辑) 的逻辑,它都可以 Hook . Frida 可以把代码插入原生 App 的内存空间,然后动态的监视和修改其行为,支持 windows ,Mac ,Linux ,Android, ios 全平台。

qq_39217312的博客 6732

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Firda基础知识 APP 逆向系列

在安卓的逆向过程中,Frida存在两种模式:第一种是通过命令直接将JavaScript脚本注入到进程中,对进程进行操作称为CLI命令行模式

zhaoxiaoba123的博客 1845

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【frida+rpc 入门安装及demo】

mac运行jdax-gui:依次找目录:xxxxxxx/jadx/build/jadx/bin/jadx-gui。需要注意 安卓手机的 cpu版本 x86 x86_64 arm arm_64等等。将解压出来的文件重命名【frida-server】 (ps:名称自己定义 无所谓)【无返回】 退出app 重新打开 输入手机号 在看py文件是否有返回。给frida-serve设置权限(依次执行每一行)确保手机端已开启frida-server服务。需要安装与pip安装的frida包版本一致。

ctl2309452959的博客 1645

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

安卓逆向基础-Frida 入门及介绍

Frida 是一款基于 Python + JavaScript 的 Hook 与调试框架。Firda 是一款易用的跨平 Hook 工具, Java 层到 Native 层的 Hook 无所不能,是一种 动态 的插桩工具,可以插入代码到原生 App 的内存空间中,动态的去监视和修改行为,原生平台包括 Win、Mac、Linux、Android、iOS 全平台。静态二进制插桩:在程序执行前插入额外的代码和数据,生成一个永久改变的可执行文件。

2301_79455190的博客 956

Frida安装与使用

注意:当手机CPU只支持arm时需要选用frida-server-14.2.18-android-arm该架构的工具,如果支持arm64则需要用frida-server-14.2.18-android-arm64;objection是一个封装了frida的python库,允许我们用命令行而不是代码脚本来实现一些基本的hook功能,比如监控函数的入参出参,从而减少开发者的代码量。Module.enumerateImportsSync("libc.so") 查看名字为libc.so的so库的导入函数表。

weixin_45109047的博客 1万+

Frida 脱壳、自动化、fridaUiTools、objection、Wallbreaker

Frida 进阶:脱壳、自动化、fridaUiTools、objection、Wallbreaker插件

freeking101的博客 2万+

APP攻防第六十七天-Frida反证书抓包

1、资产提取-AppinfoScanner 2、评估框架-MobSF&mobexler 3、抓包利器-Frida&r0capture

B_l_a_nk的博客 3024

【FridaHook整理】Frida安装及Hook安卓常用脚本

1 概述 在逆向过程中,Frida是非常常用的Hook工具,这个工具在日常使用的过程中,有很多通用方法,这里记录一下,方便查阅,部分函数使用的时候,可能需要稍微修改一下,本文记录是Android的方法,不涉及其他的 主要是搬迁的一下参考文章的片段 Android逆向之旅—Hook神器家族的Frida工具使用详解 Frida官方文档 看雪 Frida官方手册 - JavaScript API(篇一) 看雪 Frida官方手册 - JavaScript API(篇二) Js中几种String Byte转换方法

杰孑的博客 4万+

12.安卓逆向-frida基础-hook(安卓和Windows的Charles(青花瓷)抓包环境一条龙,解决可以抓包但无法上网问题-全网最全)

安卓逆向 安卓协议分析 app协议分析 保姆级攻略 app逆向 Android apk逆向 Windows抓包 安卓抓包 Frida环境 安卓抓包环境

计算机王的博客 2768

13.安卓逆向-frida基础-编写hook脚本1

安卓逆向 安卓协议分析 app协议分析 保姆级攻略 app逆向 Android apk逆向

计算机王的博客 2645

APP攻防:Frida&HOOK&Xposed&单向双向&检验抓包

双向证书绕过&Frida&HOOK

AlunXZhou的博客 2075

Firda绕过SSL Pinning检测

Xposed的HooK是Firda是静态的直接去修改代码,也叫插桩,详细一点解释就是,以静态的方式修改第三方程序的代码,也就是从编译阶段对源代码进行编译,而后重新打包,是静态的篡改。

qq_50822277的博客 1103

记录如何启动frida

(https://github.com/frida/frida/releases)下载相应的Frida服务器版本,并推送到你的设备上。Frida服务器运行成功后,可以在电脑上新开一个shell,运行 frida-ps -U命令,即可显示手机中正在运行的进程。首先,你需要查看你的Android设备的CPU架构,以便根据需要下载和安装相应的Frida服务器版本。在安装了客户端之后,你需要在你的Android设备上安装Frida服务端。我用的是公司的试验机,没有条件的小伙伴最后弄一台可以root的设备。

qq_33667332的博客 1609
上一篇: 关于android应用中的签名验证的查找过程
下一篇: 一次还原算法的另类途径——动态库引用
inquisiter
博客等级 码龄10年 374粉丝 228原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值