我可以在运行时修改Java方法的字节码吗?

2023-11-27

我正在编写另一个大型java程序的插件。

我想在运行时修改java程序的某些java方法的一些字节码,以便能够拦截方法调用(即向方法中注入一些hook代码)。

有什么办法可以达到这个目的吗?

PS:

我检查了以下方法:

1.更改java程序的类加载器。 (我们无法改变它)
2.使用java代理。 (我们不能使用java代理,因为java代理会创建一个新的代理对象。我们不使用代理对象。我们需要挂钩java程序的对象,并使用该对象)
3.使用-javaagent选项(我们不能为java程序添加命令行选项。)

PS more [再次编辑]:
我的类是由 ext 类加载器加载的(我将 jar 文件放在 JAVA_HOME\lib\ext 文件夹中)。 大型java程序是由Browser加载的applet程序。当浏览器启动小程序时,它也会加载我的类。

PS更多更多[再次编辑]:
虽然它是在Applet中运行的。我可以得到完全的许可。因为我可以修改java.policy和java.security文件。

Thanks,
Calvin


只需使用 -javaagent 选项,该选项用于在运行时修改字节码。您可以找到有关 -javaagent 的更多信息这个链接或来自这个链接

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以在运行时修改Java方法的字节码吗? 的相关文章

  • JPA 中的复合键

    我想创建一个具有自动生成的主键的实体 而且还有一个由其他两个字段组成的唯一复合键 我如何在 JPA 中执行此操作 我想这样做是因为主键应该用作另一个表中的外键 并且使其复合并不好 在下面的代码片段中 我需要命令和模型是唯一的 pk当然是主键
  • 存根方法时出现 InvalidUseOfMatchersException

    我有这个 TestNG 测试方法代码 InjectMocks private FilmeService filmeService new FilmeServiceImpl Mock private FilmeDAO filmeDao Bef
  • 如何将画廊意图中的“打开”更改为“完成”?

    我使用以下意图打开画廊来选择多个图像和视频 Intent intent new Intent intent setType image video intent putExtra Intent EXTRA ALLOW MULTIPLE tr
  • Java Runtime.getRuntime().freeMemory() 问题

    我搜索并看到了一些线程 但没有一个能够解决我遇到的具体问题 我正在尝试使用以下方式监视我的内存使用情况Runtime getRuntime freeMemory Runtime getRuntime maxMemory and Runtim
  • Spring Security 自定义过滤器

    我想自定义 Spring security 3 0 5 并将登录 URL 更改为 login 而不是 j spring security check 我需要做的是允许登录 目录并保护 admin report html 页面 首先 我使用教
  • Java:无法从同一包中的不同类访问静态变量

    这很奇怪 因为我有一个可以访问 Frame dimension getWidth 的 Character 类 及其伙伴 getHeight 但是当我想在 Map 类中使用它时 Eclipse 强调了它并且无法给我反馈 运行该程序最终会出现
  • 使用 GWT 读取非常大的本地 XML 文件

    我正在使用 GWT 构建我的第一个 Java 应用程序 它必须从一个非常大的 XML 文件中读取数据 当我尝试发送对文件中信息的请求时遇到问题 并且我不太确定它是否与文件的大小或我的语义有关 在我的程序中 我有以下内容 static fin
  • Java:在 eclipse 中导出到 .jar 文件

    我正在尝试将 Eclipse 中的程序导出到 jar 文件 在我的项目中 我添加了一些图片和 PDF s 当我导出到 jar 文件时 似乎只有main已编译并导出 我的意愿是如果可能的话将所有内容导出到 jar 文件 因为这样我想将其转换为
  • Spring Data JPA 选择不同

    我有一个情况 我需要建立一个select distinct a address from Person a 其中地址是 Person 内的地址实体 类型的查询 我正在使用规范动态构建我的 where 子句并使用findAll Specifi
  • 大数据使用什么数据结构

    我有一个包含一百万行的 Excel 工作表 每行有 100 列 每行代表一个具有 100 个属性的类的实例 列值是这些属性的值 哪种数据结构最适合在这里使用来存储数百万个数据实例 Thanks 这实际上取决于您需要如何访问这些数据以及您想要
  • Kotlin 未解决的参考:CLI 上 gradle 的 println

    放一个printlnkotlin 函数返回之前的语句会崩溃 堆栈跟踪 thufir dur NetBeansProjects kotlin thufir dur NetBeansProjects kotlin gradle clean bu
  • 需要使用 joda 进行灵活的日期时间转换

    我想使用 joda 解析电子邮件中的日期时间字符串 不幸的是我得到了各种不同的格式 例如 Wed 19 Jan 2011 12 52 31 0600 Wed 19 Jan 2011 10 15 34 0800 PST Wed 19 Jan
  • 自动生成Flyway的迁移SQL

    当通过 Java 代码添加新模型 字段等时 JPA Hibernate 的自动模式生成是否可以生成新的 Flyway 迁移 捕获自动生成的 SQL 并将其直接保存到新的 Flyway 迁移中 以供审查 编辑 提交到项目存储库 这将很有用 预
  • 如何使用 Hibernate (EntityManager) 或 JPA 调用 Oracle 函数或过程

    我有一个返回 sys refcursor 的 Oracle 函数 当我使用 Hibernate 调用该函数时 出现以下异常 Hibernate call my function org hibernate exception Generic
  • 套接字的读写如何同步?

    我们创建一个套接字 在套接字的一侧有一个 服务器 在另一侧有一个 客户端 服务器和客户端都可以向套接字写入和读取 这是我的理解 我不明白以下事情 如果服务器从套接字读取数据 它在套接字中是否只看到客户端写入套接字的内容 我的意思是 如果服务
  • 生成的序列以 1 开头,而不是注释中设置的 1000

    我想请求一些有关 Hibernate 创建的数据库序列的帮助 我有这个注释 下面的代码 在我的实体类中 以便为合作伙伴表提供单独的序列 我希望序列以 1000 开头 因为我在部署期间使用 import sql 将测试数据插入数据库 并且我希
  • HashMap 值需要不可变吗?

    我知道 HashMap 中的键需要是不可变的 或者至少确保它们的哈希码 hashCode 不会改变或与另一个具有不同状态的对象发生冲突 但是 HashMap中存储的值是否需要与上面相同 为什么或者为什么不 这个想法是能够改变值 例如在其上调
  • Hamcrest Matchers - 断言列表类型

    问题 我目前正在尝试使用 Hamcrest Matchers 来断言返回的列表类型是特定类型 例如 假设我的服务调用返回以下列表 List
  • Android:无法发送http post

    我一直在绞尽脑汁试图弄清楚如何在 Android 中发送 post 方法 这就是我的代码的样子 public class HomeActivity extends Activity implements OnClickListener pr
  • 洪水填充优化:尝试使用队列

    我正在尝试创建一种填充方法 该方法采用用户指定的初始坐标 检查字符 然后根据需要更改它 这样做之后 它会检查相邻的方块并重复该过程 经过一番研究 我遇到了洪水填充算法并尝试了该算法 它可以工作 但无法满足我对 250 x 250 个字符的数

