用安卓apk反编译利器Apktool

合集下载

APK反编译工具总结

APK反编译工具总结

APK反编译工具总结APK反编译⼯具总结⼯前APP市场混乱,打包党横⼯,很多优秀的应⼯被恶意注⼯和篡改,形成盗版应⼯,导致⼯户下载安装后被扣费、扣流量、盗取信息等。

盗版应⼯的横⼯,也使APP开发公司和个⼯的收⼯、名声受到严重损害。

由于安卓系统的开放性,安卓APK包很容易被破解,在⼯客破解的过程中,⼯多是通过某些⼯具进⼯暴⼯攻击。

那么APK反编译、反汇编的⼯具都有哪些?APK是Android Package的缩写,即Android安装包。

APK⼯件其实是zip格式的⼯个压缩包,但后缀名被修改为APK,通过UnZip 解压后,就可以看见DEX⼯件。

1、APKT oolAPKTool是GOOGLE提供的APK编译⼯具,需要JAVA运⼯环境。

可以对APK进⼯反编译,使⼯它可以将其反编译成⼯常接近打包前的原始格式。

逆向AndroidManifest.xml、资源⼯件resources.arsc以及将dex⼯件反编译成可以调试的smali⼯件。

修改后,可以将其编译回apk ⼯件。

APKT ool也可以⼯来汉化Android软件然后重新打包发布。

2、VirtuousVirtuous团队开发制作的Virtuous Ten Studio (VTS)是迄今为⼯功能最强的APK、JAR编辑⼯具,这个程序允许您在⼯个易于使⼯和熟悉的环境管理整个Android项,可以反编译M10、APK、JAR。

需要.NET 4.0环境⼯持,Microsoft .NET Framework 4(独⼯安装程序)3、ApkAnalyser 5.2⼯款APK可视化分析⼯具。

4、ApkT oolkit v2.1有如下功能:反编译.apk ,重建.apk,签名.apk,优化.apk,.apk转.jar,反编译.dex,重建.dex,.dex转.jar5、APK签名⼯具signapkAPKtool编译⼯成的apk若没签名,不能安装,可以⼯signapk对apk⼯件签名。

apk文件反编译以及签名打包

apk文件反编译以及签名打包

android技巧:apk文件反编译以及签名打包(dex2jar&jd,apktool,apk-sign)通过dex2jar和jd我们可以反编译apk中的dex,可以比较完美的查看java源文件;通过apktool可以反编译apk中的xml等资源文件,然后通过apk-sign签名,可以制作成修改版的可发布apk文件。

