【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):扫描内存以查找匹配的模式。

相关推荐
Gary Studio6 小时前
Android AIDL HAL工程结构示例
android
y = xⁿ6 小时前
MySQL八股知识合集
android·mysql·adb
andr_gale7 小时前
04_rc文件语法规则
android·framework·aosp
祖国的好青年8 小时前
VS Code 搭建 React Native 开发环境(Windows 实战指南)
android·windows·react native·react.js
黄林晴8 小时前
警惕!AGP 9.2 别只改版本号,R8 规则与构建链路全线收紧
android·gradle
小米渣的逆袭9 小时前
Android ADB 完全使用指南
android·adb
儿歌八万首9 小时前
Jetpack Compose Canvas 进阶:结合 animateFloatAsState 让自定义图形动起来
android·动画·compose
zhangphil10 小时前
Android Page 3 Flow读sql数据库媒体文件,Kotlin
android·kotlin
神探小白牙10 小时前
echarts,3d堆叠图
android·3d·echarts