根据原文郭霖大神的博客Android安全攻防战,反编译与混淆技术完全解析

本人亲测反编译真的没有什么卵用,个人纯属好奇就去搜了一下,偷窃有罪,抄袭可耻。

  • 1.手机上的apk都是打包好的,直接安装使用。刚开始使用就是用的三个软件,后来又找到一个集三个软件大成的软件。后来更新了Android studio3.0发现它里面好像也有这个功能了。对于大神来说是有用的,貌似可以去广告神马的。对于我来说一开始是想看看成熟的软件是怎么写的,想到汇编都能反编译为什么apk不行?后来一搜真有。当时是高兴的,但是后来随着深入,我知道了反汇编也没用。知道了大多数都是有加密的,没有加密的你也是看不懂的这种。现在写这篇博客就是想告诉自己和他人,老老实实学技术,自己会的才是真的会的。抄袭加倍罚分数,助教们这招真的好。老老实实的去学习。说了这么多,不继续废话了,怎么样也算自己了解过的技术,就写出来让大家娱乐娱乐,引以为戒,不要浪费时间。
  • 2.首先介绍入门级三个软件
    • 1.apktool,下载后拿到apktool.bat和apktool.jar,然后把这两个工具放到哪都行。这个工具的作用主要是得到apk的资源文件和配置文件
    • 2.dex2jar 下载这个工具解压后放到任意盘都可以,后面主要用这个根据apk的classes.dev文件生成供jd-gui工具解析的jar。
    • 3.jd-gui上一步提到其作用,和2一样,也是下载后放到任意盘即可,到时候只要运行jd-gui.exe打开上一步生成的jar即可查看源码

      这是准备就绪了
      之后apktool d [-s] -f com.thinkernote.Team.apk -o app1
      com.thinkernote.Team.apk是一个已有的apk,这句的意思是把它反汇编之后的文件放到app1文件中。


      下面使用dex2jar

      • 1.把你将要反编译的apk的扩展名改成压缩包的扩展名(rar\zip等),然后对其解压,找到classes.dev文件,将之复制后贴到dex2jar底下
      • 2.命令行下输入d2j-dex2jar.bat classes.dex
        这是我第一步搞好的

        执行第二步

        结果


        得到classes_dex2jar.jar了,前面说了jd-gui的作用了,直接打开这个就行了,得到的就是源代码了。
  • 3.没错现在你可能感觉很开心以为你得到了as上能用的源代码。我当时也是这么想的,但是打开一看就心里凉了半截,虽然这份没加密

    这是我在Git上为了演示得到的app

有的加密了里面就会是

完全被混淆的这种,类名变成123,abc之类的完全无法阅读。这是为什么呢?
原来这里面带有as自带的防止你反汇编的机制
在Android Studio当中混淆APK实在是太简单了,借助SDK中自带的Proguard工具,只需要修改build.gradle中的一行配置即可。可以看到,现在build.gradle中minifyEnabled的值是false,这里我们只需要把值改成true,打出来的APK包就会是混淆过的了。如下所示:

release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}

这样就被混淆了。你在怎么厉害也没办法。剩下的几种我就不介绍了,原理都一样,学习永远没有近路,脚踏实地,老老实实。