1.dex2jar反编译dex文件:a.下载文件见附件:apktool-1.3.1.tar.bz2,jd-gui.zip,或点击这里下载;解压;b.把apk文件后缀名改为.zip,然后解压缩其中的class.dex文件,它是java文件编译再通过dx工具打包成的,所以现在我们就用上述提到的2个工具来逆方向导出java源文件;c.把class.dex拷贝到dex2jar.bat所在目录,运行dex2jar.bat class.dex,生成classes.dex.dex2jar.jar ;d.运行jd-gui工具(绿色无须安装),打开上面生成的jar文件,即可看到源代码;2.apktool反编译xml等资源文件:a.安装java环境,下载文件件附件:apktool-1.3.1.tar.bz2,apktool-install-windows-2.2_r01-2.tar.bz2,或点击这里下载;把这两个文件解压到同一目录下,该目录下cmd中运行apktool获得帮助信息;b.apktool d XXX.apk ABC 反编译XXX.apk到文件夹ABCc.apktool b ABC 从反编译后的文件夹ABC重建APK,输出到ABC\dist\out.apkd.这样我们就可以把远apk文件通过反编译后,然后对里面资源文件作修改,然后再重建为apk即可;3.apk-sign签名apk文件:a.下载文件件附件apk-sign.rar,解压到apk-sign文件夹;b.将XXX.apk文件解压到XXX文件夹,然后将XXX直接拖到apk-sign文件中的sign_pack.bat批处理文件上以执行,弹出cmd执行窗口,等待执行完即可;c.生成新文件夹XXX_signed中的apk文件即为已签名;apktool用法C:\Documents and Settings\Administrator>cd e:E:\C:\Documents and Settings\Administrator>e:E:\>cd android_devE:\android_dev>cd apk反编译E:\android_dev\apk反编译>apktool.batApktool v1.3.2 - a tool for reengineering Android apk filesCopyright 2010 Ryszard Wi?niewski <brut.alll@>Apache License 2.0 (/licenses/LICENSE-2.0) Usage: apktool [-v|--verbose] COMMAND [...]COMMANDs are:d[ecode] [OPTS] <file.apk> [<dir>]Decode <file.apk> to <dir>.OPTS:-s, --no-srcDo not decode sources.-r, --no-resDo not decode resources.-d, --debugDecode in debug mode. Check project page for more info.-f, --forceForce delete destination directory.-t <tag>, --frame-tag <tag>Try to use framework files tagged by <tag>.--keep-broken-resUse if there was an error and some resources were dropped, e.g.:"Invalid config flags detected. Dropping resources", but you want to decode them anyway, even with errors. You will have tofix them manually before building.b[uild] [OPTS] [<app_path>] [<out_file>]Build an apk from already decoded application located in<app_path>.It will automatically detect, whether files was changed and performneeded steps only.If you omit <app_path> then current directory will be used.If you omit <out_file> then<app_path>/dist/<name_of_original.apk>will be used.OPTS:-f, --force-allSkip changes detection and build all files.-d, --debugBuild in debug mode. Check project page for more info.if|install-framework <framework.apk> [<tag>]Install framework file to your system.For additional info, see: /p/android-apktool/ E:\android_dev\apk反编译>。

apktool使用教程

apktool使用教程

apktool使用教程1.APKTool使用环境配置APKTool是GOOGLE提供的APK编译工具,需要JAVA运行环境,最新版本为JDK1.8。

安装后设置环境变量以方便其他程序能够调用JAVA:以WIN7为例,在桌面上右键点击计算机——>属性——>高级系统设置——>环境变量——>在下边的系统变量里新建一个变量,变量名为JAVA_HOME,值为JAVA的安装路径,比如我的是C:\Program Files (x86)\Java\jdk1.7.0_67 然后添加CLASSPATH .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\ tools.jar ;PATH %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin2.APKTool的使用apktool文件夹放在D盘根目录,应用改名为f.apk放在此文件夹下win+R然后输入cmd输入D:然后回车。

(D是说apktool所在的盘)输入cd apktool 然后回车(这个命令式说打开apktool这个文件夹)输入apktool if f.apk 然后回车(这个命令式说在CMD模式安装f.apk)输入apktool d f.apk 然后回车(这个命令是说反编译f.apk d 就是反编译的命令)然后apktool文件夹就会出现一个f的文件夹(接下去还要用到cmd,先不要关掉。

)f文件夹里面就是反编译出来的文件了,这样就可以用修改代码了(将xml修改为txt即可)。

修改文件名字: value/string/app_name修改完成后,就要回编译,在命令提示符中继续输入apktool b f (这个命令就是说回编译f文件夹,b是回编译,f是指F 文件夹)成功后,f文件夹中会出现一个dist的文件夹,里面有一个f.apk (有就是成功了,没有就是失败了)用APKSign给编译出来的文件签名即可安装。

AndroidAPK反编译apktool使用教程

AndroidAPK反编译apktool使用教程

AndroidAPK反编译apktool使⽤教程2017年棋牌游戏突然就⽕了,正所谓春江⽔暖鸭先知本猿处在软件⾏业中就能清晰的感受到市场的变化,最近⽼家那边也是玩的风⽣⽔起,于是最近闲暇时光想到反编译下这些棋牌软件,看看代码实现的思路(注:反编译不是让各位开发者去对⼀个应⽤破解搞重装什么的,主要⽬的是为了促进开发者学习,借鉴好的代码,提升⾃我开发⽔平。

)⼯具介绍:apktool作⽤:主要查看res⽂件下xml⽂件、AndroidManifest.xml和图⽚。

