个人技术博客二之apk反编译与加密
根据原文郭霖大神的博客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反编译与加密的更多相关文章
- Android开发学习总结(六)—— APK反编译
学习和开发Android应用有一段时间了,今天写一篇博客总结一下Android的apk文件反编译.我们知道,Android应用开发完成之后,我们最终都会将应用打包成一个apk文件,然后让用户通过手机或 ...
- Android开发学习总结(六)—— APK反编译(转)
学习和开发Android应用有一段时间了,今天写一篇博客总结一下Android的apk文件反编译.我们知道,Android应用开发完成之后,我们最终都会将应用打包成一个apk文件,然后让用户通过手机或 ...
- 【转】APK反编译
学习和开发Android应用有一段时间了,今天写一篇博客总结一下Android的apk文件反编译.我们知道,Android应用开发完成之后,我们最终都会将应用打包成一个apk文件,然后让用户通过手机或 ...
- apk 反编译
http://blog.csdn.net/vipzjyno1/article/details/21039349/ [置顶] Android APK反编译就这么简单 详解(附图) 标签: android ...
- Android APK反编译详解(附图)
转载自http://blog.csdn.net/sunboy_2050/article/details/6727581 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而 ...
- (转)Android APK反编译详解
转载地址:http://blog.csdn.net/ithomer/article/details/6727581 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到 ...
- Android APK反编译具体解释(附图)
这段时间在学Android应用开发,在想既然是用Java开发的应该非常好反编译从而得到源码吧,google了一下,确实非常easy,下面是我的实践过程. 在此郑重声明,贴出来的目的不是为了去破解人家的 ...
- Android APK反编译详解(附图) (转至 http://blog.csdn.net/ithomer/article/details/6727581)
本文Android反编译教程,测试环境: Win7 Ultimate x64 Ubuntu 12.04 x86_x64 反编译工具包 下载 (2012-10-10更新) 一.Apk反编译得到Java源 ...
- Android APK反编译详解
这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程. 在此郑重声明,贴出来的目的不是为了去破解人家的软件, ...
随机推荐
- 在Eclipse中,用XFire发布web服务
配置及相关说明见http://www.cnblogs.com/xshy3412/archive/2007/09/29/910848.html 仅确定发布xfire需要的最基本的jar activati ...
- mvc中的action验证登录(ActionFilterAttribute)
方法一 : 1.创建一个全局action过滤器 (在appstart 的filterconfig中注册 filters.Add(new LoginAttribute());) 2.不需要登 ...
- CodeBlocks "no such file or directory" 错误解决方案(创建类找不到头文件)
在CodeBlocks下,有时候需要自己定义类,当然就要添加相应的头文件,但添加进去的头文件明明包含在项目中了, 但编译时还是会报错:no such file or directory;这是为什么呢? ...
- angularjs 从外部改变controller内的数据
var appElement = document.querySelector('[ng-controller=seatsCtrl]'); var $scope = angular.element(a ...
- [javaSE] 变量的传值与传址
变量:就是将不确定的数据进行存储.也就是需要在内存中开辟一个空间 这个空间需要一个名称,这个名称就是变量名 基本数据类型:byte,short,int,long,double,float,char,b ...
- 中小型研发团队架构实践五:Redis快速入门及应用
Redis的使用难吗?不难,Redis用好容易吗?不容易.Redis的使用虽然不难,但与业务结合的应用场景特别多.特别紧,用好并不容易.我们希望通过一篇文章及Demo,即可轻松.快速入门并学会应用. ...
- python学习之老男孩python全栈第九期_day014知识点总结
# 迭代器和生成器# 迭代器 # 双下方法:很少直接调用的方法,一般情况下,是通过其他语法触发的# 可迭代的 --> 可迭代协议:含有__iter__的方法( '__iter__' in dir ...
- hadoop HA集群搭建步骤
NameNode DataNode Zookeeper ZKFC JournalNode ResourceManager NodeManager node1 √ √ √ √ node2 ...
- 使用sa-jdi.jar dump 内存中的class
前言 在分析一个 jar 包时发现他把关键类采用了运行时使用 classloader 的方式加载了.懒得分析算法了,可以使用 jdk 自带的工具 dump 出需要的class. 正文 从运行的java ...
- Nginx 配置多站点vhost
假设你想在Linux Nginx中用不同的域名访问不同的目录,这时就要配置多个vhost,具体配置如下,假设网站根目录设定在/var/www/ 1.在/var/www/下新建两个目录 /var/www ...