Android APK反编译详解

Android APK反编译详解
Android APK反编译详解

Android APK反编译详解(附图)

这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程。

在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的态度,不过好像通过这种方式也可以去汉化一些外国软件。

本文Android反编译教程,测试环境:

Win7 Ultimate x64

Ubuntu 12.04 x86_x64

反编译工具包下载(2012-10-10更新)

一、Apk反编译得到Java源代码

下载上述反编译工具包,打开apk2java目录下的dex2jar-0.0.9.9文件夹,内含apk反编译成java源码工具,以及源码查看工具。

apk反编译工具dex2jar,是将apk中的classes.dex转化成jar文件

源码查看工具jdgui,是一个反编译工具,可以直接查看反编译后的jar包源代码

dex2jar 和jdgui 最新版本下载,分别见google code:

dex2jar(google code)

jdgui(google code),最新版本请见官方

具体步骤:

首先将apk文件后缀改为zip并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的,将classes.dex复制到dex2jar.bat所在目录dex2jar-0.0.9.9文件夹。在命令行下定位到dex2jar.bat所在目录,运行

dex2jar.bat classes.dex

生成

classes_dex2jar.jar

然后,进入jdgui文件夹双击jd-gui.exe,打开上面生成的jar包classes_dex2jar.jar,即可看到源代码了,如下图:

HelloAndroid源码在反编译前后的对照如下:

二、apk反编译生成程序的源代码和图片、XML配置、语言资源等文件

如果是汉化软件,这将特别有用

首先还是要下载上述反编译工具包,其中最新的apktool,请到google code下载apktool(google code)

具体步骤:

下载上述反编译工具包,打开apk2java目录下的apktool1.4.1文件夹,内含三个文件:aapt.exe,apktool.bat,apktool.jar

注:里面的apktool_bk.jar是备份的老版本,最好用最新的apktool.jar

在命令行下定位到apktool.bat文件夹,输入以下命令:

apktool.bat d -f abc123.apk abc123,如下图:

上图中,apktool.bat 命令行解释:apktool.bat d -f [apk文件] [输出文件夹]

反编译的文件如下(AndroidManifest.xml为例):

将反编译完的文件重新打包成apk,很简单,输入apktool.bat b abc123(你编译出来文件夹)即可,命令如下:

打包apk后的文件在目录C:\HelloAndroid下,生成了两个文件夹:

build

dist

其中,打包生成的HelloAndroid.apk,在上面的dist文件夹下,Ok

三、图形化反编译apk

上述步骤一、二讲述了命令行反编译apk,现在提供一种图形化反编译工具:Androidfby 首先,下载上述反编译工具包,打开Androidfby目录,双击Android反编译工具.exe,就可以浏览打开要反编译的apk

本文反编译工具包整理历史版本:

Android反编译工具包(升级)(2012-10-10)

Android反编译工具(2012-08-21)

android反编译工具(2011-08-28)

本博客反编译方法,仅供参考学习使用,禁止用于非法和商业等用途,谢谢

Android如何防止apk程序被反编译