(注意:如果直接解压.apk⽂件,xml⽂件打开全部是乱码)dex2jar作⽤:将apk反编译成Java源码(classes.dex转化成jar⽂件)jd-gui作⽤:⽤来查看APK中classes.dex转化成出的jar⽂件,即源码⽂件2017年12⽉1⽇新版本apktool⽤法:1.下载两个⽂件apktool.bat和apktool.jar(这个如果你下载的⽂件有版本号,⽐如apktool_2.3.0.jar,就要改名字为apktool.jar),这⾥我已经打包好了传到了我的CSDN(),直接下载就OK了;2.然后把上⾯两个⽂件解压放到C:\Windows下⾯,放到这⾥是可以全局进⾏使⽤(我是windows系统,其他系统按照⾃⼰的来)如下图:3.使⽤⽅法把要解压的apk⽂件放在⾃⼰任意⼀个盘的⽬录下,在apk的⽬录下,按住shift+⿏标右键打开cmd⿊窗⼝如下图:接下来输⼊官⽅给的命令//当输⼊完这两个命令后apktool d test.apkapktool b test//出现如下图⼀样的说明就反编译成功了,在他的同级⽬录下就多出了⼀个⽂件夹,⾥⾯就是反编译出来的源码,具体有啥我就不细说了哈,⾃⼰慢慢研究吧!4.Apk反编译得到Java源代码下载上述⼯具中的dex2jar() 和 jd-gui() ,解压将要反编译的APK后缀名改为.rar或则 .zip,并解压,得到其中的额classes.dex⽂件(它就是java⽂件编译再通过dx⼯具打包⽽成的),将获取到的classes.dex放到之前解压出来的⼯具dex2jar-2.0⽂件夹内,在命令⾏下定位到d2j-dex2jar.bat所在⽬录(现在这个⽬录增加了许多命令,⼀定要看清楚哦),输⼊d2j-dex2jar.bat classes.dex效果如下:说明就成功了会看到同级⽬录下会⽣成⼀个classes_dex2jar.jar的⽂件,然后打开⼯具jd-gui⽂件夹⾥的jd-gui.exe,之后⽤该⼯具打开之前⽣成的classes_dex2jar.jar⽂件,便可以看到源码了,效果如下:通过反编译,你可以获知该应⽤⽤到了什么第3⽅的库⽂件,它的代码是如何编写的等等。

Apk反编译

Apk反编译

Apk反编译1.获取xml文件信息要用到apktool工具,利用工具包Androidby下的“Androidby反编译工具.exe”反编译syslog.apk反编译出来的文件夹syslog跟syslog.apk是在同一层:2.反编译dex获取java源代码Apltool只能编译smail,不能编译dex文件,所以要用到dex2jar文件用dex2jar文件下的“dex2jar.bat”操作,直接将syslog文件夹下的“classes.dex”拖到“dex2jar.bat ”文件下编译,得到“classes_dex2jar.jar”文件,该文件与“classes.dex”在同一层;利用dex2jar\jd-gui-0.3.5.windows文件夹下的‘jd-gui.exe’查看得到的‘classes_dex2jar.jar’文件查看结果如下:详细分析:1:注册消息:病毒注册并响应了3个消息,分别是:启动完成、监控拨出电话、接收短信,以便实现对应的功能。

