ios逆向神器frida

安卓app逆向破解脱壳教程 From:Hook 神器家族的 Frida 工具使用详解:https://blog.csdn.net/FlyPigYe/article/details/90258758 详解 Hook 框架 frida (信抢红包):https://www.freebuf.com/company-information/180480.html APP逆向神器之Frida【Android初级篇】:https://www.jianshu.com/p/2d755beb1c54 frida 官网文档:https://fr.. 阅读详情
#!/usr/bin/env python
# -*- coding: utf-8 -*-

#By:AloneMonkey

import sys
import frida
import codecs
import threading
import time
import re

reload(sys)
sys.setdefaultencoding('utf-8')

global session
global UIMESSAGE
global APPINFO
global appname
global appdoc
global appurl

finished = threading.Event()

APP_JS = './js/app.js'
UI_JS = './js/ui.js'
HOOK_JS = './js/hook.js'

#系统标准输出,支持grep
def outWrite(text):
    sys.stdout.write(text.encode('utf8') + '\n');

#带颜色打印输出
def colorPrint(color, s):
    return "%s[31;%dm%s%s[0m" % (chr(27), color, s , chr(27))

#获取第一个USB连接的设备
def get_usb_iphone():
    dManager = frida.get_device_manager();
    changed = threading.Event()
    def on_changed():
        changed.set()
    dManager.on('changed',on_changed)

    device = None
    while device is None:
        devices = [dev for dev in dManager.enumerate_devices() if dev.type =='tether']
        if len(devices) == 0:
            print 'Waiting for usb device...'
            changed.wait()
        else:
            device = devices[0]

    dManager.off('changed',on_changed)

    return device

#枚举运行进程信息
def listRunningProcess():
    device = get_usb_iphone();
    processes = device.enumerate_processes();
    processes.sort(key = lambda item : item.pid)
    outWrite('%-10s\t%s' % ('pid', 'name'))
    for process in processes:
        outWrite('%-10s\t%s' % (str(process.pid),process.name))

#枚举某个进程的所有模块信息
def listModulesoOfProcess(session):
    moduels = session.enumerate_modules()
    moduels.sort(key = lambda item : item.base_address)
    for module in moduels:
        outWrite('%-40s\t%-10s\t%-10s\t%s' % (module.name, hex(module.base_address), hex(module.size), module.path))
    session.detach()

#从JS接受信息
def on_message(message, data):
    if message.has_key('payload'):
        payload = message['payload']
        if isinstance(payload, dict):
            deal_message(payload)
        else:
            print payload

#处理JS中不同的信息
def deal_message(payload):
    global UIMESSAGE
    global APPINFO
    global appname
    global appdoc
    global appurl
    appdoc=''
    appurl=''
    k=0
    #基本信息输出
    if payload.has_key('mes'):
        print payload['mes']

    #安装app信息 |grep "Snapchat"
    if payload.has_key('app'):
        app = payload['app']
        APPINFO=payload['app']
        lines = app.split('\n')
        for line in lines:
            if len(line):
                arr = line.split('\t')
                if len(arr) == 3:
                    outWrite('%-40s\t%-70s\t%-80s' % (arr[0], arr[1], arr[2]))
                    if appname==arr[0]:
                        if k==0:
                            appdoc=arr[2]
                            k=1
                        else:
                            appurl=arr[2]
                            k=0
        if appurl!='':
            xs=''
            print appurl
            result = re.findall(".*file://(.*)>.*",appurl)
            for x in result:
                xs=xs+x
                #print x
            print xs
            appdoc=''
            appurl=''

    #处理UI界面输出
    if payload.has_key('ui'):
        print colorPrint(31, payload['ui'])
        UIMESSAGE=UIMESSAGE+payload['ui']

    #处理完成事件
    if payload.has_key('finished'):
        finished.set()

#加载JS文件脚本
def loadJsFile(session, filename):
    source = ''
    with codecs.open(filename, 'r', 'utf-8') as f:
        source = source + f.read()
    script = session.create_script(source)
    script.on('message', on_message)
    #接收js脚本的消息
    script.load()
    return script

