android去权限反编译,签名,zipalign优化

反编译:上工具ApkTool

下载自行搜索google  apktool github

cd apktool目录

java -jar apktool_2.0.1.jar d xx.apk

生成xx目录即反编译的文件,配置以及资源文件可以直接编辑,但是java源码在smali目录,是smali文件.

java -jar apktool_2.0.1.jar b xx

回编译成apk,现在不能直接安装使用,可以USB调试安装,即adb install -r xx.apk

签名:jdk自带签名法

需要用到keytool.exe (位于jdk1.6.0_24\jre\bin目录下),使用产生的key对apk签名用到的是jarsigner.exe (位于jdk1.6.0_24\bin目录下)

需要配置JAVA_HOME和JRE_HOME(自行配置)

生成密钥

keytool -genkey -alias xx.keystore -keyalg RSA -validity 10000 -keystore xx.keystore
rem  说明:-genkey 产生密钥
rem       -alias xx.keystore 别名 xx.keystore
rem       -keyalg RSA 使用RSA算法对签名加密
rem       -validity 10000 有效期限4000天
rem       -keystore xx.keystore */
jarsigner -verbose -keystore xx.keystore -signedjar xx_signed.apk demo.apk xx.keystore
rem /*说明:-verbose 输出签名的详细信息
rem        -keystore  xx.keystore 密钥库位置
rem        -signedjar xx_signed.apk xx.apk xx.keystore 正式签名,三个参数中依次为签名后产生的文件xx_signed,要签名的文件xx.apk和密钥库xx.keystore.*/

签名好了,可以安装了。

zipalign优化

未签名的apk不能使用,也不能优化。签名之后的apk谷歌推荐使用zipalign.exe(位于xx\adt-bundle-windows-x86-20140702\sdk\build-tools\21.1.2目录下或其他SDK版本相应目录)工具对其优化:

zipalign -v 4 xx_signed.apk final.apk

  如上,zipalign能够使apk文件中未压缩的数据在4个字节边界上对齐(4个字节是一个性能很好的值),这样android系统就可以使用mmap()(请自行查阅这个函数的用途)函数读取文件,可以在读取资源上获得较高的性能,

  PS:1.在4个字节边界上对齐的意思就是,一般来说,是指编译器吧4个字节作为一个单位来进行读取的结果,这样的话,CPU能够对变量进行高效、快速的访问(较之前不对齐)。
          2.对齐的根源:android系统中的Davlik虚拟机使用自己专有的格式DEX,DEX的结构是紧凑的,为了让运行时的性能更好,可以进一步用"对齐"进一步优化,但是大小一般会有所增加。

反编译dex文件:dex2jar

上面只反编译资源配置文件,java文件需要dex2jar,

解压缩apk文件,找到dex文件

dex2jar.bat    xx.dex

即可得到jar文件,通过jd_gui反编译java文件。

对于odex化的apk需要去odex化,反编译,还有smali文件向dex,以及smali的编辑,下次再说吧。

时间: 2024-10-03 09:03:18

android去权限反编译,签名,zipalign优化的相关文章

android apk 防止反编译技术第二篇-运行时修改字节码

上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372.接下来我们将介绍另一种防止apk反编译的技术-运行时修改字节码.这种方法是在工作中在实现app wrapping时,看到国外的一篇关于android 安全的介绍实现的并且独创.下面我们来介绍一下这种方法. 我们知道apk生成后所有的java生成的class文件都被dx命令整合成了一个classes.dex文件,当apk运行时d

android apk 防止反编译技术第四篇-对抗JD-GUI

