当前位置: 首页 > news >正文

【001】frida API分类 总览

1.java曾API(Android专用)

 用于操作Java类、方法和字段,适用于Android应用的动态分析。

Java.perform(fn):确保在Java JVM初始化后执行毁掉函数

Java.use(className):获取指定Java类的引用

Java.choose(className,callbacks);枚举堆中所有指定类的实例。

Java.enumerateLoadedClasses():列出所有已加载的Java类。

Java.enumerateClassLoaders();列出所有的类加载器

Java.openClassFile(path):加载指定路径的DEX文件

Java.registerCalss(spec): 动态注册一个新的java类

2.Native层API(跨平台)

用于操作本地函数、内存和模块,适用于所有支持的操作系统。

2.1 Interceptor模块(函数Hook)

        Interceptor.attach()

        Interceptor.replace(address,replacement): 替换指定地址的函数实现

        Interceptor.detacheAll():移除所有已附加的钩子。

2.2NativeFunction/NattiveCallback

        new NativeFunction(address,returnType,argTypes):创建一个指向本地函数的JavaScript包装器

        new NativeCallback(fn,returnType,argTypes):将JavaScript函数转换为本地回调函数。

2.3 Memory模块(内存操作)

        Memory.readUtf8String(ptr)/ Memory.writeUtf8String(ptr,str):读取/写入UTF-8字符串

        Memory.readByteArray(ptr,length):        

        Memory.alloc(size): 在目标进程中分配指定大小的内存。

        Memory.allocUtf8String(str) 分配内存并写入UTF-8字符串

        Memory.scan(address,size,pattern,callbacks):扫描内存以查找匹配的模式。

        Memory.scanSync(address,size,pattern):同步扫描内存以查找匹配的模式。

 2.4 Module模块 (模块操作)        

        Module.findBaseAddress(name):获取指定模块的基地址。

        Module.findExportByName(module,exportName): 获取模块中导出函数的地址。

        Module.enumerateExports(name):列出模块的所有导出符号

        Module.enumerateImports(name):列出模块的所有导入符号

        Module.load(path);加载指定路径的模块

   2.5 Process 模块(进程信息)

         Process.enumerateModules():列出当前进程加载的所有模块。

        Process.enumerateThreads():列出当前进程的所有线程。

        Process.getCurrentThreadId():获取当前线程的ID

  3. Object-C. API (IOS/MacOS专用)

         用于操作Object-C 类和方法,使用于ios 和Macos应用的动态分析。

        ObjC.classes:访问所有已注册的Object-C类。

        ObjC.classes.ClassName: 获取指定的Objective-C类

        ObjC.classes.ClassName("- methodName"):获取实力方法的实现

        ObjC.classes.ClassName("+methodName")获取类方法的实现

        ObjC.registerClass(spec):动态注册一个新的Objective-C类。

        ObjC.enumerateLoadedClasses():列出所有已加载的Objective-C类。

        4.辅助工具API

         提供调试,数据处理和其他辅助功能。

        hexdump(ptr,options):以十六进制格式打印内存内容

        Thread.backtrace(context,Backtracer.ACCURATE):获取当前线程的调用堆栈

        Stalker.follow(threadId,options):跟踪指定线程的执行路径。

        recv(callback) / send(data):用于与主机进行消息通信。

         5.Frida CLI/Python /Node.js API 

                用于与Firda的命令行工具和脚本进行交互。

                 frida.get_usb_device():获取链接的USB设备

                device.attach(pid_or_name):附加到指定的进程。

                device.spawn(name)/ device.resume(pid)

                session.create_script(js_code):创建一个新的脚本

                script.load()/script.unload():加载或卸载脚本

           6.高级功能A PI

                用于实现更复杂的功能,如动态类注册和内存扫描

                NavtivePointer(address):创建一个指向指定地址的指针对象。

                NativeFunction(address,returnTYpe,argType):创建一个本地函数的包装器

                NativeCasllback(fn,returnTYpe,argTYpes):将JavaScript函数转换为本地回调。

                Memory.scan(addres,size,pattern,callbacks):扫描内存以查找匹配的模式。

                

http://www.lqws.cn/news/188965.html

相关文章:

  • css元素的after制作斜向的删除线
  • 飞云智能波段主图+多空短线决策副图指标,组合操盘技术图文解说
  • SpringCloud学习笔记-2
  • 【Elasticsearch】映射:Nested 类型
  • day46python打卡
  • 【Linux】虚拟机代理,自动化脚本修改~/.bashrc
  • vue3子组件获取并修改父组件的值
  • 【计算机网络】非阻塞IO——poll实现多路转接
  • 【佳易王个体诊所电子处方软件】助力智慧诊疗! #医疗数字化 #电子处方效率提升
  • 【 知你所想 】基于ernie-x1-turbo推理模型实现趣味猜心游戏
  • QT自定义资源管理器
  • 使用UDP连接ssh
  • maven私服
  • vanna+deepseek+chainlit 实现自然语言转SQL的精度调优
  • Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
  • MySQL 性能调优入门 - 慢查询分析与索引优化基础
  • 行业案例 | ASOS 借助 Azure AI Foundry(国际版)为年轻时尚爱好者打造惊喜体验
  • [electron]预脚本不显示内联script
  • AIGC 基础篇 Python基础 01
  • [特殊字符]解决 “IDEA 登录失败。不支持早于 14.0 的 GitLab 版本” 问题的几种方法
  • Halcon透视矩阵
  • 深入了解JavaScript当中如何确定值的类型
  • 经典文献阅读之--PIVOT-R(原始驱动的航点感知世界模型用于机器人操作)
  • 蓝桥春晚魔术(欧拉定理+快速幂)
  • 今日行情明日机会——20250606
  • 车牌识别技术解决方案
  • 大模型在脑梗塞后遗症风险预测及治疗方案制定中的应用研究
  • 使用VTK还是OpenGL集成到qt程序里哪个好?
  • 电脑桌面太单调,用Python写一个桌面小宠物应用。
  • 计算机视觉与深度学习 | 基于MATLAB的相机标定