• android 程序反编译、通过添加proguard.cfg文件实现代码混淆防止反编译


    1.对android apk进行反编译查看源代码

    准备一个apk,并对其进行解压缩

    解压后得到以下目录

    在这里可以查看程序中用到的所有图片资源,但看不到所有的代码,都是乱码。这里需要用到dex2jar,这个工具进行反编译,下载这个工具后,存到本地,比如我的地址是D:apk2javadex2jar-0.0.9.13

    复制classes.dex这个文件到这个文件夹下

    上图就是复制进去后dex2jar-0.0.9.13这个文件夹的目录,打开控制台,定位到该文件夹,并使用dex2jar.bat对classes.dex文件进行编译

    最后输出done,说明编译完成,这个时候dex2jar-0.0.9.13这个文件夹中会多出一个文件classes_dex2jar.jar,现在需要第二个工具jd-gui

    下载后,打开jd-gui这个程序

    在这个工具中打开classes_dex2jar.jar这个文件File->Open File

    这个时候就可以看到apk代码的目录,若未进行过防止反编译的操作,在这里就能看到项目源码,若已做过防止反编译的操作,这里所有的类名都会用字母代替,代码随不是乱码,带也看不懂其中的逻辑操作。

    2.进行代码混淆,防止反编译

    若项目中没有proguard.cfg文件,手动添加

    新建文本,输入以下代码

    -dontwarn  //若项目中导入了第三方jar包,需要添加该行
    -optimizationpasses 5
    -dontusemixedcaseclassnames
    -dontskipnonpubliclibraryclasses
    -dontpreverify
    -verbose
    -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
    
    -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 com.android.vending.licensing.ILicensingService
    
    -keepclasseswithmembernames class * {
    native <methods>;
    }
    
    -keepclasseswithmembernames class * {
    public <init>(android.content.Context, android.util.AttributeSet);
    }
    
    -keepclasseswithmembernames class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
    }
    
    -keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
    }
    
    -keep class * implements android.os.Parcelable {
    public static final android.os.Parcelable$Creator *;
    }

    重命名文本为proguard.cfg

    将该文件复制到项目中,与AndroidManifest.xml文件在同一层

    打开project.properties文件,添加以下内容

    proguard.config=proguard.cfg

    保存,右击项目名->Android-Tools->Export Unsigned Application Package

    生成项目apk,混淆完成

    若该过程中报 java.io.IOException: Please correct the above warnings这个错误,可能是忘记在proguard.cfg中添加  -dontwarn  添加后重试。

  • 相关阅读:
    Gauss 消元(模板)
    hdu 5755(Gauss 消元) &poj 2947
    poj 1681(Gauss 消元)
    POJ 1830 开关问题(Gauss 消元)
    4320: ShangHai2006 Homework
    1483: [HNOI2009]梦幻布丁
    3495: PA2010 Riddle
    1997: [Hnoi2010]Planar
    POJ 3683 Priest John's Busiest Day
    POJ 3678 Katu Puzzle
  • 原文地址:https://www.cnblogs.com/dcxz/p/3718581.html
Copyright © 2020-2023  润新知