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

14.安卓逆向-frida基础-编写hook脚本2

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

内容参考于:图灵Python学院

本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要盲目相信。

工具下载:

链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3

提取码:6tw3

复制这段内容后打开百度网盘手机App,操作更方便哦

上一个内容:13.安卓逆向-frida基础-编写hook脚本1

接着上一个内容继续,接下来是HOOK构造方法

如下图红框,它有两个构造方法

app中调用构造方法的位置

脚本代码

function demo4(){// HOOK构造方法var money = Java.use("com.luoge.com.Money")money.$init.overload("java.lang.String","int").implementation = function(str, ii){// 重写构造方法console.log(str, ii) // 查看原本参数的值str = "飞机"// 修改参数ii = 22222// 修改参数this.$init(str,ii) // 调用原本的构造方法}}

效果图:

主动调用

效果图:

function demo5(){var res = Java.use("com.luoge.com.Money").$new("xxx",23313).getInfo()console.log("主动调用", res)
}

第二种主动调用

function demo5(){var res = Java.use("com.luoge.com.Money").$new("xxx",23313).getInfo()console.log("主动调用", res)Java.choose("com.luoge.com.Money", {onMatch:function(obj){ // 这里每找到一个Money对象就会调用一次console.log('Java.choose', obj.getInfo())},onComplete:function(){console.log('Money对象搜索完执行的代码')}})
}

HOOK字段

字段就是下图红框里的东西

HOOK静态的字段

function demo6(){var money = Java.use("com.luoge.com.Money")console.log("flag类型", JSON.stringify(money.flag));console.log("flag的值", money.flag.value);money.flag.value = "mmmm"console.log("flag修改之后的值", money.flag.value);
}

HOOK非静态的字段

function demo6(){var money = Java.use("com.luoge.com.Money")
// console.log("flag类型", JSON.stringify(money.flag));
// console.log("flag的值", money.flag.value);
// money.flag.value = "mmmm"
//  console.log("flag修改之后的值", money.flag.value);Java.choose("com.luoge.com.Money", {onMatch:function(obj){ // 这里每找到一个Money对象就会调用一次console.log('Java.choose非静态变量(字段)', obj._name.value)obj._name.value = '张飞'console.log('Java.choose修改之后非静态变量(字段)', obj._name.value)},onComplete:function(){console.log('Money对象搜索完执行的代码')}})}

HOOK内部类

下图红框的就是内部类

效果图:

function demo7(){var innerClass = Java.use("com.luoge.com.Money$innerClass")// 内部类的对象使用$符号加类名获取innerClass.$init.overload("java.lang.String","int").implementation = function(s,i){console.log('demo7s', s);console.log('demo7i', i);this.$init(s,i);console.log(this.outPrint())}
}

获取全部类和方法

function demo8(){console.log(Java.enumerateLoadedClassesSync().join('\n'))
}

获取指定类的普通方法

function demo8(){
//    console.log(Java.enumerateLoadedClassesSync().join('\n'))var utils = Java.use("com.luoge.com.Utils")var methods = utils.class.getDeclaredMethods()for(var i = 0; i < methods.length; i++){console.log(methods[i].getName());}
}

获取指定类的构造方法

function demo8(){
//    console.log(Java.enumerateLoadedClassesSync().join('\n'))console.log('普通方法')var utils = Java.use("com.luoge.com.Utils")var methods = utils.class.getDeclaredMethods()for(var i = 0; i < methods.length; i++){console.log(methods[i].getName());}console.log('构造方法')var money = Java.use("com.luoge.com.Money")methods = money.class.getDeclaredConstructors()for(var i = 0; i < methods.length; i++){console.log(methods[i].toString());console.log(methods[i].getName());}}

获取指定类的字段

获取指定类的内部类

function demo8(){
//    console.log(Java.enumerateLoadedClassesSync().join('\n'))console.log('普通方法\n')var utils = Java.use("com.luoge.com.Utils")var methods = utils.class.getDeclaredMethods()for(var i = 0; i < methods.length; i++){console.log(methods[i].getName());}console.log('构造方法\n')var money = Java.use("com.luoge.com.Money")methods = money.class.getDeclaredConstructors()for(var i = 0; i < methods.length; i++){console.log(methods[i].toString());console.log(methods[i].getName());}console.log('字段\n')var field = money.class.getDeclaredFields()for(var i = 0; i < field.length; i++){console.log(field[i].toString())console.log(field[i].getName())}console.log('内部类\n')var c = money.class.getDeclaredClasses()for(var i = 0; i < c.length; i++){console.log(c[i].toString())console.log(c[i].getName())}}

安装 @types/frida-gum 插件,可以自动补齐Frida代码


img

相关文章:

14.安卓逆向-frida基础-编写hook脚本2

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;图灵Python学院 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要盲目相信。 工…...

车辆零部件检测和分割数据集-车体数据集-yolo格式-yolov5-yolov10可用

这些标签是用于实例分割任务中的类别&#xff0c;通常在汽车图像识别或自动驾驶技术中使用。以下是这些类别&#xff1a; back_bumper - 后保险杠back_glass - 后挡风玻璃back_left_door - 后左车门back_left_light - 后左灯back_right_door - 后右车门back_right_light - 后右…...

甄选范文“论分布式存储系统架构设计”,软考高级论文,系统架构设计师论文

论文真题 分布式存储系统(Distributed Storage System)通常将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式存储系统采用可扩展的…...

第十四章:html和css做一个心在跳动,为你而动的表白动画

💖 让心跳加速,传递爱意 💖 在这个特别的时刻,让爱在跳动中绽放!🌟 无论是初次相遇的心动,还是陪伴多年的默契,我们的心总在为彼此跳动。就像这颗炙热的爱心,随着每一次的跳动,传递着满满的温暖与期待。 在这个浪漫的季节,让我们一同感受爱的律动!无论你是在…...

poetry安装

文章目录 前言1. 为什么pip install poetry 会造成依赖冲突1.1 全局环境依赖混淆&#xff1a;1.2 工具和项目之间的冲突&#xff1a;1.3 缺乏依赖隔离&#xff1a;1.4 多出很多额外依赖&#xff1a; 2. 不推荐pipx安装3. poetry高级安装3.1 默认安装路径3.2自定义安装 4. 安装p…...

Proteus如何添加数码管

1、打开安装好的Proteus&#xff0c;点击上方菜单栏中的“库”&#xff0c;再选择“从库选取零件”&#xff0c;或者在左侧元件列表中单击鼠标右键&#xff0c;再点击右键菜单中的“从库中挑选”选项。 2、之后在元器件库中&#xff0c;点击类别中的“Optoelectronics”&#…...

5 apache poi实现excel的动态下拉框功能

excel下拉框 RequestMapping("xiala")public void xiala(HttpServletResponse response){String fileName "僵尸表";try{response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.setCharact…...

深度对比:etcd、Consul、Zookeeper 和 Nacos 作为注册中心和配置中心的优势与劣势

在现代分布式系统和微服务架构中&#xff0c;服务注册中心 和 配置中心 是系统稳定运行的关键组成部分。服务注册中心负责服务的动态注册与发现&#xff0c;而配置中心用于集中管理配置&#xff0c;确保系统在变化的环境中保持一致性。本文将对比 etcd、Consul、Zookeeper 和 N…...

Android webview拦截H5的接口请求并返回处理好的数据

Android webview拦截H5的接口请求并返回处理好的数据 Android 可以通过 WebView 的 shouldInterceptRequest 方法拦截到 H5 中的网络请求。这是一个 WebViewClient 中的回调方法&#xff0c;允许开发者在 WebView 发起网络请求时对其进行处理和修改。 具体使用方法如下&#…...

vue echarts tooltip使用动态模板

先上代码 tooltip: {// 这里是车辆iconshow: true,// trigger: "item",// backgroundColor: "transparent",appendToBody: true,textStyle: {color: "#ffffff" //设置文字颜色},formatter: (params) > {return formatHtml(params.data)},}, …...

網路本地連接沒有有效的IP配置:原因與解決方法

網路本地連接顯示“沒有有效的IP配置”。這通常意味著你的電腦無法從路由器或其他網路設備獲取有效的IP地址&#xff0c;從而導致無法上網。本文將從原因和解決方法兩個方面&#xff0c;詳細解析這個問題。 一、問題的原因 路由器或數據機問題&#xff1a; 路由器或數據機出…...

如何使用ssm实现基于web的学生就业管理系统的设计与实现+vue

TOC ssm726基于web的学生就业管理系统的设计与实现vue 第1章 绪论 1.1 课题背景 二十一世纪互联网的出现&#xff0c;改变了几千年以来人们的生活&#xff0c;不仅仅是生活物资的丰富&#xff0c;还有精神层次的丰富。在互联网诞生之前&#xff0c;地域位置往往是人们思想上…...

TCP三次握手四次挥手详解

TCP三次握手建立连接的过程&#xff1a; 一次握手&#xff1a;客户端发送带有 SYN&#xff08;seqx&#xff09;标志的数据包到服务端&#xff0c;然后客户端进入 SYN_SEND 状态&#xff0c;等待服务端的确认。二次握手&#xff1a;服务端收到 SYN 包后&#xff0c;发送带有 S…...

了解 如何使用同快充充电器给不同设备快速充电

在这科技发展迅速的时代&#xff0c;快充技术已经走进了我们生活&#xff0c;不得不说有了快充技术的对比&#xff0c;传统的充电模式已经满足不了人们对充电速度的要求。就比如用华为输出100 W快充充电器为手机充电大概需要23分钟充满100%电量&#xff0c;而传统的充电器则需要…...

AGI interior designer丨OPENAIGC开发者大赛高校组AI创作力奖

在第二届拯救者杯OPENAIGC开发者大赛中&#xff0c;涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到&#xff0c;我们特意开设了优秀作品报道专栏&#xff0c;旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者&#xff0c;希望能带给…...

Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!

&#x1f9f8;本篇博客重在讲解Centos安装docker&#xff0c;经博主多次在不同服务器上测试&#xff0c;极其的稳定&#xff0c;尤其是阿里的服务器&#xff0c;一路复制命令畅通无阻 &#x1f4dc;后续会退出ububtu安装docker教程&#xff0c;敬请期待 &#x1f4dc;作者首页&…...

QT day01

自定义实现登录界面&#xff1a; #include "widget.h" #include "ui_widget.h" #include<QPushButton> #include<QLineEdit> #include<QLabel>Widget::Widget(QWidget *parent) //定义有参构造函数: QWidget(parent), ui(new Ui::Widge…...

如何从飞机、电报中提取数据

电报&#xff0c;通常简称TG&#xff0c;是一个跨平台的即时通讯软件。客户端是开源的&#xff0c;而服务器是专有的。用户可以交换加密的、自毁的信息&#xff08;类似于“阅读后烧伤”&#xff09;&#xff0c;并共享各种文件&#xff0c;包括照片和视频。它的安全性很高&…...

【算法篇】二叉树类(2)(笔记)

目录 一、Leetcode 题目 1. 左叶子之和 &#xff08;1&#xff09;迭代法 &#xff08;2&#xff09;递归法 2. 找树左下角的值 &#xff08;1&#xff09;广度优先算法 &#xff08;2&#xff09;递归法 3. 路径总和 &#xff08;1&#xff09;递归法 &#xff08;2…...

Flask学习之项目搭建

一、项目基本结构 1、 exts.py 存在的目的&#xff1a;在Python中&#xff0c;如果两个或更多模块(文件)相互导入对方&#xff0c;就会形成导入循环。例如&#xff0c;模块A导入了模块B&#xff0c;同时模块B又导入了模块A&#xff0c;这就会导致导入循环。 比如在这个项目中…...

FastAdmin二次开发指南:如何基于这套开源CMS源码定制你的专属内容模型?

FastAdmin二次开发实战&#xff1a;从零构建自定义内容模型 在开源CMS领域&#xff0c;FastAdmin以其基于ThinkPHP的优雅架构和丰富的功能模块&#xff0c;成为众多开发者快速构建后台管理系统的首选。但真正体现其价值的&#xff0c;往往是在面对个性化业务需求时的二次开发能…...

基于NativeAOT的 OpenClaw.NET 深度刨析

&#xff1a;自主智能体架构的演进与原生运行时的瓶颈大型语言模型&#xff08;LLM&#xff09;的快速成熟引发了软件工程领域的底层范式转移。行业焦点已从基于静态提示词&#xff08;Prompt&#xff09;的问答系统&#xff0c;全面转向具备自主规划、工具调用与长程逻辑推理能…...

RPCS3完全攻略:从零开始打造你的PC端PS3游戏中心

RPCS3完全攻略&#xff1a;从零开始打造你的PC端PS3游戏中心 【免费下载链接】rpcs3 PS3 emulator/debugger 项目地址: https://gitcode.com/GitHub_Trending/rp/rpcs3 还在为无法重温经典PS3游戏而烦恼吗&#xff1f;想要在电脑上体验《最后生还者》、《神秘海域》等索…...

OpenClaw多模型切换:百川2-13B与Qwen在任务链中的混合调用策略

OpenClaw多模型切换&#xff1a;百川2-13B与Qwen在任务链中的混合调用策略 1. 为什么需要多模型混合调用&#xff1f; 去年冬天&#xff0c;当我第一次尝试用OpenClaw自动化处理周报时&#xff0c;发现一个有趣的现象&#xff1a;同一个模型在写作创意部分和代码生成环节的表…...

太原理工大学Web开发历年真题解析:期末复习必备指南(附最新试卷)

太原理工大学Web开发核心考点深度剖析与高效复习方法论 Web开发课程期末备考的战略视角 又到了期末季&#xff0c;作为太原理工大学计算机相关专业的学生&#xff0c;面对Web开发这门实践性极强的课程&#xff0c;你是否还在为如何高效复习而焦虑&#xff1f;不同于传统理论课…...

51单片机之按键控制RGB灯

51单片机之按键控制RGB灯描述&#xff1a;利用KEIL5编程&#xff0c;使AT89C52通过按键输入控制RGB灯显示不同颜色。硬件&#xff1a;电路仿真图&#xff08;未运行&#xff09;电路仿真图&#xff08;运行&#xff09;程序&#xff1a;主要是按键消抖&#xff0c;机械按键按下…...

Agent-S:重新定义人机协作的智能体框架技术解析

Agent-S&#xff1a;重新定义人机协作的智能体框架技术解析 【免费下载链接】Agent-S Agent S: an open agentic framework that uses computers like a human 项目地址: https://gitcode.com/GitHub_Trending/ag/Agent-S 在数字化转型加速的今天&#xff0c;人机协作的…...

YOLOv5实战:如何用Python手写IoU计算函数提升目标检测精度

YOLOv5实战&#xff1a;手写IoU计算函数提升目标检测精度的Python实现 在目标检测任务中&#xff0c;边界框的定位精度直接影响模型性能。IoU&#xff08;Intersection over Union&#xff09;作为衡量预测框与真实框重合度的核心指标&#xff0c;其计算准确性对模型优化至关重…...

告别“瞎测”:如何用Tessent ATPG生成高效测试向量(Pattern)提升芯片良率

芯片测试效率革命&#xff1a;Tessent ATPG实战指南与良率提升策略 在半导体行业&#xff0c;每一纳秒的测试时间缩减都可能转化为数百万美元的成本节约。当芯片设计进入7nm以下工艺节点时&#xff0c;制造缺陷导致的良率问题愈发突出&#xff0c;传统测试方法已无法满足现代芯…...

抖音直播数据抓取实战:零基础掌握直播间弹幕分析技术

抖音直播数据抓取实战&#xff1a;零基础掌握直播间弹幕分析技术 【免费下载链接】DouyinLiveWebFetcher 抖音直播间网页版的弹幕数据抓取&#xff08;2024最新版本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/do/DouyinLiveWebFetcher 想要获取抖音直播间的…...