JPDA框架和JDWP协议

news2024/10/3 4:30:31

前言

在逆向开发中,一般都需要对目标App进行代码注入。主流的代码注入工具是Frida,这个工具能稳定高效实现java代码hook和native代码hook,不过缺点是需要使用Root设备,而且用js开发,入门门槛较高。最近发现一种非Root环境下对Debug App进行代码注入的方案,原理是利用Java调试框架,通过调试器与目标虚拟机之间通讯,实现对虚拟机进程的修改。

JPDA框架和JDWP协议

Java SE从1.2.2版本以后推出了JPDA框架(Java Platform Debugger Architecture,Java平台调试体系结构)。JPDA定义了一套独立且完整的调试体系,它由三个相对独立的模块组成,分别为:

  • JVM TI:Java虚拟机工具接口(被调试者)。被调试者运行在我们想要调试的虚拟机上,它可以通过JVM TI这个标准接口监控当前虚拟机的信息。
  • JDWP:Java Debug Wire Protocol,Java调试协议(通道)。在调试者和被调试者之间,通过JDWP传输层传输消息。
  • JDI:Java Debug Interface,Java调试接口(调试者)。调试者定义了用户可以使用的调试接口,用户可以通过这些接口对被调试虚拟机发送调试命令,同时显示调试结果。

 

Reference: https://docs.oracle.com/javase/7/docs/technotes/guides/jpda/architecture.html

其中,JDWP协议是用于调试器与目标虚拟机之间进行调试交互的通信协议。

JDWP 大致分为两个阶段:握手和应答。握手是在传输层连接建立完成后,做的第一件事:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1412684.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用js判断list中是否含有某个字符串,存在则删除,

显示上图中使用了两种方式, 左边的是filter将不等于userCode的元素筛选出来组成一个新的list, userCodeList.filter(item> item!userCode);但是上面这个方法在IE浏览器中不支持, 所以改成了右边的方法,使用splice…

【代码随想录-数组】有序数组的平方

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

MAIA ACTIVE×实在RPA丨低成本、高效率管理达人推广计划,业务提效超6倍

MAIA ACTIVE(以下简称“MAIA”)是一个专为亚洲女性设计的运动服品牌,于2016年成立于上海。作为女装细分市场的头部企业,MAIA凭借与抖音、小红书等平台达人合作,迅速积累了知名度,并长期保持品牌曝光度和销售…

STM32标准库——(4)OLED显示屏

1.STM32调试方式 串口调试:通过串口通信,将调试信息发送到电脑端,电脑使用串口助手显示调试信息显示屏调试:直接将显示屏连接到单片机,将调试信息打印在显示屏上Keil调试模式:借助Keil软件的调试模式&…

假期刷题打卡--Day15

1、MT1152韩信又生气了 韩信点兵(大于10人),三个三个一排少1个人,五个五个一排又少1个人,七个七个一排还少1个人。韩信生气了,从别的队伍里调来一个人!这样不管是三个一排五个一排还是七个一排都完美了。问原本最少应该有多少人。…

STM32标准库——(3)GPIO输入

1.按键简介 按键:常见的输入设备,按下导通,松手断开 按键抖动:由于按键内部使用的是机械式弹簧片来进行通断的,所以在按下和松手的瞬间会伴随有一连串的抖动 1.1 硬件电路图 上面两个是外加上拉电阻(常用…

一款颜值与实力并存的翻页时钟(免费)

FliTik是一款颜值与实力并存的翻页时钟,安卓端是完全免费的,无任何广告,极简风 ,软件默认是12小时制,可以在设置中启用24小时制,并且还支持设置显示秒钟、日期、文案,滴答声和语音报时。 支持横…

[C++开发 02_1/5_ 程序的内存模型(84)]

知识点1:内存分区模型 1.1 程序运行前 命名技巧:c--const(初始化之后不能被修改) g--global(全局的) l -- local(局部的) 代码区和全局区都只是在程序运行前的区域。 在程序运行之后才会有栈…

mysql高可用设计,主库挂了怎么办

实际上高可用就是系统能提供的一种无故障服务能力,就是避免宕机出现不能服务的场景。 首先来说对于无状态服务的高可用设计是比较简单的,发现有不能用的就直接停了换别的服务器就行,比如Nginx。这里说一下无状态服务就是不需要记录你的状态、…

玩转WEB接口之一 【HTTP调试测试神器 httpbin使用】

文章目录 一、项目、作者何许人也二、观摩庐山真面目三、怎么玩四、后端怎么调用1. RestTemplate测试代码2. 运行结果 一、项目、作者何许人也 httpbin是大神kennethreitz为搭建测试用的http服务而写的项目,httpbin 这个服务应用能测试HTTP请求及响应的各种信息&am…

什么是框架 确定伦敦金的框架为何重要?

在伦敦金投资中,我们要进行分析或者交易,都要将伦敦金走势置于一个框架内。什么才是框架呢?笔者认为,在当前伦敦金走势的上方和下方画出支撑阻力位,这就是框架。但我们要注意框架得能够立得起来,那才算是好…

Python之线程与进程相关介绍

Python 线程与进程 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。 使用 threading 模块 …

TCP 状态转换

上图中还没有进行握手的时候状态是关闭的。 三次握手状态的改变: 客户端发起握手。 调用 connect() 函数时状态转化为:SYN_SENT。调用 listen() 函数时状态转换为:LISTEN。ESTABLISHED是被连接的状态。 四次挥手状态的改变: …

实战EDA电子设计自动化经典入门模型VHDL代码编写(含代码解释)上篇--状态机,逻辑设计:Y=AB+C

前言 电子设计自动化(EDA): 定义:EDA是用于设计和开发复杂的电子系统(如集成电路)和印刷电路板的软件工具集合。这些工具通常用于设计电路、进行仿真测试、分析电路行为以及协助制造过程。应用:…

013:获取K线图,增加周期可选

改进《001:如何获取A股个股的前复权K线数据》,增加周期可选。 代码: import tkinter as tk from tkinter import messagebox from tkcalendar import Calendar import pandas as pd import requests from urllib.parse import urlencodedef gen_secid(…

软件设计师——软件工程(五)

📑前言 本文主要是【软件工程】——软件设计师——软件工程的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 &#x1f304…

颠覆式创新:LAXCUS分布式操作系统7.0

在这轮AI浪潮中,英伟达已经获得了硬件算力入口,Laxcus要获取软件算力入口。 有几位网友想了解我们正在研发的Laxcus分布式操作系统7.0的情况。应他们要求,今天就说说Laxcus 7.0版本。Laxcus 7.0是一个全新的操作系统,具有很多独特…

libjsoncpp 的编译和交叉编译

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

ps---1.使用置入嵌入的智能化对象命令制作拼贴画

ps—使用置入嵌入的智能化对象命令制作拼贴画 素材 步骤 打开背景图 置入嵌入对象(置入完,移动到正确的位置,回车或双击) 栅格化图层 重复上述步骤制作拼贴画

华硕ASUS K43SD笔记本安装win7X64(ventoy为入口以支撑一盘多系统);友善之臂mini2440开发板学习

记录 老爷机 白色 华硕 K43SD 笔记本 安装 win7X64 1. MBR样式常规安装win7X64Sp1 (华硕 K43SD 安装 win7X64 ) 老爷机 白色 华硕 K43SD 笔记本 安装 win7X64 (常规安装) 设置: 禁用UEFI 启用AHCI ventoy制作MBR(非UEFI)方式的启动U盘 U盘中放cn_windows_7_ultimate_wit…