注册服务:实现服务的定时启动2:权限:android.permission.READ_PHONE_STATE读取电话状态android.permission.MODIFY_PHONE_STATE修改电话状态android.permission.BROADCAST_STICKY允许一个程序广播常用intentsandroid.permission.PROCESS_OUTGOING_CALLS允许程序监视、修改有的是关播出电话android.permission.RECEIVE_BOOT_COMPLETED开机自动启动android.permission.UPDATE_DEVICE_STATS更新设备状态android.permission.INTERNAL_SYSTEM_WINDOW允许打开窗口使用系统用户界面android.permission.ADD_SYSTEM_SERVICE允许程序发布系统级服务android.permission.VIBRATE允许访问振动设备android.permission.SEND_SMS允许发送短息android.permission.RECEIVE_SMS允许拦截接收短信android.permission.READ_SMS允许读短信数据库android.permission.WRITE_SMS允许修改短信数据库android.permission.INTERNET允许连接网络android.permission.CHANGE_CONFIGURATION允许一个程序修改当前设置,如本地化android.permission.WAKE_LOCK允许使用PowerManager的WakeLocks保持进程在休眠时从屏幕消失android.permission.STATUS_BAR允许一个程序扩展收缩在状态栏,android开发网提示应该是一个类似Windows Mobile中的托盘程序android.permission.ACCESS_WIFI_STATE允许程序访问Wi-Fi网络状态信息android.permission.DEVICE_POWER允许访问底层电源管理android.permission.DISABLE_KEYGUARD允许程序禁用键盘锁android.permission.WRITE_APN_SETTINGS允许程序写入API设置android.permission.CHANGE_WIFI_STATE允许程序改变Wi-Fi连接状态android.permission.ACCESS_NETWORK_STATE允许程序访问有关GSM网络信息android.permission.CHANGE_NETWORK_STATE允许程序改变网络连接状态android.permission.BROADCAST_SMS允许程序广播一条短信回执android.permission.WRITE_SETTINGS允许程序读取或写入系统设置android.permission.WRITE_EXTERNAL_STORAGE允许写SD卡不法分子就通过这些来获取:1. str2 =localCursor.getString(localCurso r.getColumnIndexOrThrow("address")).toString();//读取电话号码2. Date localDate = newDate(Long.parseLong(localCursor.getString(localCursor.getClumnIndexOrThrow("date")).toString()));//读取时间3.((AlarmManager)paramContext.getSystemService("alarm")).set(2, SystemClock.elapsedRealtime() + paramInt * 1000,pendingIntent); //我们设定一个时间,然后在该时间到来时,AlarmManager为我们广播一个我们设定的Intent,启动后台4.Cursor localCursor =paramContext.getContentResolver().query(localUri, null,null, null, null);//通过游标查询出收件箱的地址5. 每隔1500s发送一次报告public static final int TimerReportInSeconds= 1500;6.如果接收到的短信以”,”开始,则清除控制信息,同时提取短信中的号码并发送报告。

Android开发apk反编译和二次打包教程

Android开发apk反编译和二次打包教程

Android开发apk反编译和⼆次打包教程作为Android开发者,⼯作中少不了要反编译别⼈的apk,当然主要⽬的还是为了学习到更多,取彼之长,补⼰之短。

今天就来总结⼀下Android反编译和⼆次打包的⼀些知识。

⾸先声明本⽂的⽬的是为了通过例⼦讲解反编译和⼆次打包的原理和⽅法,继⽽作为后续讲解防⽌⼆次打包和App安全的依据,并不是⿎励⼤家去重新打包别⼈的App,盗取他⼈劳动成果。

本⽂⾸先介绍⼏种Android反编译⼯具的使⽤,然后实现在不需要知道源代码的情况下,仅通过修改反编译得到的smali⽂件实现修改apk逻辑功能的⽬的。

Android中常⽤的反编译⼯具有三个:dex2jar、jd-gui和apktool,这三个⼯具的作⽤如下:dex2jar:将apk中的classes.dex⽂件转换成jar⽂件。

jd-gui:查看由dex2jar转换成的jar⽂件,以界⾯的形式展⽰反编译出来的Java源代码。

apktool:反编译⽣成smali字节码⽂件,提取apk中的资源⽂件。

为了尽可能的把问题讲清楚,我们来实现⼀个很简单的例⼦。

⾸先创建⼀个⼯程DecompileDemo,在MainActivity中定义⼀个布局,其中包含⼀个Button,点击会打印⼀段⽇志。

