精华内容
下载资源
问答
  • Android 反编译代码混淆里面工具和文档都很全,欢迎大家下载!
  • Spring Boot使用Allatori代码混淆的方法,内含详细文档、混淆所需的jar包、反编译工具
  • 如何看懂Java混淆后的反编译代码作者:dozb一般情况下Java应用的开发者为了保护代码不被别人抄袭,在生成class文件的时候都java文件进行了混淆,这种class文件用反编译工具得到的结果很难看懂,并且不能进行编译。...

    如何看懂Java混淆后的反编译代码

    作者:dozb

    一般情况下Java应用的开发者为了保护代码不被别人抄袭,在生成class文件的时候都java文件进行了混淆,这种class文件用反编译工具得到的结果很难看懂,并且不能进行编译。本文从研究的角度,浅析如何读懂这种反编译过来的文件。

    例子一:赋值

    反编译过来的代码如下:

    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 ;

    JVM INSTR dup ;

    JVM INSTR swap ;

    CrossTable();

    CrossTable crosstable;

    crosstable;

    原始语句:

    CrossTable crosstable = new CrossTable();

    注解:

    练习:

    JVM INSTR new #246 ;

    JVM INSTR dup ;

    JVM INSTR swap ;

    Database();

    Object obj;

    obj;

    例子三:带参数创建对象反编译过来的代码如下:

    JVM INSTR new #262 ;

    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 ;

    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);

    }

    展开全文
  • 怎么反编译已经混淆代码 有么有大神会嘛~~在线等 挺急的......
  • 代码混淆反编译apk需要下面3个工具 1、apktool(资源文件获取) 作用:资源文件获取,可以提取图片文件和布局文件进行使用查看 2、dex2jar(源文件获取) 作用:将APK反编译成java源码(classes.dex转化成jar文件) ...
  • 通用的代码混淆工具ConfuserEx和代码反编译工具ILSpy,适用于windows桌面exe软件。
  • 代码混淆反编译

    千次阅读 2016-09-05 10:47:54
    代码混淆就是代码加密,让别人看不到自己的代码,当然这只是相对的,并不能完全的加密,大公司都会有单独的加密方式,防止被窃取,这里讲的混淆只是灰常灰常简单的一种方式,其实就是一句话,但是也起到了加密的效果...

          代码混淆

            代码混淆就是代码加密,让别人看不到自己的代码,当然这只是相对的,并不能完全的加密,大公司都会有单独的加密方式,防止被窃取,这里讲的混淆只是灰常灰常简单的一种方式,其实就是一句话,但是也起到了加密的效果。

           1、打开项目project.properties

    2、在此文件下面添加一句话:

    了。。这就完成加密操作了。。。。

           当然,加密的时候也可以选择不想加密的文件,比如XML文件,那么只需要在混淆文件(txt格式的就是混淆文件)中同样的添加一句话即可,如图:

    这里 com.example.proguarddemo.StudentA是你所创建的包名和文件。

    -----------------------代码混淆就完成了-------------------------

    反编译

           现在很多开发工程师都不清楚如何反编译,就是可以拿别人的apk来学习,当然前提是没有加密的,如果加密,反编译出来的文件是.smali格式。一会给大家看一下未加密和加密反编译以后的对比。

    1、选择项目,点击鼠标右键选择Export,导出APK。

    以上导出APK的步骤。


    2、下载反编译软件,这里用的是逆向助手。


    3、在APK后缀加.zip,然后解压,会出现class.dex文件,打开软件选择dex转jar, 再把文件拖入到逆向助手的源文件上:


    就可以得到项目的源文件了。

    展开全文
  • 防止反编译混淆工具

    2018-05-31 16:20:07
    .NET Reactor是一款功能强大的代码保护以及许可授权管理系统软件,允许.NET软件开发人员能够轻松,安全地保护他们的应用程序。...它完全避免写在VB.NET,C#,J#,Delphi.NET等任何反编译.NET程序集,通过各种方法。
  • 资源中提供了详细使用说明以及样例,使用方便 将需要加密混淆的jar包放到指定目录,运行加密的指令,生成混淆后的jar包。使用混淆后的jar包可以有效防止反编译,并且不影响正常运行 强烈推荐
  • 反编译apk需要下面3个工具: 1. apktool (资源文件获取) 作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看 2. dex2jar(源码文件获取) 作用:将apk反编译成java源码(classes.dex转化成...

    要反编译apk需要下面3个工具:
    1. apktool (资源文件获取)
    作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看
    2. dex2jar(源码文件获取)
    作用:将apk反编译成java源码(classes.dex转化成jar文件)
    3. jd-gui
    作用:查看APK中classes.dex转化成出的jar文件,即源码文件
    反编译资源文件的方法
    反编译得到资源文件
    1. 解压apktool.rar, 其中包含3个文件:aapt.exe,apktool.bat,apktool.jar 将需要反编译的APK文件放到该目录下
    2. 在命令行中定位到apktool文件夹,输入以下命令:apktool.bat d -f test.apk test
    说明: 命令中test.apk指的是要反编译的APK文件全名,test为反编译后资源文件存放的目录名称,
    即为:apktool.bat d -f [apk文件 ] [输出文件夹]
    3.可以查看资源目录是否反编译有效

    反编译类文件的方法
    方式一:反编译得到Java类
    1. 解压dex2jar-0.0.9.15.zip得到dex2jar-0.0.9.15文件夹, 其中包含dex2jar.bat及其相关文件
    2. 将apk文件改为xx.zip文件, 解压zip文件得到其中的classes.dex文件, 将其复制到dex2jar-0.0.9.15文件夹中
    3. 在命令行中定位到dex2jar-0.0.9.15文件夹, 输入以下命令: dex2jar.bat classes.dex, 会生成一个文件: classes_dex2jar.jar
    4. 解压jd-gui-0.3.5.windows.zip得到jd-gui.exe, 运行jd-gui.exe, 并用它打开生成的jar文件


    方式二:可以直接使用smali2java工具
    什么是smali?smali是将Android字节码用可阅读的字符串形式表现出来的一种语言,可以称之为Android字节码的反汇编语言。
    smali2java工具基于apktool v1.5.0(baksmali v1.3.4)生成的smali文件,依赖于smali文件中的代码行数(.line关键字)和变量别名(.local关键字)等信息,可以最大程度还原原始的java代码。还原出的java代码将具有原始的变量命名,代码的顺序也与原始的java代码保持一致。因此,本工具也具有局限性,仅适用于带有行数和变量别名信息的smali文件(java编译器的编译选项可以在生成的字节码中剔除这些信息)。

    混淆代码
    1. 修改module下的build.gradle
    buildTypes {
    release {
    // 是否进行混淆
    minifyEnabled true
    // 混淆文件的位置
    // proguard是一个压缩、优化和混淆Java字节码文件的免费的工具
    proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’
    }
    }
    2. 在proguard-rules.pro中添加:
    #指定代码的压缩级别
    -optimizationpasses 5

     #包明不混合大小写
     -dontusemixedcaseclassnames
    
     #不去忽略非公共的库类
     -dontskipnonpubliclibraryclasses
    
      #优化  不优化输入的类文件
     -dontoptimize
    
      #预校验
     -dontpreverify
    
      #混淆时是否记录日志
     -verbose
    
      # 混淆时所采用的算法
     -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
    
     #保护注解
     -keepattributes *Annotation*
    
     # 保持哪些类不被混淆
     -keep public class * extends android.app.Fragment
     -keep public class * extends android.app.Activity
     -keep public class * extends android.app.Application
     -keep public class * extends android.app.Service
     -keep public class * extends android.content.BroadcastReceiver
     -keep public class * extends android.content.ContentProvider
     -keep public class * extends android.app.backup.BackupAgentHelper
     -keep public class * extends android.preference.Preference
     -keep public class com.android.vending.licensing.ILicensingService
     #如果有引用v4包可以添加下面这行
     -keep public class * extends android.support.v4.app.Fragment
    
    
    
     #忽略警告
     -ignorewarning
    
     ##记录生成的日志数据,gradle build时在本项目根目录输出##
    
     #apk 包内所有 class 的内部结构
     -dump class_files.txt
     #未混淆的类和成员
     -printseeds seeds.txt
     #列出从 apk 中删除的代码
     -printusage unused.txt
     #混淆前后的映射
     -printmapping mapping.txt
    
     ########记录生成的日志数据,gradle build时 在本项目根目录输出-end######
    
    
     #####混淆保护自己项目的部分代码以及引用的第三方jar包library#######
    
     #-libraryjars libs/umeng-analytics-v5.2.4.jar
    
     #三星应用市场需要添加:sdk-v1.0.0.jar,look-v1.0.1.jar
     #-libraryjars libs/sdk-v1.0.0.jar
     #-libraryjars libs/look-v1.0.1.jar
    
     #如果不想混淆 keep 掉
     -keep class com.lippi.recorder.iirfilterdesigner.** {*; }
     #友盟
     -keep class com.umeng.**{*;}
     #项目特殊处理代码
    
     #忽略警告
     -dontwarn com.lippi.recorder.utils**
     #保留一个完整的包
     -keep class com.lippi.recorder.utils.** {
         *;
      }
    
     -keep class  com.lippi.recorder.utils.AudioRecorder{*;}
    
    
     #如果引用了v4或者v7包
     -dontwarn android.support.**
    
     ####混淆保护自己项目的部分代码以及引用的第三方jar包library-end####
    
     -keep public class * extends android.view.View {
         public <init>(android.content.Context);
         public <init>(android.content.Context, android.util.AttributeSet);
         public <init>(android.content.Context, android.util.AttributeSet, int);
         public void set*(...);
     }
    
     #保持 native 方法不被混淆
     -keepclasseswithmembernames class * {
         native <methods>;
     }
    
     #保持自定义控件类不被混淆
     -keepclasseswithmembers class * {
         public <init>(android.content.Context, android.util.AttributeSet);
     }
    
     #保持自定义控件类不被混淆
     -keepclassmembers class * extends android.app.Activity {
        public void *(android.view.View);
     }
    
     #保持 Parcelable 不被混淆
     -keep class * implements android.os.Parcelable {
       public static final android.os.Parcelable$Creator *;
     }
    
     #保持 Serializable 不被混淆
     -keepnames class * implements java.io.Serializable
    
     #保持 Serializable 不被混淆并且enum 类也不被混淆
     -keepclassmembers class * implements java.io.Serializable {
         static final long serialVersionUID;
         private static final java.io.ObjectStreamField[] serialPersistentFields;
         !static !transient <fields>;
         !private <fields>;
         !private <methods>;
         private void writeObject(java.io.ObjectOutputStream);
         private void readObject(java.io.ObjectInputStream);
         java.lang.Object writeReplace();
         java.lang.Object readResolve();
     }
    
     #保持枚举 enum 类不被混淆 如果混淆报错,建议直接使用上面的 -keepclassmembers class * implements java.io.Serializable即可
     #-keepclassmembers enum * {
     #  public static **[] values();
     #  public static ** valueOf(java.lang.String);
     #}
    
     -keepclassmembers class * {
         public void *ButtonClicked(android.view.View);
     }
    
     #不混淆资源类
     -keepclassmembers class **.R$* {
         public static <fields>;
     }
    
     #避免混淆泛型 如果混淆报错建议关掉
     #–keepattributes Signature
    
     #移除log 测试了下没有用还是建议自己定义一个开关控制是否输出日志
     #-assumenosideeffects class android.util.Log {
     #    public static boolean isLoggable(java.lang.String, int);
     #    public static int v(...);
     #    public static int i(...);
     #    public static int w(...);
     #    public static int d(...);
     #    public static int e(...);
     #}
    
     #如果用用到Gson解析包的,直接添加下面这几行就能成功混淆,不然会报错。
     #gson
     #-libraryjars libs/gson-2.2.2.jar
     -keepattributes Signature
     # Gson specific classes
     -keep class sun.misc.Unsafe { *; }
     # Application classes that will be serialized/deserialized over Gson
     -keep class com.google.gson.examples.android.model.** { *; }
    
    展开全文
  • XenocodePostbuild2010forNET 可能你一看这个名字就知道了,里面包含Lisense 我的所有资源都是免费的。之前下载别人的都是要分的,凡是要分的,我都下载过来以后再上传到我这里,免费给大家使用
  • 往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用的APK进行反编译查看和学习。...
  • 支持war和jar文件格式,并且允许对需要混淆代码的应用程序添加有效日期。 有项目需要对代码进行保护,比较初级的方案就是对代码进行混淆,打包之后的文件进行反编译后,就可以看到效果。此外,使用Allatori打的包...
  • Android如何防止apk程序被反编译 亲自测试 完美混淆
  • 经常听开发提起代码混淆引起的BUG,混淆后在测试一下有没有问题,那问题来了什么是代码混淆,怎么确认代码混淆成功了,带着问题读下文吧~~ 一、代码混淆的原理 代码混淆是将程序中的代码,等价转换为难以阅读理解的...

    序言:
    经常听开发提起代码混淆引起的BUG,混淆后在测试一下有没有问题,那问题来了什么是代码混淆,怎么确认代码混淆成功了,带着问题读下文吧~~

    一、代码混淆的原理

    代码混淆是将程序中的代码,等价转换为难以阅读理解的行为,提高攻击者阅读理解代码的难度,提高安全性,可以有效的提高应用被逆向破解的难度
    

    二、代码混淆的方法

    1.字符串加密:对应用程序中使用的字符串进行加密,防止获取关键词定位核心业务代码
    
    2.类名、方法名混淆:讲代码中类名,方法名,属性名替换成无意义的符号,增加代码逆向难度,这种方式也是在java中最常用到的方式~
    
    3.程序结构混淆:代码结构进行打乱混排,把源码的可读性降到最低。
    

    三、如何反编译apk,查看代码混淆

    1.准备工作

    	dex2jar:将apk反编译成java源码的工具(classes.dex转化成jar文件)
    	
    	jd-gui:查看APK中classes.dex转化成出的jar文件,即源码文件
    

    2.把dex2jiar.zip 和 gui 解压到当前文件夹
    解压

    3.把apk后缀更改为.ZIP格式解压到当前文件夹
    apk

    4.在解压后的apk文件夹中找到classes.dex文件,拖动到dex2jar-2.0文件夹
    classes

    5.dex2jar-2.0文件夹中,cmd运行

    d2j-dex2jar classes.dex
    

    cmd
    生成class-dex2jar.jar文件
    class-dex2jar.jar
    6.使用gui查看反编译后的java源码,打开后把上面转换完的文件直接拖入
    在这里插入图片描述
    7.看到的代码就是混淆后的代码啦~~~

    jar

    这里不是起点~
    也不是终点~

    展开全文
  • NULL 博文链接:https://zochen.iteye.com/blog/682643
  • 代码混淆—关于android被反编译的两种解决方案,使用方法参见我的博文:http://blog.csdn.net/online1989/article/details/7058743
  • 反编译代码混淆问题小分析

    千次阅读 2017-06-23 09:25:25
    通过反编译工具反编译代码出现了混淆 语法不同了  1.案例一 反编译后方法代码 public static boolean getName(Context paramContext) { int i = Settings.System.getInt(paramContext.getContentResolver...
  • c# .net exe应用程序代码混淆反编译必用工具
  • 前言包括以下内容要反编译apk需要下面3个工具反编译资源文件反编译类文件代码混淆反编译apk需要下面3个工具apktool(资源文件获取)作用:资源文件获取,可以提取图片文件和布局文件进行使用查看dex2jar(源文件获取)...
  • 你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用的APK进行反编译查看。下面是我参考...
  • java反编译工具可以直接对文件夹进行扫描,批量混淆压缩工具需要。net高版本支持
  • NULL 博文链接:https://913.iteye.com/blog/1482126
  • 反编译混淆加密代码教程

    千次阅读 2016-09-05 16:06:25
    计算机软件反向工程(Reverse engineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(比如可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理...
  • 贾巴 [FORGE] JABBA for MC 1.7.10 反编译和反混淆代码
  • Android代码混淆反编译

    千次阅读 2015-05-22 15:26:55
    如果你目前还是一名学生或是...而在企业中对Java代码混淆却是一步很重要的步骤,从安全的角度来说,代码混淆,防止居心不良的人对代码进行恶意篡改非常重要。下面就是对Android项目进行的代码混淆和加密签名过程。
  • java的编译代码混淆

    2021-01-11 15:29:26
    下面是反编译没有做混淆的jar包源代码 下面是反编译做了混淆的jar包源代码 pom中加入以下内容 <!-- Allatori plugin start --> <plugin> <groupId>org.apache.maven.plugins</groupId>...
  • 所以一个按照正常方式编译的 Java .class 文件可以非常轻易地被反编译。通常情况下,反编译可以利用现有的工具jd-gui.exe或者jad.exe。(这两个反编译工具在我的资源里有下载:有些情况下,为了保护java源码不被别人...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,496
精华内容 14,198
关键字:

反编译混淆代码查看