def main():
    global session
    global appname
    global UIMESSAGE
    UIMESSAGE=''

    # 1. 获取USB设备
    device = get_usb_iphone()
    if len(sys.argv)>2:
        appname=sys.argv[2]
    else:
        appname=u'有料短视频'
    print '设备信息:' + str(device)
    if sys.argv[1]=='ps':
        # 2. 枚举运行进程信息
        print 'ps'
        listRunningProcess()
    elif sys.argv[1]=='appinfo':
        # 3. 枚举安装应用程序信息 |grep Snapchat
        print 'appdoc'
        session = device.attach(u'SpringBoard')
        script = loadJsFile(session, APP_JS)
        script.post({'cmd' : 'docinstalled'})
        finished.wait() 
    elif sys.argv[1]=='mod':
        # 4. 枚举某个进程加载的模块信息
        print 'mod'
        session = device.attach(appname)
        listModulesoOfProcess(session)
    elif sys.argv[1]=='ui':
        # 5. 显示界面UI
        #之后n 0xoooooooo(某个地址),输出某个地址的响应链
        print 'ui'
        session = device.attach(appname)
        script = loadJsFile(session, UI_JS)
        #我们把消息输出到文本中
        time.sleep(3)
        file_object=open('uimess.txt','w+')
        try:
            #all_the_text = file_object.read()
            file_object.write(UIMESSAGE)
        finally:
            file_object.close()
        while True:
            line = sys.stdin.readline()
            if not line:
                break
            script.post(line[:-1])#向js发命令
    elif sys.argv[1]=='hook':
        # 6. 动态Hook
        print 'hook'
        session = device.attach(appname)
        script = loadJsFile(session, HOOK_JS)
        sys.stdin.read()

    # 2. 枚举运行进程信息
    #listRunningProcess()

    # 3. 枚举安装应用程序信息
    #session = device.attach(u'SpringBoard')
    #script = loadJsFile(session, APP_JS)
    #script.post({'cmd' : 'installed'})
    #finished.wait()

    # 4. 枚举某个进程加载的模块信息
    #session = device.attach(u'Snapchat')
    #listModulesoOfProcess(session)

    # 5. 显示界面UI
    #session = device.attach(u'Snapchat')
    #script = loadJsFile(session, UI_JS)
    #while True:
    #   line = sys.stdin.readline()
    #   if not line:
    #       break
    #   script.post(line[:-1])

    # 6. 动态Hook
    #session = device.attach(u'Snapchat')
    #script = loadJsFile(session, HOOK_JS)
    #sys.stdin.read()

if __name__ == '__main__':
    try:
        main()
    except KeyboardInterrupt:
        if session:
            session.detach()
        sys.exit()
    else:
        pass
    finally:
        pass
ios逆向越狱手机必备工具篇 1.手机越狱 ps:越狱前用xcode调试手机断点一次。这样手机里就会生成以后debugServer文件。 手机版本ios12.4 https://www.abcydia.com/read-16031.html 越狱官方 https://unc0ver.dev gitHub https://github.com/pwn20wndstuff/Undecimus/ 我这里使用的3.5... 阅读详情

相关推荐

iOS应用脱壳实战:使用Frida-iOS-Dump解密微信美团等App

在iOS应用安全分析与逆向工程领域,应用加密与解密是核心技术环节。苹果的FairPlay DRM加密机制会在应用分发时对二进制文件进行保护,使得从App Store下载的应用无法直接进行静态分析。其原理是通过设备密钥在运行时动态解密内存中的代码段,而脱壳技术正是要获取这个解密后的内存镜像。这项技术的价值在于为安全研究、漏洞挖掘和架构学习提供了基础,广泛应用于移动安全审计、恶意代码分析和应用逻辑研究等场景。本文聚焦于Frida-iOS-Dump工具,它利用Frida动态插桩框架实现内存抓取,通过注入JavaS

weixin_29323273的博客 319

Frida—HOOK 学习笔记2

frida

天在等我,菜鸟想飞 4040

Unity手游逆向分析实战:从IL2CPP到Frida Hook的完整路径

逆向工程是理解软件内部工作原理、进行安全评估和漏洞分析的关键技术。其核心原理在于通过静态与动态分析,解析程序的代码逻辑、内存结构和数据流。在移动安全领域,这项技术对于评估应用安全性、研究防护机制具有重要价值,尤其在游戏、金融等高价值应用中。Unity引擎作为跨平台游戏开发的主流选择,其采用的IL2CPP脚本后端将C#代码编译为原生库,提升了性能,但也带来了新的逆向挑战。通过结合Il2CppDumper等工具恢复符号信息,并利用Frida进行动态Hook,可以有效地分析游戏逻辑,例如实现内存修改或协议分析。本

454

使用frida工具对Android应用进行Hook

Frida hook Android Java函数 Frida 环境搭建介绍 1、首先需要去github下载frida server文件,下载链接如下https://github.com/frida/frida/releases,根据Android手机不同的CPU架构选择合适的frida-server文件 2、通过adb push 命令将下载好的frida-server文件传到手机设备中,设置frida-server文件的执行权限 3、电脑安装python pip 4、使用pip安装frida (pip i

heppyshow_myself的博客 1241

U3D游戏《东方新世界》Il2Cpp破解详细教程

U3D游戏《东方新世界》Il2Cpp破解详细教程U3D游戏《东方新世界》Il2Cpp破解详细教程

