`
yiliner
  • 浏览: 213148 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

理解Java混淆后的反编译代码

阅读更多

理解Java混淆后的反编译代码

例子一:赋值
反编译过来的代码如下:
        Node node;
        Node node1 = _$3.getChildNodes().item(0);
        node1;
        node1;
        JVM INSTR swap ;
        node;
        getChildNodes();
        0;
        item();
        getChildNodes();
        0;
        item();
        getNodeValue();
        String s;
        s;
原始语句:
        Node node;
        Node node1 = currDocument.getChildNodes().item(0);
 node = node1;
        String s = node.getChildNodes().item(0).getChildNodes().item(0).getNodeValue();
注解:
        JVM INSTR swap ; //赋值语句
练习:
        String s1;
        String s8 = node.getChildNodes().item(1).getChildNodes().item(0).getNodeValue();
        s8;
        s8;
        JVM INSTR swap ;
        s1;
        10;
        Integer.parseInt();
        int i;
        i;

   
例子二:不带参数创建对象
反编译过来的代码如下:
        JVM INSTR new #244 <Class CrossTable>;
        JVM INSTR dup ;
        JVM INSTR swap ;
        CrossTable();
        CrossTable crosstable;
        crosstable;

原始语句:
        CrossTable crosstable = new CrossTable();
注解:
练习:
        JVM INSTR new #246 <Class Database>;
        JVM INSTR dup ;
        JVM INSTR swap ;
        Database();
        Object obj;
        obj;

例子三:带参数创建对象
反编译过来的代码如下:
        JVM INSTR new #262 <Class StringBuffer>;
        JVM INSTR dup ;
        JVM INSTR swap ;
        String.valueOf(s2);
        StringBuffer();
        s.substring(j, i);
        append();
        s6;
        append();
        toString();
        s2;
 
原始语句:
 s2 = (new StringBuffer(String.valueOf(s2))).append(s.substring(j, i)).append(s6).toString();
注解:
 此语句实际上是:s2 += s.substring(j, i) + s6;
练习:

例子四:for循环
反编译过来的代码如下:
        int k = 0;
          goto _L4
_L8:
 ...
 k++;
_L4:
        if(k < as.length) goto _L8; else goto _L7

原始语句:
 for(int k=0;k < as.length;k++)
 {
     ...
 }
注解:

例子五:while循环
反编译过来的代码如下:
        String s1 = "";
          goto _L1
_L3:
        JVM INSTR new #262 <Class StringBuffer>;
        JVM INSTR dup ;
        JVM INSTR swap ;
        String.valueOf(s1);
        StringBuffer();
        _$2(resultset, s, l);
        append();
        toString();
        s1;
_L1:
        if(resultset.next()) goto _L3; else goto _L2

原始语句:
 String s1 = "";
 while(resultset.next())
 {
  s1 = s1 + resultSetToString(resultset, s, l);

 }

分享到:
评论
2 楼 seahb 2009-08-20  
人家不给你看还偏要看 太坏了
1 楼 huhuanqadn 2009-02-02  
有点困难,学习中

相关推荐

    java混淆和反编译套餐工具.zip

    通过ProGuard,你可以删除未使用的代码,缩短类、方法和变量的名称,以及重排代码结构,使得反编译后的结果变得难以理解和解析。使用ProGuard时,你需要编写配置文件来指定哪些类、方法和字段需要保留,以便在混淆...

    jock java 混淆反编译

    Java混淆是一种保护应用程序源代码安全的技术,通过将原始的可读性强的代码转换为难以理解的形式,以此来防止恶意用户逆向工程分析。Jock是一个常见的Java混淆工具,它的目标是使得Java字节码变得难以理解和调试。在...

    java.class 反编译工具

    反编译工具则是将这些字节码转换回可读的源代码(.java文件),帮助开发者理解已有的类库或研究别人的代码。"java.class 反编译工具"主要就是针对这一需求而设计的。 描述中提到的"可以直接查看jar包中的class文件...

    java防反编译jar

    1. **类名混淆**:将有意义的类名替换为无意义的短字符串,比如"A"、"B"等,使得阅读和理解反编译后的代码变得困难。 2. **方法和变量混淆**:同样地,混淆方法和变量名,用无意义的字母或数字替换,进一步增加反...

    java源代码反编译

    总的来说,Java源代码反编译是一个强大的工具,有助于开发者在没有源代码的情况下理解或调试Java程序。然而,它也带来了一些法律和道德的考虑,因此在使用时必须谨慎。对于初学者,了解反编译的基本概念和工具,以及...

    Java反编译工具用于JAVA程序反编译

    此外,混淆过的代码可能在反编译后难以理解,因为混淆工具旨在使代码变得难以阅读。 总的来说,“小颖Java源代码反编译专家 V1.4终极版”作为一款强大的Java反编译工具,能够为开发者提供便利,尤其是在需要理解和...

    JAVA反编译软件(可将class文件反编译为java文件)

    - 由于反编译可能存在歧义,理解反编译后的代码需要专业知识和经验。 综上所述,Java反编译在开发过程中具有重要的辅助作用,但同时也需要谨慎使用,遵循合法和道德的原则。通过合适的工具,开发者可以更有效地...

    jar包混淆文档,防止代码反编译

    4. 验证混淆效果:混淆后,可以使用反编译工具(如JD-GUI)查看混淆结果,确保程序功能不受影响,同时源代码难以理解。 5. 集成到构建流程:为了确保每次构建都能得到混淆的.jar,可以将Allatori混淆步骤集成到构建...

    Java源代码反编译专家 V1.4终极版.rar

    因此,在使用这类工具时,确保你有合法的理由和权利去反编译代码。 总的来说,"Java源代码反编译专家 V1.4终极版"是一个强大的工具,它可以帮助开发者深入理解Java字节码,为调试、学习和分析提供了便利。但同时,...

    防止Java程序被反编译

    反编译工具能够解析Class文件中的方法和变量名,甚至重构出接近源代码的代码,这为保护Java代码的知识产权带来了挑战。以下是一些常见的防止Java程序被反编译的技术: 1. **隔离Java程序**:最直接的方式是不让用户...

    小颖Java源代码反编译专家 V1.4终极版.rar

    总的来说,"小颖Java源代码反编译专家 V1.4终极版"是一个针对Java开发者和研究人员的实用工具,通过它可以深入理解字节码并从中恢复源代码。然而,正确和合法地使用反编译技术至关重要,以免引发法律纠纷。在使用...

    java .class 类反编译软件

    需要注意的是,由于字节码的优化和去冗余处理,反编译的结果可能并不完全等同于原始源代码,尤其是当源代码经过混淆或者优化时。 在使用XJad进行反编译时,用户只需将`.class`文件拖入软件界面,XJad会自动进行解析...

    Java Class文件反编译工具 jd-gui

    总结来说,jd-gui作为一款强大的Java Class文件反编译工具,为开发者提供了便利,使他们能够在没有源代码的情况下理解和分析Java程序。然而,对于商业项目,尊重知识产权,未经许可不要擅自反编译他人的代码。在开发...

    java反编译exe

    总之,Java反编译exe是一项重要的软件开发和逆向工程技能,JadGUI作为其中的工具,提供了方便快捷的方式来查看和理解编译后的Java代码。正确和合法地使用这些工具,可以帮助开发者解决各种问题,同时也需要尊重他人...

    Java的class反编译工具

    总的来说,Java的Class反编译工具,如JD-GUI,为开发者提供了一种探索和理解Java字节码的强大途径,使得在没有源代码的情况下也能进行一定程度的分析和调试。然而,使用时应尊重软件的知识产权,并遵循合法的使用...

    java源代码反编译专家v1.4终极版

    - **代码格式化**:反编译后的代码尽可能保持原汁原味,易于阅读。 - **支持多种版本的Java**:兼容不同版本的Java虚拟机(JVM),如Java 8、9、10等。 - **类/包结构恢复**:根据字节码信息重建类和包的组织结构。 ...

    java反编译工具

    总之,Java反编译工具是开发者的重要辅助工具,可以帮助我们理解和逆向工程已编译的Java代码。JD-GUI作为其中的一员,以其直观的GUI界面和易用性受到了许多用户的青睐。正确使用这些工具,可以提升我们的工作效率,...

    web代码混淆压缩工具和java代码反编译工具

    本文将详细讲解"web代码混淆压缩工具"和"Java代码反编译工具"的相关知识点。 首先,代码混淆是一种技术,用于将可读性强的源代码转换为难以理解的形式,目的是防止未经授权的人员阅读或破解代码。混淆通常涉及...

    利用混淆器ProGuard混淆java类,防止反编译

    - `-overloadaggressively`尽可能多地重载方法,使得反编译后的代码难以理解。 4. **处理库和依赖** 当你的项目依赖其他库时,需要确保它们也经过混淆处理,或者明确声明它们不应混淆。使用`-libraryjars`指定库...

    JAVA反编译和unicode转字符.rar

    标题“JAVA反编译和unicode转字符.rar”表明这个压缩包包含了一套Java反编译工具Jad.exe和相关的使用手册,以及一个用于将反编译后汉字Unicode格式转换为可读字符格式的代码。Jad是Java反编译器的代表之一,它能够将...

Global site tag (gtag.js) - Google Analytics