Frida框架HOOK RegisterNatives函数
使用Frida框架HOOK RegisterNatives函数,获取动态注册的函数地址、名称、签名、class名称、所属的so文件名称、so文件加载基址、函数在so文件中的地址。
废话不多说,上代码:
运行命令:frida -U -f in.****** -l RegisterNatives.js
function hook_native(){var module_libart=Process.findModuleByName("libart.so");console.log("module_libart info:"+module_libart);var symbols=module_libart.enumerateSymbols();var addr_RegisterNatives=null;for(var i=0;i<symbols.length;i++){var name=symbols[i].name;if(name.indexOf("CheckJNI")==-1&&name.indexOf("JNI")>0){if(name.indexOf("RegisterNatives")>0){console.log("RegisterNatives:"+name+"\n"+"RegisterNatives_Address:"+symbols[i].address);addr_RegisterNatives=symbols[i].address;}}}if(addr_RegisterNatives){Interceptor.attach(addr_RegisterNatives,{onEnter:function(args){var java_class=Java.vm.tryGetEnv().getClassName(args[1]);var methods=args[2];var method_count=parseInt(args[3]);var module = Process.findModuleByAddress(methods.add(Process.pointerSize*3+Process.pointerSize).readPointer());var module_addr=0;if(module){console.log("===========module so name:"+module.name+"===========");//打印所属模块名称module_addr=Process.findModuleByName(module.name).base;console.log(module.name+" address is:"+module_addr);}else{console.log("===========cannot find so name===========");//打印所属模块名称}console.log("addr_RegisterNatives Java Class Name:"+java_class);console.log("addr_RegisterNatives Java Class method count:"+method_count);for(var i=0;i<method_count;i++){var method_name=methods.add(i*Process.pointerSize*3).readPointer().readCString();var method_sign=methods.add(i*Process.pointerSize*3+Process.pointerSize).readPointer().readCString();var method_addr=methods.add(i*Process.pointerSize*3+Process.pointerSize).readPointer();console.log("method name:"+method_name);//打印内存的函数console.log("method sign:"+method_sign);//打印函数签名console.log("method addr:"+method_addr);//打印函数地址if(module_addr>0){var file_method_addr=method_addr.sub(module_addr);console.log("method file addr is:"+file_method_addr)}}},onLeave:function(retval){}})}
}
function main(){hook_native();
}
setImmediate(main)
相关文章:
Frida框架HOOK RegisterNatives函数
使用Frida框架HOOK RegisterNatives函数,获取动态注册的函数地址、名称、签名、class名称、所属的so文件名称、so文件加载基址、函数在so文件中的地址。 废话不多说,上代码: 运行命令:frida -U -f in.****** -l RegisterNatives…...
[创业之路-189]:《华为战略管理法-DSTE实战体系》-2- 生存与发展的双重旋律:短期与长期、战术与战略的交响乐章
目录 生存与发展的双重旋律:短期与长期、战术与战略的交响乐章 一、生存:短期视角下的战术布局 二、发展:长期视角下的战略规划 三、短期与长期、战术与战略的融合与平衡 四、结语:在生存与发展的交响曲中奏响辉煌 生存与发展…...
TDengine 部署
TDengine是一款开源高性能的时序数据库,其部署过程可以根据不同的环境和需求进行灵活配置。以下将详细介绍TDengine的部署步骤,包括单节点部署和集群部署。 一、单节点部署 下载安装包: 访问TDengine的官方网站或GitHub仓库,下载…...
【前端】20种 Button 样式
20种 Button 样式 在前端开发中,Button 按钮的样式设计是提升用户交互体验的重要一环。以下是20种常见的Button样式,这些样式主要基于CSS实现,可以根据具体需求进行调整和组合。 1. 默认样式 CSS 样式:.button { background-co…...
机器人构建详解:售前售后服务客服机器人与广告生成机器人的微调数据处理方法
引言 大模型(如BERT、GPT等)在自然语言处理任务中展现了强大的能力,但为了使其更贴合特定应用场景,通常需要进行微调。本文将详细讲解如何为售前售后服务的客服机器人和广告生成机器人准备高质量的微调数据,并通过具体…...
mysql的执行计划分析和索引下推以及索引长度计算
1 执行计划介绍 执行计划(Execution Plan)是数据库查询优化的重要工具,用于展示数据库如何执行 SQL 查询的详细过程。它包含了查询操作的步骤、各个步骤的执行顺序、使用的索引、访问的表、连接方式、预计的成本等信息 可以显示SQL语句最终…...
C#中的string操作详解-截取、分割、连接、替换等
在C#中,string 类提供了许多用于操作字符串的方法,包括截取、分隔和连接等。以下是一些常用字符串操作的介绍和实例: 1. 截取字符串 Substring 方法 用于从字符串中截取子字符串。 语法: //从startIndex开始截取,…...
Redis Cluster 分片机制
Redis 集群是 Redis 提供的一种分布式实现,用于水平扩展数据存储能力。通过 Redis 集群,可以将数据分片存储在多个 Redis 节点上,同时提供高可用性和故障转移功能。 分片(Sharding): Redis 集群将数据划分…...
论文结论:GPTs and Hallucination Why do large language models hallucinate
GPTs and Hallucination 当一个主题有普遍共识,并且有大量语言可用于训练模型时,大模型的输出可以反映出该共识观点在没有足够关于主题的语言示例【晦涩/数据有限】,或者主题有争议,或是对主题没有明确共识的情况下,就…...
CSS在线格式化 - 加菲工具
CSS在线格式化 打开网站 加菲工具 选择“CSS在线格式化” 或者直接访问 https://www.orcc.online/tools/css 输入CSS代码,点击左上角的“格式化”按钮 得到格式化后的结果...
组件通信(父传子,子传父,跨组件通信)
组件(component)是vue.js最核心的功能,是可扩展的HTML元素。每个页面都是一个HTML。以.vue结尾的文件,都可以叫组件。 场景:将一个完整的项目,拆分成不同的功能模块。 注意:组件首字母要大写。 …...
JWT 令牌:原理、应用与安全考量
深入理解 JWT 令牌:原理、应用与安全考量 文章目录 深入理解 JWT 令牌:原理、应用与安全考量一、引言二、JWT 令牌与传统方式的区别(一)传统身份验证方式的特点与局限(二)JWT 令牌的优势 三、JWT 令牌的字段…...
YOLOv5+pyqt5+摄像头在特定条件下进行目标检测并采集原始数据
项目介绍 项目地址 GitHub - biabu0/Yolov5_D435i: 通过YOLOV5与pyqt5实现一个使用D435i深度摄像头采集特定需求与场景下的深度数据的小程序 通过YOLOV5对指定的区域进行检测,当检测到目标进入特定区域时,开始保存数据,摄像头采用D435i深度…...
12.6深度学习_模型优化和迁移_整体流程梳理
七、整体流程梳理 1. 引入使用的包 用到什么包,临时引入就可以,不用太担心。 import time import osimport numpy as np import pandas as pd import torch import torch.nn as nn import torch.optim as optim import torchvision import torchvisio…...
TCP 和 UDP 可以使用同一个端口吗
TCP 和 UDP 可以使用同一个端口吗 简单来说 可以使用同一个端口,关键在于它们属于不同的传输层协议,在内核中是两个完全独立的软件模块,各自维护独立的端口空间,虽然端口号相同,但通过协议类型可以确定是哪种协议。 …...
信而泰网络测试仪校准解决方案
一、影响仪表精度的因素 网络测试仪是用于对数据网络及其相关设备性能参数进行测试的仪表,可以模拟网络终端产生流量,进行网络性能测试,对网络状态进行实时监测,分析和统计。数字计量对于精准数据的网络测试仪来说是一剂强心针&a…...
Java 实现给pdf文件指定位置盖章功能
Java 实现给pdf文件指定位置盖章功能 开发中遇到一个需求, 需要给用户上传的的pdf文件, 指定位置上盖公章的功能, 经过调研和对比, 最终确定实现思路. 这里是使用pdf文件中的关键字进行章子的定位, 之所以这样考虑是因为如果直接写死坐标的话, 可能会出现因pdf大小, 缩放, 盖章…...
机器学习支持向量机(SVM)算法
一、引言 在当今数据驱动的时代,机器学习算法在各个领域发挥着至关重要的作用。支持向量机(Support Vector Machine,SVM)作为一种强大的监督学习算法,以其在分类和回归任务中的卓越性能而备受瞩目。SVM 具有良好的泛化…...
解决 MySQL 启动失败与大小写问题,重置数据库
技术文档:解决 MySQL 启动失败与大小写问题,重置数据库 1. 问题背景 在使用 MySQL 时,可能遇到以下问题: MySQL 启动失败,日志显示 “permission denied” 或 “Can’t create directory” 错误。MySQL 在修改配置文…...
计算生成报价单小程序系统开发方案
计算生成报价单小程序报价系统,是根据商品品牌、类型、型号、规格、芯数、特性、颜色、分类进行选择不同的参数进行生成报价单,要求报价单支持生成图片、pdf、excel表格。 计算生成报价单小程序系统的主要功能模块有: 1、在线生成报价单&…...
从MP3到微信语音:一份完整的Java音频格式转换工具链搭建指南(附FFmpeg与silk_v3_encoder配置)
Java音频处理实战:构建MP3到微信语音的高效转换工具链 引言 在即时通讯应用开发中,音频消息的处理一直是技术难点之一。特别是当我们需要将常见的MP3格式转换为微信、QQ等平台专用的SILK编码格式时,开发者往往需要跨越多个技术环节。本文将带…...
STM32G4基本定时器TIM6/TIM7入门:从CubeMX配置到1秒精准中断(附代码)
STM32G4基本定时器实战:用CubeMX配置TIM6实现精准秒闪LED 第一次拿到STM32G4开发板时,最让人兴奋的莫过于让板载LED按照自己的意愿闪烁。这看似简单的需求,却是理解微控制器定时器系统的绝佳切入点。本文将带您从零开始,通过STM32…...
UniApp项目实战:手把手教你集成百度离线人脸SDK实现App实名认证(含完整代码)
UniApp实战:百度离线人脸SDK集成全流程与避坑指南 移动应用开发中,实名认证功能已成为金融、社交、电商等领域的标配需求。对于使用UniApp框架的开发者而言,如何高效集成百度离线人脸SDK实现安全可靠的认证流程,是提升产品竞争力的…...
3种方案实现小米智能家居与Home Assistant无缝集成
3种方案实现小米智能家居与Home Assistant无缝集成 【免费下载链接】ha_xiaomi_home Xiaomi Home Integration for Home Assistant 项目地址: https://gitcode.com/GitHub_Trending/ha/ha_xiaomi_home 你是否遇到过智能家居设备品牌碎片化的困扰?是否希望用统…...
RTKLIB解算精度上不去?可能是这5个RTKNAVI选项你没调对(附参数优化建议)
RTKLIB解算精度优化实战:5个关键参数设置与场景化调优指南 当你已经能够熟练运行RTKNAVI完成基本定位解算,却发现动态RTK结果总在浮点解徘徊、固定率忽高忽低,或是基线稍长就精度骤降时,问题往往藏在那些容易被忽略的高级参数里。…...
ESP32-S3的AI新玩法:除了语音唤醒,还能用TensorFlow Lite Micro做哪些酷事?(环境音识别/振动监测实战)
ESP32-S3边缘智能实战:从环境音识别到工业振动监测的AI新范式 当一颗售价不到5美元的芯片能够听懂玻璃破碎声、预测电机故障,甚至识别婴儿啼哭时,物联网设备的"感知能力"正在被重新定义。ESP32-S3搭配TensorFlow Lite Micro&#x…...
避坑指南:OpenClaw对接nanobot镜像的3大常见错误与解决方法
避坑指南:OpenClaw对接nanobot镜像的3大常见错误与解决方法 1. 为什么需要这份避坑指南? 上周我在本地部署nanobot镜像时,原本以为半小时就能搞定的事情,硬是折腾了整整一个下午。这个超轻量级的OpenClaw镜像确实很吸引人——内…...
开源工具go-cursor-help:技术突破Cursor限制的效率提升方案
开源工具go-cursor-help:技术突破Cursor限制的效率提升方案 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Youve reached your trial request limit. / Too many free trial accounts used on this machine. Please upgrade to pro…...
广州SEO优化对网站转化有什么帮助_广州SEO优化应该注意哪些问题
<h2>广州SEO优化对网站转化有什么帮助</h2> <p>在当今数字化时代,广州SEO优化成为了企业提升在线业务的关键策略。广州作为中国南方的重要城市,其互联网市场竞争激烈,掌握有效的SEO优化手段对于提升网站转化率至关重要。广…...
如何快速改善论文写作的语言能力?
对于许多非英语母语的科研工作者而言,从实验数据到最终发表,横亘在中间的最大障碍往往不是创新性不足,而是语言表达上的“无力感”。每当完成一篇心血之作,面对屏幕上的文字,内心总充满了自我怀疑:这句话的…...
