Android项目打包apk及apk的反编译

一、项目打包的一般原理及其缺点

(1)开发一个简单的项目,发布的时候为一个APK文件,如果我们不使用签名的方式,直接在bin目录下找到*.apk文件,很方便,但是我们的使用者在使用的时候,有可能会被其他的程序覆盖安装;具体解释如下:

(2)我们新建一个项目Test目录结构如下,并把它发布到模拟器上,得到我们的打包文件Test.apk

(3)然后我们在看模拟器中的文件目录信息,我们在安装的应用,都会在安卓机器上的data----data---具体的安装文件夹,例如我的是:com.example.test

这里的com.example.test是在,项目目录下的AndroidManifest.xml文件中,因此我们可以修改他的文件名称

(4)到这里,如果遇到相同的安装目录名,就有可能覆盖我们的应用程序,造成恶意的破坏!

二、带有数字签名的打包方式

(5)那我们就需要使用签名的方式,打包我们的软件,步骤很简单,点击项目右键---Android-Tools---Export Android Application--然后后边的就不在介绍!按照自己需求进行即可!

三、apk的反编译实现过程

(6)在上一步中,我们已经生成了一个签名的apk文件Test.apk然后我们使用解压软件,解压,

上图既是解压后的目录,各种配置文件都在,就是缺少我们的源文件和R类等

(7)其中classes.dex文件,就是我们项目中src目录下源码的编译,二resources.arsc既是我们R类中的编译文件

(8)现在我们开始反编译,查看其中的源文件和R类

(9)准备工具dex2jar和JD-GUI这两个工具网上很多,搜索下载即可(http://yunpan.cn/cfpRvDD8QJcKi    提取码 c156)

(10)开始:将classes.dex文件拷贝到我们的工具dex2jar文件目录下:

(11)然后在上图中的地址栏中将地址删除然后敲入cmd回车(这样的话我们可以直接定位到该目录下!非常好使)或者自己手工找到该目录下!

(12)然后执行dex2jar.bat 后边加上刚才拷贝的要反编译的文件calsses.dex

(13)然后就会在dex2jar工具下生成一个jar文件(到这里这个jar还只是class文件需要使用下一个工具才可以)

(14)然后将生成的class_dex2jar.jar文件拖入到第二个工具JD-GUI中,就可以看到了

(15)另外我们还可以点击file--save all sources生成源代码的文件,这个就不上图了,源代码有了剩下的是杀是刮随你便

(16)到此为止,已经完成对软件的反编译,这样的话我们可以轻松愉快的阅读别人的源代码了!

时间: 2024-10-10 20:41:20

Android项目打包apk及apk的反编译的相关文章

如何把多个Android Project打包成一个APK

如何把多个Android Project打包成一个APK(你的项目如何引用其他项目). 如何把多个android project 打包成一个apk呢,其实原理是这样的,一个主project引用其他的project,其他project类似于jar包一样被引用,当然和jar的引用原理有很大的区别.下面是详细的说明. 第一步,把普通的android project设置成库项目 库项目也是一个标准的android项目,因此你先创建一个普通的android项目. 这个项目可以起任何的名称,任何的报名,设置

Android对apk源代码的改动--反编译+源代码改动+又一次打包+签名【附HelloWorld的改动实例】

最近遇到了须要改动apk源代码的问题,于是上网查了下相关资料.编写了HelloWorld进行改动看看可行性,经过实验证明此方案可行,而且后来也成功用这种方法对目标apk进行了改动,仅仅只是须要改动的部分比HelloWorld复杂些,可是仅仅要了解下smali也能进行相关的改动,以下讲下详细的步骤,文中所用到的资源会在文章的结尾给出,感兴趣的能够下载试试. 首先介绍下要用到的工具: jdk:这个不用多说了 baksmali:把classes.dex转为为smali文件的工具 dex2jar:cla

Android APK文件的逆向反编译

APK是Android Package的缩写,即Android安装包(APK).APK是类似Symbian Sis或Sisx的文件格式.通过将APK文件直接传到Android模拟器或Android手机中执行即可安装.APK文件和sis一样,把android sdk编译的工程打包成一个安装程序文件,格式为apk. APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的简称,即Android Dalvik执行程序,

Android APK XML解析与反编译方法

APK中的XML为何不能直接打开,是否只是简单的二进制文件,难道被加密了?为什么AXMLPrinter2反编译的时候竟然报错了,如何解决? java.lang.ArrayIndexOutOfBoundsException: 128 at android.content.res.StringBlock.getShort(StringBlock.java:231) at android.content.res.StringBlock.getString(StringBlock.java:91) at

APK中java代码反编译

Android APK中的Java代码可以被反编译到什么程度主要看APK的加密程度. 第一种情况:无混淆无加密无加壳.直接利用Dex2jar和JD-GUI可把源码从APK里抠出来,代码逻辑清晰,基本上做到可复用,只是资源文件的引用需要计算一下. 第二种情况:混淆.通常是利用Proguard做的防护.因为是对jar做的不可逆混淆(除非有mapping),因此不能还原成原来的代码.但是代码结构,代码逻辑一致,只要花长时间对代码进行梳理一样可找准核心代码,解密方法跟第一种一致. 第三种情况:加密.这里

Android N 7 【 classes.dex】反编译失败:com.googlecode.d2j.DexException: not support version.

Microsoft Windows [版本 6.1.7601]版权所有 (c) 2009 Microsoft Corporation.保留所有权利. D:\Android反编译工具[全]\2016\dex2jar-2.0\dex2jar-2.0>d2j-dex2jar.bat classes.dexdex2jar classes.dex -> .\classes-dex2jar.jarcom.googlecode.d2j.DexException: not support version.  

Android 项目打包成apk文件

首先,要利用Android SDK 自带的kdytool生成keystore文件: keytool -genkey -alias android.keystore -keyalg RSA -validity 100000 -keystore android.keystore参数意义:-validity主要是证书的有效期,写100000天:空格,退格键都算密码. 在DOS里面的过程: (D:\Program Files\Java\jdk1.7.0_25\bin> keytool -genkey -

如何利用Android Studio打包React Native APK

ok!百度出来的东西很杂,所以,这里介绍一种最简单,最合适我们(新手,应该是吧)的APK的打包方式! 当然!这种打包是基于Android Studio的,所以,注意喽!!!! 废话不多说开始吧! 首先,我们要整理我们的思路,第一步是给APK签名~第二步是完成打包 第一步:签名 打开Android Studio 然后在菜单栏的Build——>Generate Signed APK 在打开的界面点击Next,会弹出下面的界面 然后点击create new在弹出的界面中选择填写秘钥存放的位置,名称,密

Win7平台下React-Native开发之Android项目打包发布流程

一.bundle文件 React-Native开发步骤中,有一个步骤是使用命令 react-native start 去启动一个基于Node.js的服务,名字为packager.这个packager的主要功能是:1.监视当前目录下相关文件的改动:2.监听在本机的8081(默认)端口,为正确的请求提供相应的bundle文件.总结一点来说就是:bundle文件是根据项目目录下相应文件的最新内容来动态生成的,这样在开发过程中就能实时地观察我们修改JS文件所带来的程序的改变.因为这个bundle文件就是