Android如何防止apk程序被反编译 作为Android应用开发者,不得不面对一个尴尬的局面,就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来。 Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-sdk-windows\tools\下面多了一个proguard文件夹 proguard是一个java代码混淆的工具,通过proguard,别人即使反编译你的apk包,也只会看到一些让人很难看懂的代码,从而达到保护代码的作用。 下面具体说一说怎么样让SDK2.3下的proguard.cfg文件起作用,先来看看android-sdk- windows\tools\lib\proguard.cfg的内容: [html] -optimizationpasses 5n -dontusemixedcaseclassnamesn -dontskipnonpubliclibraryclassesn -dontpreverifyn -verbosen -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*n -keep public class * extends android.app.Activityn -keep public class * extends android.app.Applicationn -keep public class * extends android.app.Servicen -keep public class * extends android.content.BroadcastReceivern -keep public class * extends android.content.ContentProvidern -keep public class * extends android.app.backup.BackupAgentHelpern -keep public class * extends android.preference.Preferencen -keep public class com.android.vending.licensing.ILicensingServicen -keepclasseswithmembernames class * {n nnn native ;n }n -keepclasseswithmembernames class * {n nnn public (android.content.Context, android.util.AttributeSet);n }n -keepclasseswithmembernames class * {n nnn public (android.content.Context, android.util.AttributeSet, int);n }n -keepclassmembers enum * {n nnn public static **[] values();n nnn public static ** valueOf(https://www.360docs.net/doc/055986176.html,ng.String);n }n -keep class * implements android.os.Parcelable {n n public static final android.os.Parcelable$Creator *;n }n 从脚本中可以看到,混淆中保留了继承自Activity、Service、Application、BroadcastReceiver、ContentProvider等基本组件以及com.android.vending.licensing.ILicensingService, 并保留了所有的Native变量名及类名,所有类中部分以设定了固定参数格式的构造函数,枚举等等。(详细信息请参考/examples中的例子及注释。) 让proguard.cfg起作用的做法很简单,就是在eclipse自动生成的default.properties文件中加上一句“proguard.config=proguard.cfg”就可以了 完整的default.properties文件应该如下: [html] n# This file is automatically generated by Android Tools.n # Do not modify this file --YOUR CHANGES WILL BE ERASED!n #n # This file must be checked in Version Control Systems.n #n # To customize properties used by the Ant build system use,n # "build.properties", and override values to adapt the script to yourn # project structure.n # Project target.n target=android-9n proguard.config=proguard.cfgn 大功告成,正常的编译签名后就可以防止代码被反编译了。反编译经过代码混淆的apk得到的代码应该类似于下面的效果,是很难看懂的: 如果您使用的是2.3之前的SDK版本也没关系,把上面的proguard.cfg文件复制一份放到项目中,然后进行相同的操作即可\

Apk反编译及签名工具使用

Apk反编译及签名工具使用 1) APKtool软件包及签名tool APKtool软件包有2个程序组成:apktool.jar 和aapt.exe 另外提供一个批处理文件:apktool.bat,其内容为: java -jar "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9 运行apktools.jar需要java环境(1.6.0版本以上)。 apktool.jar用于解包,apktool.jar和aapt.exe联合用于打包。 signapk.jar 用于签名。 2) APK文件的解包 下面以解开Contacts.apk为例。首先把Contacts.apk Copy到当前工作目录下(例:Test)。在DOS下打入命令 apktool d Contacts.apk ABC 这里“d”表示要解码。Contacts.apk是要解包的APK文件。ABC是子目录名。所有解包的文件都会放在这个子目录内。 3) APK文件的打包 在DOS下打入命令 apktool b ABC New-Contacts.apk 这里“b”表示要打包 ABC是子目录名,是解包时产生的子目录,用来存放所有解包后的和修改后的文件。 New-Contacts.apk是打包后产生的新的APK文件。 4) 签名,不签名安装时可能提示如下错误: Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES] --- 没有签名,可以尝试test证书;签名方法见下面。

Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES] ---- 已存在签名,但使用证书不对,可以尝试使用其他证书签名。 签名方法:到目录android\build\target\product\security找到证书文件,这里可能会有几种证书, test/shared/platform/media,各种证书使用场景不同,可以自己google一下,因为签名很快而且可任意后续更改签名,可以自己尝试各种不同签名; 这个命令行是使用test证书的例子:java -jar signapk.jar testkey.x509.pem testkey.pk8 YOURAPK.apk YOURAPK_signed.apk YOURAPK_signed.apk就是签完名的apk,去测试一下您重新打包的apk吧。

反编译详细教程