随机推荐

  • elasticsearch 映射 tokenizer 关键字以避免分割标记并启用通配符

    例如 我尝试在给定字段上使用 angularjs 和 elasticsearch 创建自动完成功能countryname 它可以包含简单的名称 如 法国 西班牙 或 组合名称 如 塞拉利昂 在映射中该字段是not analyzed防止弹性标
  • 求包围一组点的边界多边形的面积

    我在天空图上有一系列点 我想找到这些点占据的面积 为此 我需要找到包含这些点的多边形的顶点 将这些点转换为等积投影 然后计算出面积 除了如何计算包围图形上的点的多边形的顶点之外 我还编写了所有代码 做这个的最好方式是什么 您选择的多边形不是
  • 在换行符处拆分单个单元格

    我有一个电子表格 其中的数据位于用换行符分隔的单个单元格中 我需要将单元格分成单独的行 以便我可以删除一些数据并重新组合 像这样 Item Status 285T1150 3 285T0680 1 1 Complete 285T1145 7
  • 如何在 Django 中测试 celery period_task?

    我有一个简单的周期性任务 from celery decorators import periodic task from celery task schedules import crontab from models import Su
  • 如何保存包含指针的ctypes对象

    我使用第 3 方库 它在大量计算后返回包含指针的 ctypes 对象 如何保存 ctypes 对象以及指针指向的内容以供以后使用 我试过 scipy io savemat gt 类型错误 无法将对象转换为数组 cPickle gt 包含指针
  • 使用 php 将事件添加到谷歌日历

    我正在开发一个客户端网络应用程序 用户可以在其中预订带有日期 时间 位置等的驱动器 客户要求将每次预订都添加为他的 Google 日历上的活动 我创建了一个 API 密钥并下载了 PHP API 客户端 https github com g
  • javascript中两个模块声明有什么区别?

    JavaScript 中模块的两次声明有什么不同 一个函数周围有括号 而另一个则没有 一篇文章说 注意匿名函数周围的 这是由 语言 因为以标记函数开头的语句是 始终被视为函数声明 包括 创建一个 函数表达式代替 检查时两者似乎都做了同样的事
  • 将函数保存在本地存储中

    我正在处理一些对象 其中包含要从浏览器显示和操作的大量数据 并且我想将其保存在本地存储中 为了保存对象 我使用了 JSON stringify 所以一切都变成文本 而且效果很好 bindingRef primo name primo mod
  • WP8 项目:“CompileXaml”任务意外失败

    我在计算机上重新安装了 Windows 在 Visual Studio 2012 for Windows Phone 中打开任何 Windows Phone 8 项目后 收到以下错误消息 The CompileXaml task faile
  • ?: 运算符在 C 中究竟如何工作?

    我有一个问题 编译器如何运行以下代码 include
  • 仅使用 Django 的 DB 部分

    有人知道 Django 有多 模块化 吗 我可以只使用 ORM 部分来获取映射到数据库表的类并知道如何从这些表中读取 写入吗 如果没有 您会推荐什么作为 Hibernate 的 Python 等价物 如果您喜欢 Django 的 ORM 独
  • 如何在Android中的EditText上设置自定义字体?

    我正在尝试在EditText 与我目前正在做的事情相比 有人有更好的方法吗 Typeface myFont Typeface createFromAsset getAssets fonts myfont ttf edittext setTy
  • FSharp 构建在 MSBuild 中失败,但在 Visual Studio 中工作正常

    我的解决方案中有许多项目 其中还有一个 F 项目 在 Visual Studio 中一切都构建得很好 但是当我尝试在 TeamCity 服务器 未安装 VS 上使用 MSBuild 构建它时 它会抛出以下构建错误 C TeamCity bu
  • __callStatic()、call_user_func_array()、引用和 PHP 5.3.1

    我一直在阅读有关 SO 和其他地方的内容 但我似乎找不到任何结论性的东西 是否有任何方法可以有效地通过此调用堆栈携带引用 从而实现如下示例中所述的所需功能 虽然这个例子并没有试图解决它 但它确实说明了问题 class TestClass s
  • 使用滚动中位数过滤 Pandas 数据框中的异常值

    我正在尝试从带有日期的 GPS 高程位移散点图中过滤掉一些异常值 我尝试使用 df rolling 计算每个窗口的中值和标准差 然后如果它大于 3 个标准差则删除该点 但是 我无法找到一种方法来循环该列并比较滚动计算的中值 这是我到目前为止
  • 如何用sed插入包含斜杠的字符串? [复制]

    这个问题在这里已经有答案了 我有一个 Visual Studio 项目 是本地开发的 代码文件必须部署到远程服务器 唯一的问题是它们包含的 URL 这些 URL 是硬编码的 该项目包含 URL 例如 page one 为了使链接在服务器上有
  • H2 DB - 列必须位于分组依据列表中

    我正在使用 H2 DB 访问静态数据库 我有一张桌子 看起来像 COUNTRY STATE CITY LAT LNG COUNTRYID STATEID CITYID Germany Berlin 1 23 1 23 1 1 0 Germa
  • Laravel 以良好的方式从控制器定义默认布局

    我用谷歌搜索了两个小时 但没有找到答案 也许你能帮忙 当我定义在我的控制器 class MyController extends Base Controller public layout layouts default public fu
  • Spark-submit/spark-shell>yarn-client和yarn-cluster模式的区别

    我正在使用 YARN 运行 Spark 从链接 http spark apache org docs latest running on yarn html 我找到了不同纱线模式的解释 即 masterSpark 可以运行的选项 有两种部署
  • 我可以在运行时修改Java方法的字节码吗?

    我正在编写另一个大型java程序的插件 我想在运行时修改java程序的某些java方法的一些字节码 以便能够拦截方法调用 即向方法中注入一些hook代码 有什么办法可以达到这个目的吗 PS 我检查了以下方法 1 更改java程序的类加载器