精华内容
参与话题
问答
  • java代码反编译

    千次阅读 2018-09-28 09:41:27
    javap是jdk自带的一个工具,可以对代码反编译,也可以查看java编译器生成的字节码。 大家也可以自己去http://jd.benow.ca/官网下载对应操作系统的jd-gui工具 一般情况下,很少有人使用javap对class文件进行反编译...

    javap是jdk自带的一个工具,可以对代码反编译,也可以查看java编译器生成的字节码。

    大家也可以自己去http://jd.benow.ca/官网下载对应操作系统的jd-gui工具

    一般情况下,很少有人使用javap对class文件进行反编译,因为有很多成熟的反编译工具可以使用,比如jad。但是,javap还可以查看java编译器为我们生成的字节码。通过它,可以对照源代码和字节码,从而了解很多编译器内部的工作。

    实例

    javap命令分解一个class文件,它根据options来决定到底输出什么。如果没有使用options,那么javap将会输出包,类里的protected和public域以及类里的所有方法。javap将会把它们输出在标准输出上。来看这个例子

    C:\Users\Clarence>javap -c C:\Users\Clarence\Desktop\JavaPractice\SerializeDemo\bin\com\gouguocompany\serializedemo\SerializeDemo.class
    Compiled from "SerializeDemo.java"
    public class com.gouguocompany.serializedemo.SerializeDemo {
      public com.gouguocompany.serializedemo.SerializeDemo();
        Code:
           0: aload_0
           1: invokespecial #8                  // Method java/lang/Object."<init>":()V
           4: return
    
      public static void main(java.lang.String[]);
        Code:
           0: new           #16                 // class com/gouguocompany/serializedemo/Employee
           3: dup
           4: invokespecial #18                 // Method com/gouguocompany/serializedemo/Employee."<init>":()V
           7: astore_1
           8: aload_1
           9: ldc           #19                 // String Clarence
          11: putfield      #21                 // Field com/gouguocompany/serializedemo/Employee.name:Ljava/lang/String;
          14: aload_1
          15: ldc           #25                 // String San Francisco
          17: putfield      #27                 // Field com/gouguocompany/serializedemo/Employee.address:Ljava/lang/String;
          20: aload_1
          21: ldc           #30                 // int 11122333
          23: putfield      #31                 // Field com/gouguocompany/serializedemo/Employee.SSN:I
          26: aload_1
          27: bipush        101
          29: putfield      #35                 // Field com/gouguocompany/serializedemo/Employee.number:I
          32: ldc           #38                 // String hello world
          34: putstatic     #40                 // Field com/gouguocompany/serializedemo/Employee.test:Ljava/lang/String;
          37: new           #43                 // class java/io/FileOutputStream
          40: dup
          41: ldc           #45                 // String /temp/employee.ser
          43: invokespecial #47                 // Method java/io/FileOutputStream."<init>":(Ljava/lang/String;)V
          46: astore_2
          47: new           #50                 // class java/io/ObjectOutputStream
          50: dup
          51: aload_2
          52: invokespecial #52                 // Method java/io/ObjectOutputStream."<init>":(Ljava/io/OutputStream;)V
          55: astore_3
          56: aload_3
          57: aload_1
          58: invokevirtual #55                 // Method java/io/ObjectOutputStream.writeObject:(Ljava/lang/Object;)V
          61: aload_3
          62: invokevirtual #59                 // Method java/io/ObjectOutputStream.close:()V
          65: aload_2
          66: invokevirtual #62                 // Method java/io/FileOutputStream.close:()V
          69: getstatic     #63                 // Field java/lang/System.out:Ljava/io/PrintStream;
          72: ldc           #69                 // String Serialized data is saved in /tmp/employee.ser
          74: invokevirtual #71                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
          77: goto          85
          80: astore_2
          81: aload_2
          82: invokevirtual #76                 // Method java/lang/Exception.printStackTrace:()V
          85: return
        Exception table:
           from    to  target type
              37    77    80   Class java/lang/Exception

    上面输出的内容就是字节码。

    用法摘要

    C:\Users\Clarence>Javap -help
    用法: javap <options> <classes>
    其中, 可能的选项包括:
      -help  --help  -?        输出此用法消息
      -version                 版本信息
      -v  -verbose             输出附加信息
      -l                       输出行号和本地变量表
      -public                  仅显示公共类和成员
      -protected               显示受保护的/公共类和成员
      -package                 显示程序包/受保护的/公共类
                               和成员 (默认)
      -p  -private             显示所有类和成员
      -c                       对代码进行反汇编
      -s                       输出内部类型签名
      -sysinfo                 显示正在处理的类的
                               系统信息 (路径, 大小, 日期, MD5 散列)
      -constants               显示最终常量
      -classpath <path>        指定查找用户类文件的位置
      -cp <path>               指定查找用户类文件的位置
      -bootclasspath <path>    覆盖引导类文件的位置

    总结

    javap可以用于反编译和查看编译器编译后的字节码。平时一般用javap -c比较多,该命令用于列出每个方法所执行的JVM指令,并显示每个方法的字节码的实际作用。可以通过字节码和源代码的对比,深入分析java的编译原理,了解和解决各种Java原理级别的问题。

    展开全文
  • 代码反编译工具

    2018-10-29 10:44:20
    将.class文件反编译成java文件
  • android代码反编译

    千次阅读 2014-03-16 00:21:00
    在实际的开发成产品apk的发布过程中,我们经常会使用到代码混淆...一、代码反编译  1.准备工作  首先我们准备好一个项目的apk文件(未进行混淆打包)、dex2jar工具(下载地址:http://code.google.com/p

    在实际的开发成产品apk的发布过程中,我们经常会使用到代码混淆技术。不过在讲解如何进行代码混淆之前,我先跟大家演示一下反编译的过程,这样才能让大家明白为什么需要进行代码混淆。 

     

    一、代码反编译 

    1.准备工作 

    首先我们准备好一个项目的apk文件(未进行混淆打包)、dex2jar工具(下载地址:http://code.google.com/p/dex2jar/)、jd-gui工具(下载地址http://jd-gui.softpedia.com/)。 



     

    2.获取CodeMixTest.apk中的classes.dex文件 

    将CodeMixTest.apk解压,这里我们为了方便就直接解压到当前文件夹下。在解压出的文件中,我们可以看见有一个classes.dex文件,这就是我们的源代码打包生成的文件。 


     

    3.使用dex2jar工具还原jar文件 

    dex2jar工具的作用就是将class.dex文件还原成.jar文件。先将dex2jar-0.0.9.15.zip解压,然后将上面获得的classes.dex文件拷贝至解压的目录中。 


    查看解压目录中,有dex2jar.bat文件。 


    启动cmd,进入到dex2jar工具解压的目录中,运行命令:dex2jar.bat classes.dex,有如下结果 


    查看dex2jar工具解压的目录中,生成了我们想要得到的classes_dex2jar.jar文件。 


     

    4.使用jd-gui工具查看jar文件 

    jd-gui-0.3.5.windows.zip工具解压,为了方便我们直接解压到当前文件夹,我们会看见一个jd-gui.exe文件。 


    双击jd-gui.exe,使用工具打开前面我们获得的classes_dex2jar.jar文件。可以清楚的看见源代码。 


     

    是企业真实的项目中,如果不经过代码混淆,你的源码就如此赤裸裸的暴露着。这样对于公司来说是非常不安全的,并且不想发生的情况。既然我们已经看见了反编译如此的威力,那么我们有什么办法可以解决这个问题呢?看下面讲解。 

     

    二、代码混淆 

    1.准备工作 

    首先,我们得将我们的项目源码、proguard工具(放心这个工具Google已经在sdk中为我们提供了,在sdk\tools目录下可以看到)、 proguard.cfg文件(该文件定义了混淆的规则,创建2.3以上项目自动生成,或者在网上可以很容易下载到)。 


     

    2.在你的项目中添加proguard.cfg文件 

    该文件Google公司已经为我们准备好了,创建项目时,在项目的根目录下就有了,但是是从2.3开始的。不过我们基于2.2的项目只需要将该文件拷贝到项目根目录下即可。 


     

    3.修改项目的default.properties配置文件 

    Android项目默认在打包的时候是不混淆代码的,所以我们必须得在default.properties文件中,添加该配置:proguard.config=proguard.cfg 



    4.进行apk打包 

    好了,一切就绪,接下来我们就按着平常的打包步骤,进行打包操作。打完包后,我们使用上面讲述的反编译方法,查看现在的jar文件 


    会发现,混淆了许多aa、bb、cc的包、aa、bb、cc的类和方法,这样的代码根本无法阅读,也就达到了我们保护源代码的目的了 

     

    三、produard.cfg文件 

    我们在看看produard.cfg文件,该文件中描述了混淆代码的规则,你如果想根据自己的需求来混淆代码,就可以在本文件中编写你的混淆规则。一般情况下,该文件的内容如下: 

    [java] view plaincopy
    1. -optimizationpasses 5   
    2. -dontusemixedcaseclassnames//混淆时不会产生形形色色的类名   
    3. -dontskipnonpubliclibraryclasses//指定不去忽略非公共的类库   
    4. -dontpreverify//不预校验   
    5. -verbose   
    6. -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*//优化   
    7.    
    8. //不进行混淆保持原样   
    9. -keep public class * extends android.app.Activity   
    10. -keep public class * extends android.app.Application   
    11. -keep public class * extends android.app.Service   
    12. -keep public class * extends android.content.BroadcastReceiver   
    13. -keep public class * extends android.content.ContentProvider   
    14. -keep public class * extends android.app.backup.BackupAgentHelper   
    15. -keep public class * extends android.preference.Preference   
    16. -keep public class com.android.vending.licensing.ILicensingService   
    17.    
    18. //保护指定的类和类的成员的名称,如果所有指定的类成员出席   
    19. -keepclasseswithmembernames class * {   
    20.     native <methods>;   
    21. }   
    22.    
    23. //保护指定的类和类的成员,但条件是所有指定的类和类成员是要存在   
    24. -keepclasseswithmembers class * {   
    25.     public <init>(android.content.Context, android.util.AttributeSet);   
    26. }   
    27.    
    28.    
    29. -keepclasseswithmembers class * {   
    30.     public <init>(android.content.Context, android.util.AttributeSet, int);   
    31. }   
    32.    
    33. //保护指定类的成员,如果此类受到保护他们会保护的更好   
    34. -keepclassmembers class * extends android.app.Activity {   
    35.    public void *(android.view.View);   
    36. }   
    37.    
    38. -keepclassmembers enum * {   
    39.     public static **[] values();   
    40.     public static ** valueOf(java.lang.String);   
    41. }   
    42.    
    43. //保护指定的类文件和类成员   
    44. -keep class * implements android.os.Parcelable {   
    45.   public static final android.os.Parcelable$Creator *;   
    46. }   

     

    四、可能出现的问题 

    1.因为使用了升级后使用android-support-v4而发生混淆错误,无法打包出现如下错误: 

    Unexpected error while evaluating instruction:      Class       = [android/support/v4/view/AccessibilityDelegateCompat$AccessibilityDelegateJellyBeanImpl]      Method      = [newAccessiblityDelegateBridge(Landroid/support/v4/view/AccessibilityDelegateCompat;)Ljava/lang/Object;]   Instruction = [18] areturn    Exception   = 1 (Can't find any super classes of [android/support/v4/view/AccessibilityDelegateCompatIcs$1] (not even immediate super class [android/view/View$AccessibilityDelegate]))    Unexpected error while performing partial evaluation:      Class       = [android/support/v4/view/AccessibilityDelegateCompat$AccessibilityDelegateJellyBeanImpl]     Method      = [newAccessiblityDelegateBridge(Landroid/support/v4/view/AccessibilityDelegateCompat;)Ljava/lang/Object;]      Exception   = 1 (Can't find any super classes of [android/support/v4/view/AccessibilityDelegateCompatIcs$1] (not even immediate super class [android/view/View$AccessibilityDelegate]))   java.lang.IllegalArgumentException: Can't find any super classes of [android/support/v4/view/AccessibilityDelegateCompatIcs$1] (not even immediate super class [android/view/View$AccessibilityDelegate])      at proguard.evaluation.value.ReferenceValue.generalize(ReferenceValue.java:287) 

    你需要在proguard.cfg文件中添加如下代码 

    -libraryjars   libs/android-support-v4.jar 
    -dontwarn android.support.v4.**     
    -keep class android.support.v4.** { *; }   
    -keep interface android.support.v4.app.** { *; }   
    -keep public class * extends android.support.v4.**   
    -keep public class * extends android.app.Fragment 

     

    2.如果你使用了第三方的包,你需要使用一下配置,让ProGuard知道库中的一些类并不是在所有的API中可用: 

    -libraryjars   libs/roboguice-2.0.jar 

    -dontwarn roboguice.**  

     

    3.在打包的过程中,出现如下错误: 

    Proguard returned with error code 1. See console 
    [2012-09-25 09:50:39 - estore3601] Error: @C:\Users\hp\AppData\Local\Temp\android_5192919586673521494.pro (文件名、目录名或卷标语法不正确。) 

    你需要系在ProGuard最新版本,如v4.8。然后解压produard4.8.zip文件,将bin和lib两个文件夹覆盖sdk目录\tool\proguard目录中同名的文件夹 

    展开全文
  • 热血江湖服务器端7.0源代码反编译 这个是转载的哦
  • 小颖Java源代码反编译专家

    热门讨论 2008-04-28 09:29:41
    小颖Java源代码反编译专家,可以对整个文件夹下的class文件一起反编译,挺好用的呵呵
  • 防止代码反编译

    千次阅读 2018-03-31 01:15:20
    java作为解释型的语言,其高度抽象的特性意味其很容易被反编译,容易被反编译,...或许反编译别人的代码不怎么道德,这个嘛......废话不多说,正文如下:常用的保护技术由于Java字节码的抽象级别较高,因此它们较容...

       java作为解释型的语言,其高度抽象的特性意味其很容易被反编译,容易被反编译,自然有防止反编译措施存在。今天就拜读了一篇相关的文章,受益匪浅,知彼知己嘛!!之所以会对java的反编译感兴趣,那是因为自己在学习的过程中,常常需要借鉴一下别人的成果(你懂的...)。或许反编译别人的代码不怎么道德,这个嘛......


    废话不多说,正文如下:


    常用的保护技术

    由于Java字节码的抽象级别较高,因此它们较容易被反编译。本节介绍了几种常用的方法,用于保护Java字节码不被反编译。通常,这些方法不能够绝对防止程序被反编译,而是加大反编译的难度而已,因为这些方法都有自己的使用环境和弱点。

    1. 隔离Java程序  

    最简单的方法就是让用户不能够访问到Java Class程序,这种方法是最根本的方法,具体实现有多种方式。例如,开发人员可以将关键的Java Class放在服务器端,客户端通过访问服务器的相关接口来获得服务,而不是直接访问Class文件。这样黑客就没有办法反编译Class文件。目前,通过接口提供服务的标准和协议也越来越多,例如 HTTP、Web Service、RPC等。但是有很多应用都不适合这种保护方式,例如对于单机运行的程序就无法隔离Java程序。这种保护方式见图1所示。



                                 图1隔离Java程序示意图   

    2. 对Class文件进行加密  
          为了防止Class文件被直接反编译,许多开发人员将一些关键的Class文件进行加密,例如对注册码、序列号管理相关的类等。在使用这些被加密的类之前,程序首先需要对这些类进行解密,而后再将这些类装载到JVM当中。这些类的解密可以由硬件完成,也可以使用软件完成。
      在实现时,开发人员往往通过自定义ClassLoader类来完成加密类的装载(注意由于安全性的原因,Applet不能够支持自定义的 ClassLoader)。自定义的ClassLoader首先找到加密的类,而后进行解密,最后将解密后的类装载到JVM当中。在这种保护方式中,自定义的ClassLoader是非常关键的类。由于它本身不是被加密的,因此它可能成为黑客最先攻击的目标。如果相关的解密密钥和算法被攻克,那么被加密的类也很容易被解密。这种保护方式示意图见图2。
       
                                      图2 对Class文件进行加密示意图


    3. 转换成本地代码  
    将程序转换成本地代码也是一种防止反编译的有效方法。因为本地代码往往难以被反编译。开发人员可以选择将整个应用程序转换成本地代码,也可以选择关键模块转换。如果仅仅转换关键部分模块,Java程序在使用这些模块时,需要使用JNI技术进行调用。
      当然,在使用这种技术保护Java程序的同时,也牺牲了Java的跨平台特性。对于不同的平台,我们需要维护不同版本的本地代码,这将加重软件支持和维护的工作。不过对于一些关键的模块,有时这种方案往往是必要的。
      为了保证这些本地代码不被修改和替代,通常需要对这些代码进行数字签名。在使用这些本地代码之前,往往需要对这些本地代码进行认证,确保这些代码没有被黑客更改。如果签名检查通过,则调用相关JNI方法。这种保护方式示意图见图3。
       
                               图3 转换成本地代码示意图  

    4. 代码混淆
    代码混淆是对Class文件进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能(语义)。但是混淆后的代码很难被反编译,即反编译后得出的代码是非常难懂、晦涩的,因此反编译人员很难得出程序的真正语义。从理论上来说,黑客如果有足够的时间,被混淆的代码仍然可能被破解,甚至目前有些人正在研制反混淆的工具。但是从实际情况来看,由于混淆技术的多元化发展,混淆理论的成熟,经过混淆的Java代码还是能够很好地防止反编译。下面我们会详细介绍混淆技术,因为混淆是一种保护Java程序的重要技术。图4是代码混淆的示图。    
                                图4 代码混淆示意图   

    几种技术的总结   
    以上几种技术都有不同的应用环境,各自都有自己的弱点,表1是相关特点的比较。   
    混淆技术介绍
      表1 不同保护技术比较表

          到目前为止,对于Java程序的保护,混淆技术还是最基本的保护方法。Java混淆工具也非常多,包括商业的、免费的、开放源代码的。Sun公司也提供了自己的混淆工具。它们大多都是对Class文件进行混淆处理,也有少量工具首先对源代码进行处理,然后再对Class进行处理,这样加大了混淆处理的力度。目前,商业上比较成功的混淆工具包括JProof公司的1stBarrier系列、Eastridge公司的JShrink和 4thpass.com的SourceGuard等。主要的混淆技术按照混淆目标可以进行如下分类,它们分别为符号混淆(Lexical Obfuscation)、数据混淆(Data Obfuscation)、控制混淆(Control Obfuscation)、预防性混淆(Prevent Transformation)。
      符号混淆
      在Class中存在许多与程序执行本身无关的信息,例如方法名称、变量名称,这些符号的名称往往带有一定的含义。例如某个方法名为 getKeyLength(),那么这个方法很可能就是用来返回Key的长度。符号混淆就是将这些信息打乱,把这些信息变成无任何意义的表示,例如将所有的变量从vairant_001开始编号;对于所有的方法从method_001开始编号。这将对反编译带来一定的困难。对于私有函数、局部变量,通常可以改变它们的符号,而不影响程序的运行。但是对于一些接口名称、公有函数、成员变量,如果有其它外部模块需要引用这些符号,我们往往需要保留这些名称,否则外部模块找不到这些名称的方法和变量。因此,多数的混淆工具对于符号混淆,都提供了丰富的选项,让用户选择是否、如何进行符号混淆。
      数据混淆
     
      图5 改变数据访问
      数据混淆是对程序使用的数据进行混淆。混淆的方法也有多种,主要可以分为改变数据存储及编码(Store and Encode Transform)、改变数据访问(Access Transform)。
      改变数据存储和编码可以打乱程序使用的数据存储方式。例如将一个有10个成员的数组,拆开为10个变量,并且打乱这些变量的名字;将一个两维数组转化为一个一维数组等。对于一些复杂的数据结构,我们将打乱它的数据结构,例如用多个类代替一个复杂的类等。
      另外一种方式是改变数据访问。例如访问数组的下标时,我们可以进行一定的计算,图5就是一个例子。
      在实践混淆处理中,这两种方法通常是综合使用的,在打乱数据存储的同时,也打乱数据访问的方式。经过对数据混淆,程序的语义变得复杂了,这样增大了反编译的难度。

      控制混淆
      控制混淆就是对程序的控制流进行混淆,使得程序的控制流更加难以反编译,通常控制流的改变需要增加一些额外的计算和控制流,因此在性能上会给程序带来一定的负面影响。有时,需要在程序的性能和混淆程度之间进行权衡。控制混淆的技术最为复杂,技巧也最多。这些技术可以分为如下几类:
      增加混淆控制通过增加额外的、复杂的控制流,可以将程序原来的语义隐藏起来。例如,对于按次序执行的两个语句A、B,我们可以增加一个控制条件,以决定B的执行。通过这种方式加大反汇编的难度。但是所有的干扰控制都不应该影响B的执行。图6就给出三种方式,为这个例子增加混淆控制。
     
      图6 增加混淆控制的三种方式
      控制流重组重组控制流也是重要的混淆方法。例如,程序调用一个方法,在混淆后,可以将该方法代码嵌入到调用程序当中。反过来,程序中的一段代码也可以转变为一个函数调用。另外,对于一个循环的控制流,为可以拆分多个循环的控制流,或者将循环转化成一个递归过程。这种方法最为复杂,研究的人员也非常多。
      预防性混淆
      这种混淆通常是针对一些专用的反编译器而设计的,一般来说,这些技术利用反编译器的弱点或者Bug来设计混淆方案。例如,有些反编译器对于 Return后面的指令不进行反编译,而有些混淆方案恰恰将代码放在Return语句后面。这种混淆的有效性对于不同反编译器的作用也不太相同的。一个好的混淆工具,通常会综合使用这些混淆技术。

    案例分析
      在实践当中,保护一个大型Java程序经常需要综合使用这些方法,而不是单一使用某一种方法。这是因为每种方法都有其弱点和应用环境。综合使用这些方法使得Java程序的保护更加有效。另外,我们经常还需要使用其它的相关安全技术,例如安全认证、数字签名、PKI等。
      本文给出的例子是一个Java应用程序,它是一个SCJP(Sun Certificate Java Programmer)的模拟考试软件。该应用程序带有大量的模拟题目,所有的题目都被加密后存储在文件中。由于它所带的题库是该软件的核心部分,所以关于题库的存取和访问就成为非常核心的类。一旦这些相关的类被反编译,则所有的题库将被破解。现在,我们来考虑如何保护这些题库及相关的类。
      在这个例子中,我们考虑使用综合保护技术,其中包括本地代码和混淆技术。因为该软件主要发布在Windows上,因此转换成本地代码后,仅仅需要维护一个版本的本地代码。另外,混淆对Java程序也是非常有效的,适用于这种独立发布的应用系统。
      在具体的方案中,我们将程序分为两个部分,一个是由本地代码编写的题库访问的模块,另外一个是由Java开发的其它模块。这样可以更高程度地保护题目管理模块不被反编译。对于Java开发的模块,我们仍然要使用混淆技术。该方案的示意图参见图7。
     
      图7 SCJP保护技术方案图
      对于题目管理模块,由于程序主要在Windows下使用,所以使用C++开发题库访问模块,并且提供了一定的访问接口。为了保护题库访问的接口,我们还增加了一个初始化接口,用于每次使用题库访问接口之前的初始化工作。它的接口主要分为两类:
      1. 初始化接口
      在使用题库模块之前,我们必须先调用初始化接口。在调用该接口时,客户端需要提供一个随机数作为参数。题库管理模块和客户端通过这个随机数,按一定的算法同时生成相同的SessionKey,用于加密以后输入和输出的所有数据。通过这种方式,只有授权(有效)的客户端才能够连接正确的连接,生成正确的 SessionKey,用于访问题库信息。非法的客户很难生成正确的SessionKey,因此无法获得题库的信息。如果需要建立更高的保密级别,也可以采用双向认证技术。
      2. 数据访问接口
      认证完成之后,客户端就可以正常的访问题库数据。但是,输入和输出的数据都是由SessionKey所加密的数据。因此,只有正确的题库管理模块才能够使用题库管理模块。图8时序图表示了题库管理模块和其它部分的交互过程。

       

    原文地址:http://www.cnblogs.com/dartagnan/archive/2011/03/24/2003434.html

    展开全文
  • VS代码反编译工具

    2014-04-28 13:31:18
    NET Reflector7.0.0.420 破解版,对.net程序反编译代码工具。
  • 一、代码反编译工具.NET Reflector 直接查看exe源代码,类似Java的jad。为了防止别人破解代码,自然用到代码混淆工具。用法很简单,直接打开exe即可,默认显示反编译的变量,如果要查看类里的方法,点击下方的...

    最近在开发C#程序,为了保证代码不被破解,经过对比,发现有几款工具很不错。接下来逐个进行介绍。

    一、代码反编译工具.NET Reflector  

    直接查看exe源代码,类似Java的jad。为了防止别人破解代码,自然用到代码混淆工具。用法很简单,直接打开exe即可,默认显示反编译的变量,如果要查看类里的方法,点击下方的extend method即可。


    二、dotfuscator 代码混淆。

    混淆工具,vs2010自带的版本已经到了Dotfuscator5.0版了.官方解释是:“PreEmptive Solutions 的生成后检测服务提供模糊处理、篡改防御、存储期限和运行时智能等功能。”具体用法自行百度即可。


    经过混淆的exe,也可以被反编译,但是基本已经看不到源代码的本来面目了。


    展开全文
  • 我们在学习动态代理的实现原理时往往希望能够将字节码文件反编译出来看一下代理类时如何调用handler的invoke方法来实现代理的,但是往往我们不知道如何下载字节码文件,或者下载来不知道下载路径,又或者使用javap...
  • Reko不仅包含核心反编译引擎和后端代码分析模块,而且还提供了用户友好的操作界面。目前,该工具提供了Windows GUI和ASP.NET后端。反编译引擎需要从前端获取用户的输入,可接受的输入为单独的可执行文件或反编译项目...
  • erlang 代码反编译

    千次阅读 2015-05-19 15:52:53
    debug编出来的代码才可以哦。。 1、{ok, {_, [{abstract_code, {_, Ac}}]}} = beam_lib:chunks(code:which(a), [abstract_code]). 2、io:fwrite("~s~n", [erl_prettypr:format(erl_...如果不想代码反编译,就在
  • 假如你丢失了你的代码工程源程序而只有可执行文件:如果源程序已不可得则反向工程(反编译)是有用的。 耶,“源程序不可得”,这是否意味着我们可以反编译别的程序员开发的工程呢?嗯,对也不对...... ...
  • 通过IDEA进行class文件代码反编译

    千次阅读 2020-07-06 14:03:03
    JDK7的新特性switch语句的表达式可以为字符串,如何通过IEDA反编译来查看代码运行原理 如编写如下代码,然后点击下图按钮查看工程结构 2.在弹出的窗口中查看输出的class文件所在位置 3.然后复制文件路径在资源管理...
  • “能够从理论上完全解决Java代码反编译的问题,Java指令转换为汇编指令前能无缝接入几维虚拟机保护。”目前,市面上安卓的APP应用通常采用Java语言编写的,由于其开发门槛低,容易被反编译。黑客通过反编译APK得到...
  • Android反编译xml文件 分类: Android开发 2012-04-19 14:46 15591人阅读 评论(3) 收藏 举报 androidxmllayoutencodingtools工具 一、前言: 大家好,今天给大家分享一下Android中的拿来主义,我们时常会碰到...
  • Lua代码加密,防止代码反编译

    千次阅读 2018-06-11 11:19:37
    加密目的:在游戏开发中,脚本作为一种资源文件,就像图片视频一样,被引擎所引用。如果不对脚本进行加密,不怀好意的人轻松解压出脚本文件,给...安全,混淆、虚拟化、碎片代码黑、定制SDK等最新加密安全技术。...
  • C#代码反编译",大家可能都会想到 Reflector代码反编译工具,对其应该也不会太陌生;做C#开发,它算得上是一个不可或缺的实用工具。通过它我们可以很方便的查看一个程序集的源代码(这是其最基本的使用,也是...
  • Eclipse实现代码反编译

    2017-11-28 20:47:22
    1.先下载jadClipse的jar包。 2.将net.sf.jadclipse_3.3.0.jar拷贝到eclipse的plugins目录... 3.再删除eclipse的configuration目录下org.eclipse.update文件。 ...5.下载jad的可执行文件,解压后放在某一磁盘中。...6.设置j
  • 转自:... 首先感谢 雨松MOMO 的一篇帖子 教我们怎么提取 .ipa 中的游戏资源。教我们初步的破解unity3d资源的基本方法 ...下面我会从头介绍一下提取的全过程:步骤一:首先从 ...
  • XJad2.2(Java源代码反编译工具) 立即下载 XJad是基于Jad核心的Java源程序反编译软件,内置Jad1.5.8e2。 XJad可处理多个*.class文件,可以处理文件夹内的所有文件,甚至可以处理*.jar文件。 XJad带有多页面文本...
  • android Apk 代码反编译

    2014-04-20 11:36:27
    需要准备工具 1 apktool-install-windows-r05-ibot |-aapt.exe |-apktool.bat |-apktool.jar (解压apk文件,获取相关资源,...(将解压得到的classes.dex反编译成可以查看的jar文件) 3 jd-gui.exe (查看反编
  • 反编译C#源代码,大家可能第一时间想到 .NET Reflector 这个工具。但是这个工具反编译出来的代码跟实际源码还是有一定差距的,阅读起来不是很便利。 本人在查看Visual Studio 2017 工具—选项—文本编辑器 时发现VS...
  • 首先感谢 雨松MOMO 的一篇帖子 教我们怎么提取 .ipa 中的游戏资源。教我们初步的破解unity3d资源的基本方法 附上原帖的链接: ... 下面我会从头介绍一下提取的全过程: 步骤一:首先从 ...DisUnity v
  • 推荐两款好用的代码反编译工具

    千次阅读 2018-01-24 11:23:01
    1、jd-gui  2、org.sf.feeling.decompiler_1.0.3-java反编译
  • 孤帆Java源代码反编译专家(C#源代码)

    千次阅读 2006-06-09 20:16:00
    在网路上有一个小有名气的[XXJava源代码反编译专家]的java字节码反编译软件.小弟乃菜鸟一个,心里好奇所以照着也就画了一个[孤帆Java源代码反编译专家],并把源代码(C#2.0)奉上,大家如果觉得还可以就支持支持,如有不妥...
  • 今天看到雨松博客里一个反编译的文章,瞎了一跳,所有用Unity开发的游戏的Android版本都可以通过反编译得到代码。。。 具体步骤是: 把apk解包一下,把里面的Assembly-CSCarp.dll 直接拖拽到 MonoDevelop的空白处...
  • mac中eclipse安装反编译插件。安装方式简单粗暴,直接点击下一步即可
  • 前阵子有需求去参考一个游戏 我功夫特牛 ...2.反编译C# 代码还原。 3.把二进制的spine文件反编译成 spine工程导出文件。 使用到的工具: AssetStudio.x64.v0.13.25 资源导出工具 Red Gate .NET Reflector 9.0...
  • 原帖:http://bbs.9ria.com/thread-401140-1-1.html   首先感谢 雨松MOMO 的一篇帖子 教我们怎么提取 .ipa 中的游戏资源。教我们初步的破解unity3d资源的基本方法附上原帖的链接:...
  • 对于那些没有加密的apk来说,得到源代码是比较容易的。比如,您按照下面这三步,就...2、反编译工具:dex2jar 和  jdgui 点击下载 3、apk文件,这个网上很多,随意下载尝试。 下面开始反编译: 第一步:

空空如也

1 2 3 4 5 ... 20
收藏数 13,723
精华内容 5,489
关键字:

代码反编译