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

Java反编译工具体会

    博客分类:
  • J2EE
阅读更多

    做Java已经有4年多了,Java反编译工具开始是使用小颖,后来使用DJ Java Decompiler(破解版,嘿嘿),后来不能用了,用google一搜,发现大家都开始使用jad+jadclipse了,用了一段时间了,发现真是好用啊。看来要经常跳上井沿goole以下阿,了解一下新动态。

    看jad网站说jad的bug和限制:
    1.包含有内部类,则jad处理构造函数的参数时会出错;
    2.不支持zip和jar包。(注:如果使用Eclipse插件,则很容易得到包中的某个类的反编译代码)
    3.当有标签块,嵌套循环中有break/continue,有goto语句的时候,会提示信息“Couldn't fully decompile method <name>”;当有try-catch-finally语句的时候会提示信息“Couldn't resolve all exception handlers in method <name>”
    4. Currently Jad ignores the contents of the Line Number Table Attribute and the Source File Attribute(不明白什么意思)
    5.JAD不能处理继承信息,总是把java.lang.Object作为两个不同类的通用父类,需要的时候做强制转换
    6.jad对inlined functions处理不好

    jad使用过程中发现

        SharkUtilities.releaseTransaction(t);
        
break  MISSING_BLOCK_LABEL_89;
        Exception exception;
        exception;
        SharkUtilities.releaseTransaction(t);
        
throw  exception;

这个一般是try-catch-finally语句中的

finally ... {
   SharkUtilities.releaseTransaction(t);
}

语句。
    类似于

        Exception ex;
        
if ( ! connected)
            
throw   new  NotConnected( " The connection is not established... " );
        SecurityManager sm 
=  SharkEngineManager.getInstance().getSecurityManager();
        
if (sm  !=   null )
            
try
            
... {
                sm.check_executionadministration_get_sequence_processmgr(t, userId);
            }

            
//  Misplaced declaration of an exception variable
             catch (Exception ex)
            
... {
                
throw   new  BaseException(ex);
            }

        
return  SharkEngineManager.getInstance().getObjectFactory().createProcessMgrIteratorWrapper(t, userId).get_next_n_sequence(t, max_number);
        ex;
        cus.info(
" ExecutionAdmin -> Unexpected error while user tries to get the list of process managers " );
        
throw   new  BaseException(ex);

应该是

    try ... {
        
if ( ! connected)
            
throw   new  NotConnected( " The connection is not established... " );
        SecurityManager sm 
=  SharkEngineManager.getInstance().getSecurityManager();
        
if (sm  !=   null )
            
try
            
... {
                sm.check_executionadministration_get_sequence_processmgr(t, userId);
            }

            
//  Misplaced declaration of an exception variable
             catch (Exception ex)
            
... {
                
throw   new  BaseException(ex);
            }

        
return  SharkEngineManager.getInstance().getObjectFactory().createProcessMgrIteratorWrapper(t, userId).get_next_n_sequence(t, max_number);
        }
catch (Exception ex) ... {
        cus.info(
" ExecutionAdmin -> Unexpected error while user tries to get the list of process managers " );
        
throw   new  BaseException(ex);
       }

嵌套try-catch

分享到:
评论

相关推荐

    java就业培训教程

    此外,章节还涉及了Java程序的编译和运行过程,以及如何利用Java文档和反编译工具,如JAD和FrontEnd,来辅助学习和调试代码,深入了解Java虚拟机的运行机制和垃圾回收机制。 ### Java编程基础 #### 第2章:Java...

    java课程设计五子棋游戏.doc

    通过这一过程,学生不仅能够熟悉开发工具的使用,还能够学习到如何管理和组织项目文件、如何通过构建工具进行项目的编译和打包等实际开发中必备的技能。 在游戏界面和功能的设计方面,五子棋项目要求学生充分考虑...

    c#学习笔记.txt

    看完了前面几段,我的朋友提出了不同的意见:C#不是Java的Clone,它只是长得有些像Java而已,其实面向对象、中间语言什么的也不是什么新玩意儿,非Sun独创,有文为证:华山论剑:C#对Java。另外他对我上一集中说...

    基于Java语言实现的简易JVM设计与源码开发

    而javap是一个命令行工具,用于将编译后的.class文件反编译成可读的Java代码,这对于开发者理解字节码与源代码之间的映射关系有着重要作用。 从项目的设计角度来说,它的灵活性和可扩展性非常关键。支持对各类功能...

    ClassFinal字节码加密工具-其他

    ClassFinal是一款Java class文件安全加密工具,支持直接加密jar包或war包,无需修改任何项目代码,兼容spring-framework,可避免源码泄漏或字节码被反编译。项目模块说明:classfinal-core:ClassFinalde的核心模块...

    我的android应用(提供源码)

    通过反编译或使用工具(如apktool)分析这个APK,我们可以了解到应用的架构、使用的库、资源文件(如图片、字符串、布局)等信息。 从源码到APK的构建过程涉及许多Android开发的关键知识点,包括: 1. **Android ...

    算法导论中文版

    如果不了解操作系统,怎样能了解这些开发工具的原理,它们都是基于操作系统 的。不了解汇编,编译原理,怎么知道程序运行时要多长时间要多少内存,就不能编出高效的代码。 如果没有学好基础一开始就去学.net,java...

    二十三种设计模式【PDF版】

    它不同于我们以前接触的 Java API 等,那些属于 Toolkist(工具箱),它不再被动 的被使用,被调用,而是深刻的介入到一个领域中去,J2EE 等框架软件设计的目的是将一个领域中不变的东西先定义好,比如 整体结构和一些...

    大一暑期汇编语言程序设计作业

    6. **汇编与反汇编**:了解如何将高级语言编译成汇编代码,以及如何将汇编代码转换为机器码(反汇编),这有助于理解程序执行的过程。 7. **调试技巧**:掌握使用调试工具,如Debug或现代IDE中的调试器,来单步执行...

    C#微软培训资料

    &lt;&lt;page 1&gt;&gt; page begin==================== 目 目目 目 录 录录 录 第一部分 C#语言概述.4 第一章 第一章第一章 第一章 .NET 编 编 ... 比尔....这一天 微软公司正式推出了其下一代...

Global site tag (gtag.js) - Google Analytics