SLAM算法的优缺点

SLAM(Simultaneous Localization and Mapping,同时定位与地图构建)算法是一种通过传感器数据实时估计机器人自身位置和构建环境地图的技术。

selenia8860的博客 2906

Frida-跨平台注入工具基础篇

http://drops.wooyun.org/tools/5602 0x00 功能介绍 官方主页 github Inject JavaScript to explore native apps on Windows, Mac, Linux, iOS and Android. Hooking Functions Modifying Function Argume...

dawuafang 690

计算机模拟爆破过程,基于LSDYNA岩石爆破模拟建模分析

原标题:基于LSDYNA岩石爆破模拟建模分析 Ls Dyna岩石爆破模拟仿真作者:dyna_focus擅长领域:dyna/abaqus/hypermesh一、 数值模型的建立1.1 单元及算法的选择岩石,炸药,空气都采用solid164实体单元。岩石采用常应力实体单元,该种单元属于纯粹的lagrange算法,该种算法单元网格附着在材料上,随着材料的流动而产生单元网格的变形,但是在结构变形巨大时,有...

weixin_29494379的博客 7316

Frida API使用(3)

在这里对其中的一部分API进行了介绍,这篇文章继续介绍后面的内容。 通过这部分的介绍,可以发现通过Frida操纵内存、查看模块等信息是如此的简单。操作内存,最重要的自然就是打补丁了,邪恶的微笑。 Module对象 Module.load(path): loads the specified module from the filesystem path and returns a Module object. Throws an exception if the specified module cann.

helloworlddm的博客 2142

数字IC后端手把手实战教程 | Innovus verify_drc VIA1 DRC Violation解析及脚本自动化修复方案

数字IC后端实战项目案例之Innovus verify_drc DRC Violation脚本自动化修复方案

weixin_37584728的博客 4049

手把手教你用STM32的SPI驱动MCP2517FD实现CAN FD通信(附完整代码)

本文详细介绍了如何使用STM32通过SPI驱动MCP2517FD实现CAN FD通信,涵盖硬件连接、SPI驱动编写、寄存器配置及数据收发实战。提供完整代码示例和常见问题排查指南,帮助开发者快速构建高可靠性的CAN FD通信系统,适用于汽车电子和工业控制等领域。

weixin_30607029的博客 675

【iOS逆向与安全】frida-trace入门

frida-trace是一个用于动态跟踪函数调用的工具。支持android和ios。安装教程请参考官网。工欲善其事必先利其器。本文将以某App为示范,演示frida-trace的各种方法在iOS中的应用。

小陈的技术博客 3369

WGCNA分析中那些没人告诉你的坑:以肺结核差异基因模块筛选为例

本文深入探讨WGCNA分析在肺结核差异基因模块筛选中的七个关键陷阱,包括soft-thresholding选取、样本离群值检测、模块合并阈值调整等。通过实际案例和R代码示例,揭示生信数据挖掘中常被忽视的技术细节,帮助研究者避免常见错误,提升分析结果的可靠性和生物学意义。

weixin_29218509的博客 261

精品连载丨安卓 App 逆向课程之二逆向神器 frida 的介绍

“ 阅读本文大概需要 8 分钟。 ”前面我们介绍了精品连载丨安卓 App 逆向课程一之环境配置,下面我们来接着介绍一个安卓 App 逆向大杀器—— frida。前阵子受《Xposed模块...

静觅 2435

技术面 - 手撕算法题整理

这篇博客整理了华为OD面试中涉及的算法题,包括LeetCode热门题目、OD原题和需要手写的算法,如二分查找、冒泡排序等。建议优先刷"hot100"的LeetCode题目,全刷OD原题,以及掌握手撕算法的基本原理。

m0_73659489的博客 1025

OceanSim: 基于Isaac Sim GPU 加速水下机器人感知仿真框架

OceanSim 采用先进的基于物理的渲染技术,对水下视觉和声学传感器进行精确建模。与其他模拟引擎相比,OceanSim 的渲染速度要快得多。作为 NVIDIA Issac Sim 的扩展,OceanSim 采用了多功能设计。通过融入快速发展的 NVIDIA Omniverse 生态系统,我们的模拟器自然而然地在机器人学习和水下机器人技术之间架起了一座桥梁,从而促进了水下应用中体现型人工智能技术的开发和部署。OceanSim 将以开放源码的方式提供,使研究界能够以合作的模式作出贡献。

机器人控制与仿真应用 2051

APP逆向神器之Frida【Android初级篇】

说到逆向APP,很多人首先想到的都是反编译,但是单看反编译出来的代码很难得知某个函数在被调用时所传入的参数和它返回的值,极大地增加了逆向时的复杂度,有没有什么办法可以方便...

muzico425的博客 1731