public class MainActivity extends AppCompatActivity implements View.OnClickListener {private static final String TAG = "MainActivity";private Button btn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);btn = (Button) findViewById(R.id.btn);btn.setOnClickListener(this);}@Overridepublic void onClick(View v) {Log.d(TAG,"Button is clicked");}}将这个⼯程编译⽣成的apk解压,取出其中的classes.dex放在dex2jar⼯具的⽬录下,然后执⾏命令会在当前⽬录下⽣成class-dex2jar.jar⽂件然后打开jd-gui,将class-dex2jar.jar⽂件拖进去,就可以看到反编译出来的源代码。

apktool反编译详细使用教程

apktool反编译详细使用教程

apktool反编译详细使⽤教程安装反编⼯具地址apktool⼯具包下载地址apktool.rar1.⾸先安装需要JAVA环境,先下载JDK/JRE,已经有JAVA环境的可跳过此步java JDK:java JRE:还得设置JAVA环境变量CLASSPATH .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jarJAVA_HOME C:\Program Files\Java\jdk1.6.0_10 解释JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径Path %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin环境变量配置好了,我们就可以反编译了,(如果有不明⽩的有两种⽅法,1,请教我,2在论坛搜搜怎么设置JAVA环境变量)反编译的使⽤反编译⼯具,⽹上有很多,有APKTOOL,Doapk ,apkmanage..........,你们可以随便下载⼀个,地址我就不提供了,你们⾃⼰搜索⼀下,上百度,上论坛上搜都有的,但apkTOOL⼯具必须包含⼀下⼏个下载完成反编译⼯具后,验证是否安装成功,点击开始菜单,运⾏,输⼊CMD回车按⼀下回车出现,在输⼊APKTOOl,输⼊apktool,要看腻把apkTOOL安装在哪个盘,举例我的,我是安装在D盘APkTOOL⽂件下,先在cmd下输⼊D:回车,在输⼊CD apktool,转⼊apktool⽂件夹下,输⼊apktool 出现如下反应,,说明你安装成功了,可以进⾏APK反编译了,下⾯我已反编译SystemUI.apk为例。