个人技术博客二之apk反编译与加密的更多相关文章

  1. Android开发学习总结(六)—— APK反编译

    学习和开发Android应用有一段时间了,今天写一篇博客总结一下Android的apk文件反编译.我们知道,Android应用开发完成之后,我们最终都会将应用打包成一个apk文件,然后让用户通过手机或 ...

  2. Android开发学习总结(六)—— APK反编译(转)

    学习和开发Android应用有一段时间了,今天写一篇博客总结一下Android的apk文件反编译.我们知道,Android应用开发完成之后,我们最终都会将应用打包成一个apk文件,然后让用户通过手机或 ...

  3. 【转】APK反编译

    学习和开发Android应用有一段时间了,今天写一篇博客总结一下Android的apk文件反编译.我们知道,Android应用开发完成之后,我们最终都会将应用打包成一个apk文件,然后让用户通过手机或 ...

  4. apk 反编译

    http://blog.csdn.net/vipzjyno1/article/details/21039349/ [置顶] Android APK反编译就这么简单 详解(附图) 标签: android ...

  5. Android APK反编译详解(附图)

    转载自http://blog.csdn.net/sunboy_2050/article/details/6727581 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而 ...

  6. (转)Android APK反编译详解

    转载地址:http://blog.csdn.net/ithomer/article/details/6727581 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到 ...

  7. Android APK反编译具体解释(附图)

    这段时间在学Android应用开发,在想既然是用Java开发的应该非常好反编译从而得到源码吧,google了一下,确实非常easy,下面是我的实践过程. 在此郑重声明,贴出来的目的不是为了去破解人家的 ...

  8. Android APK反编译详解(附图) (转至 http://blog.csdn.net/ithomer/article/details/6727581)

    本文Android反编译教程,测试环境: Win7 Ultimate x64 Ubuntu 12.04 x86_x64 反编译工具包 下载 (2012-10-10更新) 一.Apk反编译得到Java源 ...

  9. Android APK反编译详解

    这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程. 在此郑重声明,贴出来的目的不是为了去破解人家的软件, ...

随机推荐

  1. Ubuntu18---VMware虚拟机中Ubuntu18.04系统,开机输入密码后无响应黑屏

    系统崩坏了,重装过几次,这次决定不充装了. 搜索大神解决方案后,了解到是图形界面程序损坏,可能是在更新内核或者安装软件的时候,把与xorg相关的文件给清除了. 解决方案如下: 1.登录系统进入,黑屏后 ...

  2. Docker容器打包成镜像 - OpenDaylight官方 SDN Hub Tutorial VM 的docker镜像

    由于工作需要,在看OpenDaylight (一个SDN的开源控制器) 官方Tutorial有一个比较基础且介绍比较详细的文档(http://sdnhub.org/tutorials/opendayl ...

  3. sql 数据库数据 批量判断修改

    A表B表相关联  更新B表中的VisitWeek字段值 CCD_PartnerVisit 此为B表 Dell_FiscalWeek  此为A表 UPDATE CCD_PartnerVisit SET ...

  4. out参数ref参数params 可变参数

    1.我们在主函数中调用其他函数,我们管主函数为调用者,其他函数为被调用者. 如果被调用者,想要得到调用者的值:传参 使用静态字段来模拟全局变量  在方法外类里写字段 public static _na ...

  5. iOS系统库头文件中NS_AVAILABLE相关

    转载: NS_AVAILABLE_IOS(5_0) 这个方法可以在iOS5.0及以后的版本中使用,如果在比5.0更老的版本中调用这个方法,就会引起崩溃. NS_DEPRECATED_IOS(2_0, ...

  6. vue+SSM验证码实现

    源码:https://github.com/HannahLihui/StudentManager-SSM/tree/master/SSM-git/StudentManager-SSM-master 1 ...

  7. SSM(Spring+SpringMVC+Mybstis)搭建,写给新手

    SSM框架——详细整合教程(Spring+SpringMVC+MyBatis) 作用: SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为 ...

  8. Spring Boot + MyBatis + Druid + Redis + Thymeleaf 整合小结

    Spring Boot + MyBatis + Druid + Redis + Thymeleaf 整合小结 这两天闲着没事想利用**Spring Boot**加上阿里的开源数据连接池**Druid* ...

  9. manven springmvc 项目中 slf4j 的配置使用(结合log4j 或者 logback)

    前言:每个maven springmvc 都应该有日志功能,SLF4J(Simple logging facade for Java)就是一种日志规范,它提供了一个共通接口,可以适配多种不同的LOG实 ...

  10. macbook usb口突然不能用 解决方法

    1.先按shift+ctrl+opt+开机键,等待10秒,着10秒是没有反应的,屏幕不会亮,系统不会跑起来.2.10秒过后松开所以的键.3.再按opt+cmd+r+p接着按开机键,这时电脑会不断重启, ...