我可以在运行时修改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方法的字节码吗? 的相关文章

随机推荐

  • 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程序的类加载器