⾸先的知道⼀下⼏条指令的意思1,apktool d SysteUI.apk 12意思是将SystemUI.apk解包到12⽂件下,12⽂件夹不⽤创建,会⾃动⽣成2,apktool b 12打包12⽂件夹(将会⾃动把12⽂件夹⾥的修改过得APK解包后修改完后⾃动打包,⽣成resources.arsc,⽂件,这就是我们反编译的主要⽬的,当然还有其他⽬的,后⾯将会说明怎么apktool需要反编译的⽬的,⽣成的⽂件。

APK反编译相关

APK反编译相关

APK反编译相关下面就来说说如何将一个apk反编译出来。

一、准备必要工具工欲善其事,必先利其器,首先我们要下载好反编译apk时需要的相关工具1.1、使用工具1.apktool (资源文件获取)2.dex2jar(源码文件获取)3.jd-gui (源码查看)1.2、工具介绍apktool作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看dex2jar作用:将apk反编译成java源码(classes.dex转化成jar文件)jd-gui作用:查看APK中classes.dex转化成出的jar文件,即源码文件1.3工具下载apktool下载地址:https:///iBotPeaches/apktool/downloads 下载好之后得到一个如下图所示的jar文件dex2jar下载地址:/projects/dex2jar/files/下载完成之后,得到一个如下图所示的压缩包jd-gui下载地址:http://jd.benow.ca/下载完成之后,得到一个如下图所示的压缩包:到此,需要使用到的3个相关工具都下载好了,在这里说明一下jd-gui的下载,我从官方网站上点击下载时会经常出现如下图所示的问题但是多试几次又可以下载了,所以如果有遇到这个问题的朋友们不妨多试几次,或者从别的地方下载jd-gui,jd-gui算是做Java开发的一个必备工具了,用它来将class反编译成java源代码是非常方便的,网上搜索一下一般都可以下载到,只不过版本不一定是最新的。

二、Apk反编译流程为了方便进行反编译,我们将上述下载好的3个工具统一放到一个文件夹中,例如:然后将【dex2jar-2.0.zip】和【jd-gui-windows-1.3.0.zip】分别解压到当前文件夹,如下图所示:2.1、使用apktool反编译apk得到图片、XML配置、语言资源等文件进入CMD命令行,如下:切换到上述的3个工具的所在目录,如:E:\AndroidDevelopTool\Android反编译工具包接下来我们要做的就是运行apktool_2.0.1.jar这个jar文件来将apk文件进行反编译,在java 中,运行可执行jar包的命令是:java -jar jar包名.jar使用如下的命令运行apktool_2.0.1.jar反编译MMTS-release-1.0.2.apkjava -jar apktool_2.0.1.jar d -f E:\AndroidDevelopTool\Android反编译工具包\测试apk\MMTS-release-1.0.2.apk -o MMTS这个命令是启动apktool_2.0.1.jar将位于【E:\AndroidDevelopTool\Android反编译工具包\测试apk\】目录下的"MMTS-release-1.0.2.apk"这个apk反编译,然后将反编译生成的文件存放到当前目录(apktool_2.0.1.jar所在的目录,也就是"E:\AndroidDevelopTool\Android反编译工具包"目录)下的一个【MMTS】文件夹中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用安卓apk反编译利器Apktool,教你去掉软件里的广告(只用于学习交流。

)给大家介绍下windows环境下使用Apktool的方法。

安装:1.先装JAVA环境,JDK/JRE都行,官网下载装过的就跳过吧!2.下载apktool.jar及相关文件,这里下apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip3.解压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到文件夹PATHapktool 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文件。

接着用Auto_Sign工具将out.apk重新签名。

(至于Auto_Sign的使用,请google 之,或者问内地首富的摆渡)Auto_Sign下载地址/f/8079187.html?from=like签名完成后就OK了。

貌似写得有点模糊了,不大明白的google吧!最后,把得到的apk安装到gPhone上,碍事而且费流量的广告就被剔除了!再最后忏悔下:断他人钱财,谋己之利。

罪过了,对不起了,某某开发者!附上效果图:【转帖】关于APK文件的解包打包和修改相信每位玩机的人对APK文件都不陌生。

你可能每天都与APK文件打交道,无论是安装和卸载有用的应用工具、插件、好玩的游戏等等。

你可曾知道这些每天都伴随着你的APK文件是什么吗?怎样对它们作些修改呢?比如说:对英文版进行汉化、修改功能、修改文字描述、去掉广告等等。

本文介绍APK的基本知识、结构、APK文件的解包、打包及签名,以及对APK文件的常规修改。

1.APK文件简介APK是Android Package的缩写,即即Android application package文件或Android 安装包。

每个要安装到Android平台的应用都要被编译打包为一个单独的文件,后缀名为.apk。

APK文件是用专业软件eclipse编译生成的文件包,其中包含了应用的二进制代码、资源、配置文件等。

通过将APK文件直接传到Android手机中执行即可安装。

APK文件其实就是zip格式,但其扩展名被改为apk,用解压软件可以直接打开。

通过WinRAR或UnZip解压后,你会看到有几个文件和文件夹。

一个典型的APK文件通常有下列内容组成:AndroidManifest.xml 程序全局配置文件classes.dex Dalvik字节码resources.arsc 编译后的二进制资源文件mete-INF 该目录下存放的是签名信息res 该目录存放资源文件assets 该目录可以存放一些配置文件下面对这些文件和目录做些基本的注释和介绍。

• AndroidManifest.xml该文件是每个应用程序都必须定义和包含的文件,它描述了应用程序的名字、版本、权限、引用的库文件等等信息。

需要解包后才能加以阅读。

• classes.dex文件classes.dex是java源码编译后生成的java字节码文件。

dex是Dalvik VM executes 的全称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。

• resources.arsc编译后的二进制资源文件。

• mete-INF目录mete-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。

在eclipse编译生成一个apk包时,会对所有要打包的文件做一个校验计算,并把计算结果放在mete-INF目录下。

这就保证了apk包里的文件不能被随意替换。

比如拿到一个apk包后,如果想要替换里面的一幅图片,一段代码,或一段版权信息,想直接解压缩、替换再重新打包,基本是不可能的。

如此一来就给病毒感染和恶意修改增加了难度,有助于保护系统的安全。

• res目录res目录存放资源文件。

包括图片,字符串等等。

解包后,几乎所有可能的修改和编辑工作基本都在这里。

• assets目录assets目录可以存放一些配置文件,这些文件的内容在程序运行过程中可以通过相关的API获得。

2.APK文件的解包和打包APK文件是用专业软件eclipse编译生成的文件包。

在网上可以找到许多软件来对APK的内容进行反编译,例如:可以通过AXMLPrinter2工具和命令:java -jar AXMLPrinter2.jar AndroidManifest.xml 解开在apk中的AndroidManifest.xml。

最近,业界有一个功能强大的解包打包工具包apktool,可以在Windows下用来方便快速地对APK文件进行解包和打包,给修改和编辑工作带来许多方便。

下面来介绍它的使用。

1) APKtool软件包APKtool软件包有2个程序组成:apktool.jar 和aapt.exe另外提供一个批处理文件:apktool.bat,其内容为:java -jar "%~dp0apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9运行apktools.jar需要java环境(1.6.0版本以上)。