又到周末一个人侘在家里无事可干,这就是程序员的悲哀啊.好了我们利用周末的时间继续介绍android apk防止反编译技术的另一种方法.前三篇我们讲了加壳技术(http://my.oschina.net/u/2323218/blog/393372).运行时修改字节码(http://my.oschina.net/u/2323218/blog/396203)和伪加密(http://my.oschina.net/u/2323218/blog/399326),如果有不明白的可以查看我的博客的前三篇中关于这

android apk 防止反编译技术第二篇-运行时修改Dalvik指令

上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372.接下来我们将介绍另一种防止apk反编译的技术-运行时修改字节码.这种方法是在工作中在实现app wrapping时,看到国外的一篇关于android 安全的介绍实现的并且独创.下面我们来介绍一下这种方法. 我们知道apk生成后所有的java生成的class文件都被dx命令整合成了一个classes.dex文件,当apk运行时d

【转】Android开发之反编译与防止反编译

Android开发之反编译与防止反编译 防止反编译是每个程序员的必修课,因为当你辛辛苦的研发一个应用,被人家三下五除二给反编译了,是一件多么尴尬的事啊.那么如何防止反编译啊?这里就用Google Android自带的代码混编的方式来防止反编译.孙子兵法中讲得好:“知彼知己百战不殆”,所以在讲解防止反编译之前,先让我们了解一下如何反编译一个应用. 一.反编译Android应用 实验环境: Windows8.1企业版.dex2jar-0.0.9.9 反编译工具包: Android反编译工具包(升级版

android apk 防止反编译技术第三篇-加密

上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372.接下来我们将介绍另一种防止apk反编译的技术-运行时修改字节码.这种方法是在工作中在实现app wrapping时,看到国外的一篇关于android 安全的介绍实现的并且独创.下面我们来介绍一下这种方法. 我们知道apk生成后所有的java生成的class文件都被dx命令整合成了一个classes.dex文件,当apk运行时d

android apk 防止反编译技术第一篇-加壳技术

做android framework方面的工作将近三年的时间了,现在公司让做一下android apk安全方面的研究,于是最近就在网上找大量的资料来学习.现在将最近学习成果做一下整理总结.学习的这些成果我会做成一个系列慢慢写出来与大家分享,共同进步.这篇主要讲apk的加壳技术,废话不多说了直接进入正题. 一.加壳技术原理 所谓apk的加壳技术和pc exe的加壳原理一样,就是在程序的外面再包裹上另外一段代码,保护里面的代码不被非法修改或反编译,在程序运行的时候优先取得程序的控制权做一些我们自己想

Android APK通过反编译获取源代码

1.首先将apk文件后缀改为RAR并解压. 2.使用7zip解压rar文件(winrar解压会报错),得到其中的classes.dex文件 3.将解压得到的classes.dex文件放入dex2jar文件夹下--实质为与dex2jar.bat路径一致 4.用dex2jar 把classes.dex文件转为jar文件运行cmd,进入dex2jar所在目录,执行命令:dex2jar.bat   classes.dex  生成 classes_dex2jar.jar 5.最后用jd-gui.exe打开

Android实践--apk反编译

Android apk反编译一步到位 Andriod的apk在编译打包的时候将资源文件进行了二进制编译,.class文件编译成了.dex文件,经过了这几步之后,我们是无法查看资源文件和java文件,如果我们想看看市面上一些优秀app的设计和实现,我们就需要做一些工作了,具体有一下三个方面市面上有些app的布局设计的还是不错的,这时候你要借鉴参考一下,需要做一些工作了: 1.反编译资源文件:   需要apktool工具.apktool下载     Google code官方下载 2.反编译dex文

转: android apk 防止反编译技术(1~5连载)

转: android apk 防止反编译技术 做android framework方面的工作将近三年的时间了,现在公司让做一下android apk安全方面的研究,于是最近就在网上找大量的资料来学习.现在将最近学习成果做一下整理总结.学习的这些成果我会做成一个系列慢慢写出来与大家分享,共同进步.这篇主要讲apk的加壳技术,废话不多说了直接进入正题. 一.加壳技术原理 所谓apk的加壳技术和pc exe的加壳原理一样,就是在程序的外面再包裹上另外一段代码,保护里面的代码不被非法修改或反编译,在程序