当前位置: 首页 > 面试题库 >

JVM字节码验证程序的职责

岳均
2023-03-14
问题内容

有人可以列出字节码验证程序必须执行以确保程序正确性的主要任务吗?JVM规范中是否定义了一组标准的,最少的职责?我还想知道验证是否跨越其他阶段,例如加载和初始化。


问题答案:

这在JVM规范:第4.10章中指定。验证类文件。

该页面的大部分内容描述了类型安全的各个方面。为了检查程序是否是类型安全的,验证程序需要确定每个程序点在操作数堆栈中驻留哪些类型的操作数,并确保它们与相应指令期望的类型匹配。

它验证的其他内容包括但不限于以下内容:

  • 分支必须在该方法的代码数组的范围内。

* 所有控制流指令的目标都是指令的开始。在宽指令的情况下,宽操作码被认为是指令的开始,给出该宽指令所修改的操作的操作码不被认为是开始指令。不允许跳转到指令的中间。

  • 没有指令可以访问或修改索引大于或等于其方法指示分配的局部变量数的局部变量。

  • 常量池的所有引用都必须是适当类型的条目。(例如,指令getfield必须引用一个字段。)

  • 该代码不会在指令中间结束。

  • 执行不能脱离代码的结尾。

* 对于每个异常处理程序,由该处理程序保护的代码的起点和终点必须在一条指令的开头,或者在终点的情况下,必须紧接在代码结尾之后。起点必须在终点之前。异常处理程序代码必须以有效指令开头,并且不得以宽指令修改后的操作码开头。

最后,验证程序还将执行数据流分析,以确保没有指令引用任何未初始化的局部变量。



 类似资料:
  • 问题内容: 字节码如何在JVM中得到验证? 问题答案: 甲骨文本身有它如何工作的一个小片段页面在这里。 基本上,JRE不信任JDK。那是因为它不知道哪个JDK编译器创建了类文件。它将类文件视为恶意文件,直到通过验证。 对此进行扩展,字节码验证是防止Sun称为“恶意编译器”的必要步骤。Sun自己的Java编译器可确保Java源代码不违反安全规则,但是,当应用程序导入代码片段时,它实际上并不 知道 该

  • 问题内容: 在我的字节码检测项目中,我经常迷失在VerifyErrors上。但是,默认的Java Verifier很少提供有关导致错误的指令的信息(它仅提供方法和一条小消息)。是否有任何独立的字节码验证程序在定位错误(至少是精确的指令位置)方面提供了更高级的帮助?谢谢。 问题答案: 与任何涉及JVM字节码的项目一样,我将首先检查BCEL是否具有对您有用的任何东西。另外,也许FindBugs可能会有

  • 我在服务器端有几个问题。 我有50多个API。 需要检查每一个API(GET, POST)方法下面的东西。 验证输入是否为有效的json 例如1: 在上面的输入中,我需要检查几个关键字是手动的。例如:名称、代码 例2: 在上面的例子中,我需要检查州和城市 我检查了包裹,但没有找到适合我的。 是否有用于检查json验证的包?

  • 如何为两个数字的范围设置验证。我想将第一个数字的最大值设置为第二个数字的值,将第二个数字的最小值设置为第一个numb的值。这是我的js代码: 和超文本标记语言: 请帮忙谢谢

  • 我试图从mime类型字节验证一些Base64编码的图像,除了。png文件之外,它们都验证正确 png字节签名是89 50 4E 47 0D 0A 1A 0A 我有一个允许的字节签名数组 编辑:用FileReader()从javascript编码前端

  • 本文向大家介绍C ++程序生成验证码并验证用户,包括了C ++程序生成验证码并验证用户的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将讨论一个生成CAPTCHA并验证用户的程序。 为此,我们将为用户提供一个随机字符串,并要求他重新输入相同的字符串。然后,必须检查给定字符串和输入字符串是否匹配。 CAPTCHA应该是由az,AZ和0-9组成的完全随机的系统。 示例 输出结果