.去震动教程.时间居中教程,时间显示到秒且居中 在通知栏增加模拟时钟透明状态栏代码修改 字体颜色修改关于运营商图标修改 可以ctrl+F,按需搜索 一:去震动教程: 一、首先是配置编译和反编译环境,具体方法如下: 1、在电脑上下载安装JRE(https://www.360docs.net/doc/055986176.html,/file/clif5w53)。其次下载好apk反编译工具 (apk反编译软件.rar(2.43 MB, 下载次数: 5756) ) 2、在系统环境变量Path里加入java.exe所在路径。 右键我的电脑--属性--高级系统--设置--环境变量--系统环境变量,里面的path变量项,值里面添加java的所在路径(例如“;C:\Program Files\Java\jre6\bin”) 3、将反编译软件解压出来,为了便于使用,最好放在C:\Windows目录下。 二、提取并反编译framework-res.apk文件 1、手机必须root,先用RE管理器将/system/framework文件夹下的文件framework-res.apk复制到/sdcard,然后复制到电脑(为了方便后面的操作,建议将文件放到电脑某个盘符的根目录下。例如:e:\framework-res.apk)

2、反编译framework-res.apk文件。具体方法运行cmd.exe(如图) 然后在出来的命令提示行中输入以下命令:apktool+空格d+空格+framework-res.apk路径+空格+反编译后文件存放路径,比如文件放入d盘根目录则命令为:apktool d d:\framework-res.apk d:\framework-res(如图)(此时反编译出来的文件放在d盘framework-res文件夹下) 三、修改去震动相关的xml文件 一般framework-res\res\values\arrays.xml就是我们要修改的对象。用xml编辑器(xml 编辑器.rar(345.03 KB, 下载次数: 3223) )打开这个文件。修改如图:

用安卓apk反编译利器Apktool

用安卓apk反编译利器Apktool,教你去掉软件里的广告(只用于学习交流。。)给大家介绍下windows环境下使用Apktool的方法。 安装: 1.先装JAVA环境,JDK/JRE都行,官网下载装过的就跳过吧! 2.下载apktool.jar及相关文件,这里下apktool-1.0.0.tar.bz2和 apktool-install-windows-2.1_r01-1.zip 3.解压apktool.jar到C:Windows 解压apktool-install-windows.zip到任意文件夹(例如:E:Android学习工具反编译ApkTool) 4.Win+R 运行CMD,用cd命令转到apktool-install-windows所在文件夹,输入apktool看看。会列出一些帮助的话就成功了。 Apktool命令: apktool d XXX.apk PATH //反编译XXX.apk到文件夹PATH apktool b PATH //从文件夹PATH重建apk到PATHdistout.apk //============================================================ ========================// 案例: “超级指南针”的顶部有一条广告区,我们的目的就是把它去掉。 运行cmd 进入Apktool所在目录(我的是:“E:Android学习工具反编译ApkTool”)后,使用Apktool命令操作,如下

现在在“E:Android学习.工具反编译新建文件夹指南针”目录下就得到了反编译后的文件,用记事本打开其中的AndroidManifest.xml,找到与下面类似的代码段: 也就是找到有一连串字符序列的地方,如上 CD0E46BC8B9DF1394F1E5F6030067A71和 DEE43EDE-D2DF-4B4D-A754-894C9E7F960E两处,这两处分别是架势广告与admob提供的id地址。 接下来要做的就是将上述的字符序列改掉一两个字。。。 然后,将散架的文件编译回去(apktool b PATH): 可以看到E:Android学习工具反编译新建文件夹指南针distout.apk文件。。。

android捕鱼达人修改方法(反编译、修改、打包)

涉及内容 apk反编译 代码修改 打包 重启签名 需要的工具 jdk:必须的 baksmali:classes.dex反编译为smali格式(文本文件,可修改) smali:smali格式编译打包为classes.dex 但由于smali格式类似汇编,比较难阅读,所以用dex2jar进行辅助 dex2jar:classes.dex转为jar包 jdgui:jar反编译并阅读 以上工具可以在 https://www.360docs.net/doc/055986176.html,/ 下载 好了,顺序就是把apk用zip解开,里面的classes.dex分别用baksmali处理为smali,用dex2jar处理成jar,然后用jdgui看代码,找好java文件中要改的位置后,在smali里找对应的位置修改,改完了用smali再编译为classes.dex,覆盖原来apk里的同名文件,最后重新签名。注意安装时要先删除原来手机里的版本,因为签名不同了,我第一次再这里卡了好久。 以“捕鱼达人海底捞”为例 下载这个游戏的apk,fishing_joy_1.apk,和工具放在一起 用zip解开fishing_joy_1.apk copy classes.dex到baksmali的同一目录

用baksmali处理为smali java -jar baksmali-1.2.6.jar -x classes.dex 得到out目录,里面是smali文件 用dex2jar处理classes.dex为jar包 dex2jar-0.0.7.10-SNAPSHOT\dex2jar.bat classes.dex 得到classes.dex.dex2jar.jar 这时我们的工作目录下面是这样 用jdgui打开classes.dex.dex2jar.jar

android课程介绍

1.课程基本信息 课程编号:M21F58D10 课程名称:Android应用与开发 开设学期:第3学期 总学时:60 总学分:4 课程类别:岗位能力课程课程性质:必修课 适用专业:软件技术(移动应用开发) 责任单位:计算机与软件学院 2.课程定位 《Android应用与开发》课程是软件技术(移动应用开发方向)专业的岗位能力课程,课程的开设依据是软件技术专业人才培养目标和相关职业岗位(群)的能力要求,对本专业所面向的手机软件开发与测试、软件开发与项目管理等岗位所需要的知识、技能和素质目标的达成起支撑作用。 在课程设置上,前导课程有《Java程序设计》(M21F1611),《数据结构》(M21F232),后续课程有《移动互联网开发综合实训》(M21J57B10)、《毕业实习》(M21J991)。 3.课程设计思路 首先依据专业人才培养方案中关于人才培养目标的阐述,明确课程目标;其次,结合职业教育课程观、教学观、能力观,基于软件工程的开发过程,以项目化教学来组织课程内容,在课程内容的选择与排序中,以软件项目研发的不同阶段、典型任务为载体,将课程内容划分为互相联系的学习情景;第三,通过对各学习情景中学习目标、主要内容、授课方式、师生要求等各项内容的描述,来规范课程所要求的内容;第四,通过对课程内容的选取和组合,以一个完整的项目为载体,完成课程的实施;最后,通过对项目实施过程中各个环节的考察和评价,来完成对课程的评鉴与考核。 本课程在设计上本着懂方法,重应用的总体思路,突出体现职业教育的技能型、应用性特色,着重培养学生的实践应用技能,力求达到理论方法够用,技术技能过硬的目的。 4.课程建设基本理念 本课程按照理论实践一体、课内外互补、课堂教学与培优工程相结合的课程设计指导思想,以任务或项目为载体组织教学内容,突出学生的主体地位,实现“教、学、做”的有机融合;通过班级讲授、团队学习、个体辅导、展示交流、技能大赛等手段,实现从模仿到应用到创新的高职学生递进式培养。 本课程强调对学生职业岗位能力的培养和职业素养的养成,针对不同环节,采用特定的教学方法,有意识、有步骤地将职业能力的训练和职业素养的形成融入到实际的教学过程中。

Android APK反编译得到Java源代码和资源文件

Android APK反编译得到Java源代码和资源文件 2011年3月9日iStar发表评论阅读评论 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程。在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的态度,不过好像通过这种方式也可以去汉化一些外国软件。 一.反编译Apk得到Java源代码 首先要下载两个工具:dex2jar和JD-GUI,前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。以下是下载地址:dex2jar: https://www.360docs.net/doc/055986176.html,/files/dex2jar-0.0.7-SNAPSHOT.zip JD-GUI:https://www.360docs.net/doc/055986176.html,/files/jdgui.zip 具体步骤: 1.首先将apk文件,将后缀改为zip,解压,得到其中的classes.dex,它就是java 文件编译再通过dx工具打包而成的; 2.解压下载的dex2jar,将classes.dex复制到dex2jar.bat所在目录。在命令行 下定位到dex2jar.bat所在目录,运行 dex2jar.bat classes.dex 生成classes.dex.dex2jar.jar 3.运行JD-GUI,打开上面生成的jar包,即可看到源代码了。 二.反编译apk生成程序的源代码和图片、XML配置、语言资源等文件 如果是只是汉化软件,这将特别有用。首先还是下载工具,这次用到的是apktool,下载地址: https://www.360docs.net/doc/055986176.html,/p/android-apktool/,apktool-1.0.0.tar.bz2和 apktool-install-windows-2.1_r01-1.zip两个包都要下。 具体步骤: 1.将下载的两个包解压到同一个文件夹下,应该会有三个文件:aapt.exe, apktool.bat,apktool.jar; 2.在命令行下定位到apktool.bat文件夹,输入以下命令: apktool d C:\***.apk C:\***文件夹 命令行解释:apktool d [要反编译的apk文件 ] [输出文件夹],特别注意:你要反编译的文件一定要放在C盘的根目录里;

安卓逆向笔记-逆向思路教程

一、修改软件名称 在AndroidManifest.xml 文件

可以看到这个apk 一共有5 个图标,其实这些图标都一样,只是分辨率不一样。如果你要修改图标,提前准备好图片资源,把apk 中对应的文件替换掉就行了。 如果你觉得一次要准备5 个不同分辨率的图标进行替换的话不方便,你也可以只替换其中一个,然后在arsc 中把其它四个配置删掉,同时apk 中对应的图标也删掉。 例如你准备的图标的分辨率和apk 中hdpi 的图标分辨率最接近,那么你可以只替换hdpi 所对应路径的图标,然后把mdpi、xhdpi、xxhdpi、xxxhdpi 四个配置都删掉。这样做完全没问题,即使你的分辨率是xxxhdpi,系统找不到最佳分辨率图标时就会去使用hdpi 的图标,顶多显示时图标比较不清晰。 2、Androidkiller 在META-INF 文件搜/icon.png(经验:图标一般都是png格式) 搜到后找到文件夹目录地址(一般在res文件夹里)(右键打开res文件目录),根据尺寸大小替换图标 技巧一:在META-INF文件夹中的“MANIFEST. MF”文件搜索 技巧二:搜索/icon. Png 而不是icon. 流程: 篡改APK图标:工程管理器→AndroidManifest. xml→ →“application”标签→“android: icon=@drawable/ icon→ “META- -INF"→MANIFEST.MF →搜索“/icon. png→替换图片 三、修改包名实现软件分身、共存 在AndroidManifest.xml 文件 找到

apk反编译文件夹详解

反编译: 反编译apk得到的几个文件和文件夹 1。 assets 文件夹 此文件夹可以存放资源文件。至于是神马资源文件,怎么读取,这些我们就不用深究了,因为不常改。 2。 res 文件夹 主要用来存放资源。此文件夹下可以创建子文件,常见的有: anim 动画 drawable 图片 color 颜色 menu 菜单 layout 布局 values 常量值 xml 任意xml文件 我们修改apk时,一般就在这里修改。比如汉化,改名称,去广告,改字体颜色,大小神马的。 3。smali 里面主要是dex文件反编译得到的smali文件。不会java的改不起。顶多搜几个关键词汉化一下。值得注意的是,汉化时不能直接输入汉字,而应输入对应的十六进制代码。 4。AndroidManifest.xml 此文件是apk中最重要的文件之一。它是apk的全局配置文件,提供了android系统所需要的关于该应用的必要信息。 res目录浅说: 1 anim文件夹 后缀名为.xml。动画文件都放在这里。 2 drawable文件夹

用于存放图片资源,图片或者xml。 (1) 图片 图片格式:png,9.png,jpg,gif。 注意:9.png是一种特殊的png格式,与一般的png格式有区别!很多人在改完图片后将两种格式混淆,导致回编译失败。后面有制作9.png格式图片的方法。 (2) xml xml文件通常为自定义的形状shape或图片选择器类selector似的东西,就是不同状态下不同的图片,用于设置background什么的。 (3) drawable文件夹为了对屏幕的适配, ①对分辨率笼统的分:名字可以为:drawable-ldpi drawable-mdpi drawable-hdpi drawable-xhdp drawable-nodpi drawable-tvdpi 分辨率依次由高到低 ②具体到某一分辨率:drawable-分辨率,比如:drawable-1280x720 ③如果有横竖屏的区别,则命名为:drawable-land/port-mdpi, 3 color文件夹 用于存放color列表,和drawable的xml一样,表示不同状态下的不同颜色 4 menu文件夹 菜单资源文件夹。 5 layout文件夹 布局文件夹。此文件夹的名字也是可以起到屏幕适配的功能的。 ①横竖屏:layout-land/port ②分辨率:layout-1280x720 6 values文件夹 存放常量值的文件夹。里面常见的xml文件为: arrays.xml :资源数组.

Android应用逆向分析技术综述

Android应用逆向分析技术综述Dex文件结构 Android 程序静态分析 一、Dex文件结构 1. 文件头 DEX文件头主要包括校验和以及其他结构的偏移地址和长度信息。 字段名称偏移 值 长 度 描述 magic 0x0 8 'Magic'值,即魔数字段,格式如”dex/n035/0”,其中的035表示结构的版本。 checksum 0x8 4 校验码。 signature 0xC 20 SHA-1签名。 file_size 0x20 4 Dex文件的总长度。 header_size 0x24 4 文件头长度,009版本=0x5C,035版本=0x70。 endian_tag 0x28 4 标识字节顺序的常量,根据这个常量可以判断文件是否交换了字节顺序,缺省情况下=0x78563412。 link_size 0x2C 4 连接段的大小,如果为0就表示是静态连接。 link_off 0x30 4 连接段的开始位置,从本文件头开始算起。如果连接段的大小为0,这里也是0。 map_off 0x34 4 map数据基地址。 string_ids_size 0x38 4 字符串列表的字符串个数。string_ids_off 0x3C 4 字符串列表表基地址。type_ids_size 0x40 4 类型列表里类型个数。type_ids_off 0x44 4 类型列表基地址。 proto_ids_size 0x48 4 原型列表里原型个数。proto_ids_off 0x4C 4 原型列表基地址。 field_ids_size 0x50 4 字段列表里字段个数。field_ids_off 0x54 4 字段列表基地址。method_ids_size 0x58 4 方法列表里方法个数。method_ids_off 0x5C 4 方法列表基地址。 class_defs_size 0x60 4 类定义类表中类的个数。class_defs_off 0x64 4 类定义列表基地址。

Android平台介绍及使用指导

Android平台介绍及使用指导 二○一○年二月 版本 1.0

目录 Android平台介绍 ................................................................................... - 4 -基本名词...................................................................................................................... - 5 - 操作方法介绍 .......................................................................................... - 6 - 手机按键介绍.............................................................................................................. - 6 - 快捷键介绍.................................................................................................................. - 6 - 信息功能介绍.............................................................................................................. - 7 - 联系人功能介绍........................................................................................................ - 11 - 通话记录功能介绍.................................................................................................... - 14 - 文本粘贴/复制功能介绍.......................................................................................... - 14 - Push Email(Moxier)功能介绍............................................................................ - 15 - 电子邮件功能介绍.................................................................................................... - 16 - 桌面功能介绍............................................................................................................ - 19 - 蓝牙功能介绍............................................................................................................ - 23 - Wifi功能介绍........................................................................................................... - 23 - 飞行模式功能介绍.................................................................................................... - 23 - CDMA数据链接介绍................................................................................................... - 24 - 黑屏解锁功能............................................................................................................ - 25 - 回复出厂设置............................................................................................................ - 26 - 应用程序设置............................................................................................................ - 26 - GPS设置..................................................................................................................... - 27 - 手机中英文语言切换................................................................................................ - 28 - 更换手机输入法........................................................................................................ - 29 - 数据线链接Android手机........................................................................................ - 29 - 手机测试模式进入方法............................................................................................ - 30 - 横屏显示介绍............................................................................................................ - 30 - 浏览器功能介绍........................................................................................................ - 31 - RSS功能介绍............................................................................................................ - 32 - Q/A- 34 -

APK 反编译

Apk文件的格式 Android application package文件。每个要安装到android平台的应用都要被编译打包为一个单独的文件,后缀名为.apk,其中包含了应用的二进制代码、资源、配置文件等。 apk文件实际是一个zip压缩包,可以通过解压缩工具解开。可以用zip解开*.apk文件,下面是一个he lloword的apk示例文件 |–AndroidManifest.xml |–META-INF | |–CERT.RSA | |–CERT.SF | `–MANIFEST.MF |–classes.dex |–res | |–drawable | | `–icon.png | `–layout | `–main.xml `–resources.arsc 1.Manifest文件:AndroidManifest.xml是每个应用都必须定义和包含的,它描述了应用的名字、 版本、权限、引用的库文件等等信息[ , ],如要把apk上传到Google Market上,也要对这个xml做一些配置。注意:在apk中的xml文件是经过压缩的,不可以直接打开。 2.Res文件:res文件夹下为所有的资源文件。 3.resources.arsc文件:为编译后的二进制资源文件,许多做汉化软件的人都是修改该文件内的资源 以实现软件的汉化的。 4.META-INF目录:META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。 在eclipse编译生成一个api包时,会对所有要打包的文件做一个校验计算,并把计算结果放在ME TA-INF目录下。而在OPhone平台上安装apk包时,应用管理器会按照同样的算法对包里的文件做校验,如果校验结果与META-INF下的内容不一致,系统就不会安装这个apk。这就保证了apk 包里的文件不能被随意替换。比如拿到一个apk包后,如果想要替换里面的一幅图片,一段代码,或一段版权信息,想直接解压缩、替换再重新打包,基本是不可能的。如此一来就给病毒感染和恶意修改增加了难度,有助于保护系统的安全。 5.classes.dex是java源码编译后生成的java字节码文件。但由于Android使用的dalvik虚拟机 与标准的java虚拟机是不兼容的,dex文件与class文件相比,不论是文件结构还是opcode都不一样。 XML文件的反编译 在apk中的xml文件是经过压缩的,可以通过AXMLPrinter2工具解开,具体命令为: java -jar AXMLPrinter2.jar AndroidManifest.xml HelloAndroid程序中Manifest文件的实例:

1.android发展历程简介

android(Google公司开发的操作系统) Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache 开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。[1] 2013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。2014第一季度Android平台已占所有移动广告流量来源的42.8%,首度超越iOS。但运营收入不及iOS。 编程语言 C/C++(底层)Java等(应用层) 系统家族 类Unix,Linux 源码模式 自由及开放源代码软件 内核类型 宏内核(Linux内核) 软件许可 Apache License、GPL等 1系统简介编辑 Android一词的本义指“机器人”,同时也是Google于2007年11月5日 Android logo相关图片(36张) 宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。 Android一词最早出现于法国作家利尔亚当(Auguste Villiers de l'Isle-Adam)在1886年发表的科幻小说《未来夏娃》(L'ève future)中。他将外表像人的机器起名为Android。Android的Logo是由Ascender公司设计的,诞生于2010年,其设计灵感源于男女厕所门上

Android 反编译apk 到java源码的方法

Android 反编译apk 到java源码的方法 分类:Android 2010-12-31 15:46 1931人阅读评论(1) 收藏举报Apk文件破解可见源码 1.获取apk的资源图片 直接用WinRAR打开,res/drawable直接拖拽出来即可。 2.获取xml文件信息 虽然能用WinRAR看到里面的xml文件,但是xml是经过优化的,无法直接查看,需要使用apktool工具,下载地址: https://https://www.360docs.net/doc/055986176.html,/p/android-apktool/。 下载apktool-1.3.1.tar.bz2和apktool-install-windows-2.2_r01-2.tar.bz2解压到同一个目录,然后把待破解的apk文件拷贝到同一目录,DOS在cmd下进入apktool 所在路径,然后输入apktool d "XXX1" "XXX2",XXX1指的是你要反编译的apk文件,XXX2指的是反编译后文件存放的路径, 如:apktool d "C:/taobao.apk" "C:/taobao" 3 .反编译dex获取Java源代码 Apktool工具只能反编译成smali的中间代码文件,这里需要借助另外一个开源工具:dex2jar,下载地址:https://www.360docs.net/doc/055986176.html,/p/dex2jar/。这个工具不能直接翻译成java文件,但是可以把dex文件转换成jar文件,然后可以通过jad工具把jar文件反编译成Java源文件,jd-gui下载地址: http://java.decompiler.free.fr/jd-gui/downloads/jd-gui-0.3.3.windows.zip。 详细步骤: 解压apk文件,直接拖拽(rar解压软件),找到classes.dex文件 在cmd下进入dex2jar.bat所在路径, 然后输入“dex2jar.bat XXX”,XXX指的是你要反编译的apk中的classes.dex 文件所在路径及名称(classes上面解压得到), 如:dex2jar.bat D:/classes.dex; 这样会生成一个classes.dex.dex2jar.jar文件,然后用jd-gui工具将jar文件反编译成java文件,选择保存所有,它会生成一个压缩文件,所有的源码都在这个压缩文件中,解压了就可以看到详细的代码了。很强大吧。

Android SDK介绍

Android SDK介绍 1.Android SDK简介 即Android Software Development Kit.它提供了在Windows/Linux/Mac平台上开发Android应用的开发组件,包含了在Android平台上开发移动应用程序的各种工具集。 2.Android SDK tools 1.Android模拟器(Android Emulator(emulator.exe)) 运行在计算机上的虚拟移动模拟器,可以使用模拟器来在一个实际的Android运行环境下设计,调试和测试应用程序。 2.集成开发环境插件(Android Development Tools Plugin for the Eclipse IDE 即 ADT) 可以直接从Eclipse访问其他Android开发工具.通过它可以进行包括截屏,管理端口转发(port-forwarding),设置断点,观察线程和进程信息. (a)它提供了一个新的项目向导(New Project Wizard),用于快速生成和建立起新 Android应用程序所需的最基本的文件.

(b) 它使得构建Android应用程序的过程变得自动化以及简单化. (c) 它提供了一个android代码编辑器,用于为Android 的manifest和资源文件编写 有效的XML. 3..调试监视服务(Dalvik Debug Monitor Service(ddms.bat) 4.它集成在Dalvik(Android平台虚拟机)中,用于管理运行在模拟器或设备上的进程,并协 助进行调试.可以用它来去除进程,选择一个特定程序来调试,生成跟踪数据,查看堆和线程数据,对模拟器或设备进行屏幕快照等. 5..Android调试桥(Android Debug Bridge(adb.exe)) 6.它用于向模拟器或手机设备安装应用程序的apk文件和从命令行访问模拟器或手机设 备.也可以用于将标准的调试器连接到运行在android模拟器或手机设备上的应用代码. 7..Android资源打包工具(Andoird Asset Packing Tool(aapt.exe)) 8.可以通过aapt工具来创建apk文件,这些文件包含了android应用程序的二进制文件和 资源文件. 9..Android接口描述语言(Android Interface Description Language(aidl.exe)) 10.它用来生成进程间接口代码,在服务中便可用到. 11..SQLite3数据库(sqlit3(sqlite3.exe)) 12.Android应用程序可以创建和使用SQLite数据文件,开发者和使用者也可以方便的访问 这些数据文件. 13..跟踪显示工具(Traceview(traceview.exe)) 14.它可以生成跟踪日志数据的图形分析视图,这些跟踪日志数据由android因公程序产生. 15..创建SD卡工具(mksdcard(mksdcard.exe)) 16.它帮助创建磁盘镜像,这个磁盘镜像可以在模拟器上模拟外部存储卡. 17..DX工具(dx(dx.exe)) 18.它将class字节码重写为android字节码(存储到dex文件中). 19..生成Ant构建文件(activityCreator(activitycreator.bat)) 20.它是一个脚本.用来生成Ant构建文件,Ant构建文件用来编译android应用程序.若是在 安装了ADT插件的Eclipse环境下开发则不需要这个脚本. 21..Android虚拟设备(Android Virtual Devices AVD) 22.每个android虚拟设备(AVD)模拟了单一的虚拟设备来运行android平台,这个平台至 少要包括自己的内核,系统图像和数据分区.开发者可以创建并保存多种虚拟模拟器配置,每种配置环境有其自己的平台版本,硬件配置以及SD卡和用户数据,还可以有不同的显示外观等个性化设置,运行时只需要制定需要使用哪个.即可实现多平台下的模拟测试.

相关文档
最新文档