apktool.jar用于解包,apktool.jar和aapt.exe联合用于打包。

2) APK文件的解包下面以解开Contacts.apk为例。

首先把Contacts.apk复制到当前工作目录下(例: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) Framework框架文件在解开APK文件时,apktool需要框架文件(framework-res.apk)来解码和打包。

Apktool已经包含了标准的框架,所以在大多数APK文件的解包时,不需要另外提供框架文件。

但是,某些制造商使用了他们自己的框架文件,为了解包,就不得不从手机中把框架文件(framework-res.apk)提取出来,然后安装到计算机。

安装命令是:apktool if framework-res.apk安装后就会得到:~apktoolframework1.apk5) 解包、解包和签名批处理在实际使用时,可能对多个APK文件进行处理。

方便的做法是写成批处理文件。

打包和签名可以一次完成。

解包批处理命令:for %%i in (*.apk) do java -jar apktool.jar d %%i _%%i && move _%%iModifying_Files && copy %%i Backuped_Raw_Files && @echo File [%%i] unpacking process is completed!打包和签名批处理命令:for /d %%i in (*) do cd.. && java -jar apktool.jar b Modifying_Files%%i && java-jar signapk.jar testkey.x509.pem testkey.pk8 Modifying_Files%%idist*.apk %%i&& ren %%i New%%i && move New%%i Modified_Signed_Files && @echo %%i Complete repacking and Signing! && cd Modifying_Files3.应用实例:APK解包后的编辑和修改为什么要对APK文件进行解包?当然要对其内容进行必要的修改。

修改什么呢?通常,如果只是对图像进行替换,没有必要进行解包和打包。

用WinRAR 打开APK文件,直接做替换就可以了。

但是,如果要对文字和其它非图像类内容进行修改,那只能通过解包解码了。

下面几项任务需要对APK进行解包和打包。

这里只作大概介绍,请自己去找详细的操作方法和教程。

1) 汉化APK软件在res文件夹中,我们可以看到有很多values-***的文件夹,这就是语言包。

values 是英文语言包,values-zh是中国地区语言包(包含港澳台及内地),values-zh-rCN 是中文简体语言包(只包含内地),values-zh-rTW是中文繁体语言包(港澳台)。

除此以外,其它地区的语言包都是精简的对象,可以不过多了解。

在values文件夹里,通常有arrays.xml、strings.xml等语言文件,要作汉化就要对这些文件进行修改。

有时也需要修改其它xml文件,一个一个地认真查看。

相关文档
最新文档