`
hold_on
  • 浏览: 455710 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ProGuard混淆代码学习笔记 之 开启代码混淆

阅读更多

      这几天项目需要用到代码混淆来给项目代码提高安全性,由于项目忙,稍有研究,涉及不深;

略有收获,浅显总结,以备遗忘。

      大家都知道,没有经过混淆的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文件中的操作。      

        

       

        

    

     

 

  • 大小: 36.2 KB
  • 大小: 20.5 KB
分享到:
评论

相关推荐

    安卓逆向学习笔记(9)

    这份“安卓逆向学习笔记(9)”提供的资源,特别是第一届Alictf EvilApk300的题目和Apk,为深入理解这一领域提供了实践材料。以下是基于这些资源可能涉及的一些关键知识点的详细解释: 1. **APK结构**:APK是...

    安卓逆向语言smali学习笔记.rar

    5. **代码混淆**:了解如何防止逆向工程,比如使用ProGuard或R8进行代码混淆。混淆后的Smali代码会变得难以阅读,增加逆向分析的难度。 6. **动态分析**:结合Smali静态分析,还可以进行动态分析,例如使用 Frida ...

    Gson解析的Bean不能混淆.zip_java gson 防止混淆

    然而,在Android开发中,当我们进行代码混淆时,可能会遇到Gson解析的Bean不能混淆的问题。这个问题主要是由于混淆规则与Gson的序列化和反序列化机制冲突导致的。 首先,我们来理解一下什么是混淆。混淆是Android...

    安卓逆向学习笔记(2)

    同时,对于反混淆,我们需要熟悉常见的代码混淆技术,如ProGuard和R8,以及如何通过逆向手段还原混淆后的代码。 最后,安全方面,理解安卓权限模型和沙箱机制,以及如何绕过这些机制进行权限提升,是安卓逆向分析的...

    安卓逆向学习笔记(0)

    本篇内容将围绕"安卓逆向学习笔记(0)"这一主题展开,主要涵盖以下几个方面: 1. **基础知识**:在开始安卓逆向之前,我们需要了解Android应用的基本结构,如APK文件的组成(包含AndroidManifest.xml、Dex文件、资源...

    SPBT 源码学习笔记 - spbt-0707-test-java-web

    "YUANMA"在中文中可以理解为“原码”或“源码”的拼音,暗示了压缩包内可能包含SPBT学习笔记中的Java源代码示例。 基于以上信息,我们可以深入探讨以下几个知识点: 1. **Java Web开发**:Java Web是指使用Java...

    DEX文件学习笔记

    1. **ProGuard**:在构建过程中,开发者可以使用ProGuard对DEX文件进行混淆,降低逆向工程的难度。 2. **dexopt**:ART的dexopt优化进一步提高了DEX文件的运行效率,包括内联、常量传播、死代码消除等。 了解DEX...

    Android代码-小米便签源码.zip

    小米便签源码中可能包含了内存优化、耗电优化、启动速度优化等策略,例如使用Proguard进行代码混淆,减少APK体积;使用内存分析工具找出内存泄漏;通过Lint检查代码规范等。学习这些优化技巧,可以提升我们的应用在...

    Android应用源码之小米便签源代码分享.zip

    9. **混淆与打包**:源码可能包含ProGuard配置文件,展示了如何对应用进行混淆,以保护代码安全并减小APK体积。 10. **多语言支持**:源代码中的values目录下可能有不同语言的strings.xml文件,展示如何实现应用的...

    黑马程序员_从零开始征服Android之旅(第一季)源码和笔记

    这包括内存管理,避免内存泄漏,使用ProGuard进行代码混淆,以及通过Systrace和Traceview进行性能分析和调优。 通过黑马程序员的这套课程,你不仅可以学习到上述理论知识,还能通过配套的源码和笔记深入理解每个...

    Android斗地主Demo

    在发布应用时,为了保护代码安全和减小程序大小,通常会使用ProGuard进行代码混淆。 1.txt文件可能是开发过程中记录的一些临时数据或笔记,但具体内容需要打开查看才能确定。 .classpath和.project文件是Eclipse ...

    AndroidOpenLibraryNote:Android开源库使用学习笔记

    《Android开源库使用学习笔记》是一份专注于Java编程语言在Android平台上的实践指南,它涵盖了Android开发者在实际项目中常用的一些开源库的使用方法和技巧。这份笔记旨在帮助开发者更高效地利用开源库提升开发效率...

    2021年安卓逆向系统培训课程【视频课程】下载整理.zip

    6. **代码混淆与反混淆**:理解混淆的原理和反混淆策略,如使用ProGuard或R8混淆工具。 7. **安全编码实践**:如何编写不易被逆向的代码,防止恶意攻击。 8. **Android权限管理**:理解权限请求的机制及其与逆向工程...

    Android开发教程笔记完全版.zip

    16. **性能优化**:内存管理、绘制优化、使用ProGuard和DexGuard进行代码混淆和优化。 17. **单元测试与集成测试**:使用JUnit、Espresso进行应用的测试和验证。 18. **Gradle构建系统**:理解Gradle脚本,自定义...

    Android开发教程笔记完全版

    使用内存分析工具检测内存泄漏,通过异步编程和多线程提升应用响应速度,使用ProGuard和DexGuard进行代码混淆和优化,以提高应用安全性和运行效率。 十、Android测试 单元测试、UI测试、性能测试是Android应用质量...

    android雪花飘落特效

    `proguard-rules.pro`文件是ProGuard的配置文件,用于代码混淆和优化。在发布应用时,为了保护代码安全和减小程序体积,可以启用ProGuard并在此文件中指定需要忽略的类或方法。 `libs`目录通常用来存放外部库的JAR...

    android应用性能优化最佳实践读书笔记

    使用ProGuard或R8进行代码混淆,提高APK的安全性。 8. **响应式编程**:了解并使用RxJava或 LiveData、Room等库,实现响应式编程,可以使应用程序更健壮,提高代码可读性和维护性。 9. **性能监控**:使用Google ...

    WIFI扫描源码.zip

    7. **proguard.cfg**: ProGuard配置文件,用于代码混淆和优化,保护应用的源代码安全,防止反编译。在发布应用时,通常会启用ProGuard来减小APK大小并增加安全性。 8. **说明.htm**: 可能包含项目的介绍、使用指南...

Global site tag (gtag.js) - Google Analytics