标签: bytecode

字节码 解读

我记得一位教授曾经说过,解释后的代码比编译的代码慢了10倍.解释和字节码之间的速度差异是多少?(假设字节码不是JIT编译的)

我问,因为有些人一直在围绕将vim脚本编译成字节码的想法,我只是想知道会得到什么样的性能提升.

vim performance interpreter bytecode

8
推荐指数
1
解决办法
2840
查看次数

反编译混淆的java字节码

我在一个运行Java应用程序的平台上工作.这些应用程序经常被混淆,大多数都使用ProGuard,这使得我们平台的调试问题非常困难.

目前我正在使用JD(http://java.decompiler.free.fr/)对这些应用进行反编译.JD做得不错,但有时候生成的代码太难理解了.

这似乎主要是因为混淆工具利用较少约束的JVM字节码规范来生成有效的字节码,而不会映射回有效的Java代码(例如:积极的重载).

所以,我的问题是:是否有专门用于处理混淆字节码的反编译器?

java jvm bytecode proguard decompiler

8
推荐指数
2
解决办法
8654
查看次数

如何在asm代码中正确使用Instrumentation.retransformClasses()?

我正在使用asm库来执行一些Java字节码修改 - 专门用于修改我的类以实现新的接口和相关方法.我目前的方法是通过javaagent使用核心asm API.我想保留这种动态方法,而不是静态修改.class文件.

在更高的层次上,我的问题是,如果我选择修改从B扩展的A类,我还需要修改B.(鉴于我对如何在JVM中加载类的理解,我相信B类将永远是在A级之前交给变压器.(如果我错了,请纠正我.)鉴于这个假设,我认为我需要返回并重新转换 B.我的方法在这段代码中被捕获:

public byte[] transform(ClassLoader l, String name, Class<?> clazz, ProtectionDomain d, byte[] b) {
      throws IllegalClassFormatException {
    // **1**
    System.out.println("--->>> " + name);

    if (interestingClass(name)) {
        try {
            ClassReader cr = new ClassReader(b);
            ClassWriter cw = new ClassWriter(cr, ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
            PyClassVisitorAdapter pv = new PyClassVisitorAdapter(cw, name);
            cr.accept(pv, 0);

            // **2** Retrieve the superclass and try to transform that
            if (! "Ljava/lang/Object;".equals(pv.getSuperName())) {
                String cName = classJvmToCanonical(pv.getSuperName());
                Class[] classes = inst.getAllLoadedClasses();
                for (Class c …
Run Code Online (Sandbox Code Playgroud)

java bytecode java-bytecode-asm

8
推荐指数
1
解决办法
1506
查看次数

Python 2和3,字节码(pyo&pyc)向后兼容吗?

Python 2和3,字节码(pyo&pyc)向后兼容吗?

我可以用python 3执行python 2 pyo&pyc文件吗?

python bytecode backwards-compatibility pyc

8
推荐指数
1
解决办法
1145
查看次数

8
推荐指数
1
解决办法
493
查看次数

Python:LOAD_FAST与LOAD_DEREF,内置添加

上周五我参加了面试,不得不回答以下问题:为什么这段代码会引发异常(UnboundLocalError: local variable 'var' referenced before assignment在包含的行上var += 1)?

def outer():
    var = 1

    def inner():
        var += 1
        return var

    return inner
Run Code Online (Sandbox Code Playgroud)

我无法给出正确答案; 这个事实让我心烦意乱,当我回到家时,我很难找到合适的答案.好吧,我已经找到了答案,但现在有别的东西,让我困惑.

我必须事先说,我的问题更多的是关于设计语言时做出的决定,而不是关于它是如何工作的.

所以,请考虑这段代码.内部函数是一个python闭包,var并不是本地的outer- 它存储在一个单元格中(然后从单元格中检索):

def outer():
    var = 1

    def inner():
        return var

    return inner
Run Code Online (Sandbox Code Playgroud)

反汇编看起来像这样:

0  LOAD_CONST               1 (1)
3  STORE_DEREF              0 (var)  # not STORE_FAST

6  LOAD_CLOSURE             0 (var)
9  BUILD_TUPLE              1
12 LOAD_CONST               2 (<code object inner at 0x10796c810)
15 LOAD_CONST               3 …
Run Code Online (Sandbox Code Playgroud)

python closures bytecode

8
推荐指数
1
解决办法
1145
查看次数

noverify和Xverify之间的区别:没有?

JVM参数noverify和Xverify之间有什么区别:none?

java bytecode jvm-arguments

8
推荐指数
1
解决办法
3821
查看次数

Log4j Logger中的模糊字段和修改器

查看类文件时,org.apache.log4j.Logger它定义了一个Class带有name 的类型的合成字段class$org$apache$log4j$Logger.

从查看字节代码可以清楚地看出,该字段表示从常量池尚未引用类型的时间开始的自引用类.但是什么我也觉得奇怪的是,这一领域是的修改0x41008,其表示private,synthetic场(即我能听懂),而且还增加了一个修正0x40000,我不能找不到任何相关文档.

第19位的这个修饰符来自何处,它表达了什么?(Log4j是为Java 1编译的).

java bytecode

8
推荐指数
1
解决办法
198
查看次数

moderm JVM可以不同地优化同一类的不同实例吗?

假设我有2个相同类的实例,但它们的行为不同(遵循不同的代码路径)基于构造时设置的最终布尔字段.像这样的东西:

public class Foo {
   private final boolean flag;

   public Foo(boolean flagValue) {
      this.flag = flagValue;
   }

   public void f() {
      if (flag) {
         doSomething();
      } else {
         doSomethingElse();
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

理论上,2个Foo具有不同值的实例flag可以由2个不同的程序集支持,从而消除了if的成本(对于人为的例子,这是我能想到的最简单的例子).

所以我的问题是 - 任何JVM实际上都这样做吗?或者是一个总是由单个程序集支持的单个类?

java optimization jvm bytecode jvm-hotspot

8
推荐指数
2
解决办法
112
查看次数

开发人员消失了,我剩下的只是.pyt文件,我怎么看源代码?

无论如何,是否可以从.pyt文件中获取源代码?当我尝试打开所有时,我得到的是一堆符号。我有一个.exe文件,然后将文件转换为.pyc,但是主要的源代码似乎在.pyt中,尽管这是我假设的文件名是“ FILE”,但是当您通读时可以看到它的文件名是源代码中的.pyt。

我尝试使用在线工具进行解码,但没有运气。

我得到的例子:

c           @   sG  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l m Z d  d l m Z d  d l m Z d  d l    Z   d  d l
 m Z d  d l m
 Z
 d  d l m Z d  d l Z d  d l Z d  d l Z d  d l m Z d  d l m Z d …
Run Code Online (Sandbox Code Playgroud)

python decompiling bytecode decode deobfuscation

8
推荐指数
0
解决办法
239
查看次数