【2026华为OD新规机考】最新套题持续更新【完全原创题解 | 详细考点分类 | 不断更新题目 | 六种主流语言Py+Java+Cpp+C+Js+Go】

可上练习华子OD、大厂真题绿色聊天软件戳od1441了解算法冲刺训练(备注【优快云】否则不通过)

weixin_48157259的博客 507

【iOS逆向与安全】iOS插件开发光速入门

经过之前的学习,相信你已经能熟练的使用Frida-trace、IDA Pro等逆向工具。不过,仅仅到这肯定是不够的。接下来,学会把你逆向的结果打包成插件并运行,那iOS逆向,你也就真正的入门了。

小陈的技术博客 4218

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

下载得物app显示与此设备cpu不兼容该怎么办_APP逆向神器之Frida【Android初级篇】...

说到逆向APP,很多人首先想到的都是反编译,但是单看反编译出来的代码很难得知某个函数在被调用时所传入的参数和它返回的值,极大地增加了逆向时的复杂度,有没有什么办法可以方便地知道被传入的参数和返回值呢?答案是有的,这个方法就是Hook,Hook的原理简单地说就是用一个新的函数替代掉原来的函数,在这个新的函数中你想做什么都可以,为所欲为。本文中的Frida就是一个很常用的Hook工具,只需要...

weixin_39915078的博客 3490

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

安卓逆向神器- frida(1)简介

简介: 随着技术的更新换代, 反爬是层出不穷, 三年前一个ip可以爬某宝的几百万的数据不会被封, 其他除了一些ip限制,和一些js的加解密几乎没有,随着移动端的兴起,数据已经倾斜到app端, 风控也是层出不穷, 各种加密解密,看着眼花缭乱,让人不知如何下手。     首先声明: 此次分享只为学习交流使用,切勿用于其他非法用途,关键代码均打码   Frida: 虽说反爬严重了,但是活还的干不是, 但是app破解难度很大, 群控吧效率还比较低,而且不可控, 那么frida就

qq_38219875的博客 5452

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

安卓逆向_24( 一 ) --- Hook 框架 frida( Hook Java层 和 so层) )

From:Hook 神器家族的 Frida 工具使用详解:https://blog.csdn.net/FlyPigYe/article/details/90258758 详解 Hook 框架 frida ( 信抢红包 ):https://www.freebuf.com/company-information/180480.html APP逆向神器之F...

墨鱼菜鸡 6779

android 怎么调用js项目_APP逆向神器之Frida【Android初级篇】

说到逆向APP,很多人首先想到的都是反编译,但是单看反编译出来的代码很难得知某个函数在被调用时所传入的参数和它返回的值,极大地增加了逆向时的复杂度,有没有什么办法可以方便地知道被传入的参数和返回值呢?答案是有的,这个方法就是Hook,Hook的原理简单地说就是用一个新的函数替代掉原来的函数,在这个新的函数中你想做什么都可以,为所欲为。本文中的Frida就是一个很常用的Hook工具,只需要...

weixin_39595621的博客 644

Frida安卓逆向实战:从环境搭建到Java/Native层Hook

动态代码插桩技术是现代软件安全分析与逆向工程的核心手段之一,它允许在程序运行时注入自定义代码,实现对函数调用、数据流和程序逻辑的动态监控与修改。其原理是通过向目标进程注入代理,拦截并重定向特定的函数执行流程,从而在不修改原始二进制文件的情况下,实时观察和干预程序行为。这项技术的核心价值在于为安全研究人员、开发者和逆向工程师提供了强大的动态分析能力,能够深入理解闭源软件的运行机制、发现潜在漏洞、分析加密算法或调试复杂问题。在移动安全领域,特别是安卓应用逆向分析中,动态插桩技术被广泛应用于协议分析、算法还原、漏

weixin_33783283的博客 772

深入解析frida-ios-dump:基于Frida动态插桩的iOS应用内存脱壳原理与实践

动态插桩技术通过在目标进程运行时注入代码,实现对程序行为的监控与修改,是软件逆向与安全分析的核心手段。其原理基于进程注入、远程通信和脚本执行,通过Hook关键函数或读取内存数据,为安全研究、漏洞挖掘和软件调试提供强大支持。在iOS逆向工程中,这项技术常被用于应用脱壳,即从内存中提取已解密的可执行文件。以frida-ios-dump工具为例,它利用Frida的动态插桩能力,结合对Mach-O文件格式和ASLR机制的深入理解,精准定位并提取内存中的解密镜像,有效应对App Store应用的加密保护。掌握这一过程

weixin_27722377的博客 337
上一篇: iOS多线程GCD之队列和任务详解(实例代码验证篇)
下一篇: x86rop调试记录linux
inquisiter
博客等级 码龄10年 374粉丝 228原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值