这几天项目需要用到代码混淆来给项目代码提高安全性,由于项目忙,稍有研究,涉及不深;
略有收获,浅显总结,以备遗忘。
大家都知道,没有经过混淆的APK,加压后,可以直接将APK加压后的 classes.dex 文件反
编译成jar包,然后就可以对其中的关键代码与实现一览无余。
现在来看看,如何将APK反编译出来:
1、将APK解压出来,会有一个 classes.dex 文件
2、得到了 clases.dex 文件,将其 还原成 .jar 包,这一步需要用到一个工具 --dex2jar
(谷歌的代码库里有 http://code.google.com/p/dex2jar/)
将其下载下来,然后解压,解压目录中会有一个 dex2jar.bat
将 1 中解压出的classe.dex 拷贝到dex2jar的解压目录中,然后在命令行执行
"dex2jar.bat classes.dex",之后在解压目录中会看到多出一个名叫“classes.dex.dex2jar.jar”
的jar文件
3、查看 .jar 文件,这一步就是传统的反编译了,我们需要用到一个辅助工具 :jd-gui
(http://java.decompiler.free.fr/?q=jdgui)
下载后,用jd-gui 打开.jar 文件,就能查看到反编译后的代码了
没有经过混淆的项目,反编译之后的代码和你项目中的代码相差无几了。
现在来讲讲如何混淆代码:
现在看android-sdks\tools目录下,会有一个proguard文件夹
这里google已经做了很多,但是是在2.3及其以后的版本。
在进入proguard文件夹,会有一个proguard-android.txt文件
这个就是google默认的混淆代码的默认配置文件(虽说是默认,但还是需要在android工程中开启)
接下来在新建的Android工程目录下 会有 两个配置文件 分别是project.properties 和 proguard-android.txt(注意2.3和4.0以后版本这两个文件名有略微区别),这里就需要在project.properties开启混淆代码设置,看到这句没:
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
将下面这句注释取消掉,意思就是执行 android-sdks/tools/proguard/proguard-android.txt 和你项目当前目录下得proguard-android.txt文件中的操作。
相关推荐
proguard混淆打包工具proguard混淆打包工具proguard混淆打包工具
实现maven管理的Javaweb项目的proguard代码混淆功能、工具包下载及错误解决
基于springboot搭建一个简单案例,利用proguard插件实现代码混淆,增加源代码的阅读和理解的难度, 并不能百分百保证代码安全。常用的应用场景是项目需要部署到客户机器上,一定程度上防止代码泄露。 ProGuard 是一个...
一步步教你使用Proguard混淆Java源代码 .docx
修改Proguard混淆规则,自定义字符集,使用详情https://blog.csdn.net/u011106915/article/details/84636592
java代码很容易被反编译,可通过混淆技术来保护源码,此处我们应用开源项目proguard来进行混淆。操作使用详见:http://blog.csdn.net/odian1/article/details/8282799
J2EE-web工程ProGuard代码混淆
自己写的proguard4.7代码混淆器使用详细说明,之前在网上找了一大堆都还是不会用,或不全,研究了一天,终于达到自己想要的结果,在此总结下,写成文档,一边以后需要,也供大家学习学习,工具包就不上传了,网上一...
WEB Maven 项目 ProGuard 混淆方案 POM文件,包含详细混淆注释 具体请参考博客: http://blog.csdn.net/wltj920/article/details/48970869#comments
proguard混淆jar包提示错误:Unknown verification type [*] in stack map frame 解决方案:找到proguard源码中proguard\src\proguard\classfile\ClassConstants.java类,然后修改ATTR_StackMapTable的值,将原来的...
基于SpringBoot+Maven多模块工程利用proguard组件实现代码混淆的代码demo,代码清晰完整,导入idea或eclipse即可运行。 使用 proguard 混淆代码只能增加阅读和理解的难度, 并不能百分百保证代码安全。常用的应用...
本实例使用的是把web项目中的源码(src)所有文件打包成jar文件,使用proguard混淆后再把jar文件以及jar解压后的混淆class类文件替换原war项目的相应位置即可。 混淆过程中需要使用keep参数来保持原有一些属性、注解...
ProGuard混淆与dex2jar反编译工具
jar包的混淆工具(proguard5.3.3)及其混淆步骤,错误解决!
java代码混淆器proGuard,可以混淆函数变量、类、方法名以实现代码加密
混淆了四天,亲测可用,建议先从网上浏览proguard用法,特别是四步骤中混淆那一步,最重要,及验证是否能够省略
java代码混淆工具 简单使用docx 字典文件 生成的配置示例
springboot工程(单个maven工程)利用proguard实现代码混淆 java demo案例
看了好多博客论坛对proguard混淆android/java代码的介绍,自己用起来总出错。现总结具体用法步骤,并亲测无误,其中不乏参考之处还请见谅!