Android的.apk文件实际上就是一个zip文件 可以直接用winrar打开
如下图所示:
包括了一个META-INF目录
一个res目录
一个AndroidManifest.xml
一个classes.dex
AndroidManifest.xml是每个应用都必须定义和包含的,它描述了应用的名字、版本、权限、引用的库文件等等信息,如要把apk上传到Google Market上,也要对这个xml做一些配置。
META-INF目录
META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。在eclipse编译生成一个apk包时,会对所有要打包的文件做一个校验计算,并把计算结果放在META-INF目录下。而在Android平台上安装apk包时,应用管理器会按照同样的算法对包里的文件做校验,如果校验结果与META-INF下的内容不一致,系统就不会安装这个apk。这就保证了apk包里的文件不能被随意替换。比如拿到一个apk 包后,如果想要替换里面的一幅图片,一段代码,或一段版权信息,想直接解压缩、替换再重新打包,基本是不可能的。如此一来就给病毒感染和恶意修改增加了难度,有助于保护系 统的安全。
classes.dex文件
classes.dex是java源码编译后生成的java字节码文件。但由于Android使用的dalvik虚拟机与标准的java虚拟机是不兼容 的,dex文件与class文件相比,不论是文件结构还是opcode都不一样。目前常见的java反编译工具都不能处理dex文件。
Android模拟器中提供了一个dex文件的反编译工具dexdump。用法为首先启动Android模拟器,把要查看的dex文件用adb push上传的模拟器中,然后通过adb shell登录,找到要查看的dex文件,执行dexdump xxx.dex。
目前在网上能找到的另一个dex文件的反编译工具是Dedexer。Dedexer可以读取dex格式的文件,生成一种类似于汇编语言的输出。这种输出与jasmin[ ]的输出相似,但包含的是Dalvik的字节码。我们会在下一节详细介绍一下Dedexer。
res 目录
res目录存放资源文件。
resources.arsc
编译后的二进制资源文件。
其中dex的格式参见:http://www.retrodev.com/android/dexformat.html
apk文件解压后反编译:
图片等多媒体文件:没有编译,无需反编译。
layout等二进制xml文件:使用AXMLPrinter将其转换为可读的xml文件:java -jar AXMLPrinter2.jar main.xml > new_main.xml
工具下载地址:http://code.google.com/p/android4me/downloads/list
下图是直接打印出来一个main.xml
要打开AndroidManifest.xml或者其他xml也同理
class文件反编译:
Android模拟器中提供了一个dex文件的反编译工具,dexdump。用法为首先启动Android模拟器,把要查看的dex文件用adb push上传的模拟器中,然后通过adb shell登录,找到要查看的dex文件,执行dexdump xxx.dex。
然后找到上传的要打开的dex
然后可以看到反汇编之后的代码如下
目前在网上能找到的另一个dex文件的反编译工具是Dedexer。Dedexer可以读取dex格式的文件,生成一种类似于汇编语言的输出。这种输出与jasmin[ ]的输出相似,但包含的是Dalvik的字节码。
resources.arsc这个文件我是用了
汉化浪子编写的AndroidResEdit 软件 能看到里面的所有字段
直接用记事本打开大多数是乱码
打开如下图所示
以上就是apk文件的详细结构分析
apk文件如果把其中的资源文件进行替换修改 比如进行类似汉化操作的时候
需要重新对其签名
具体的可以替换的内容有res文件下下的资源文件
而且res下面的资源文件中的图片等多媒体文件:没有编译,无需反编译,这样就可以很轻松地获得一些比较好的apk应用里的图片,通过解码xml文件,可以还原原来应用的xml文件,这样,可以获得其界面布局文件。
在替换了之后,只需要使用Auto-sign工具重新对其进行签名即可,首先,删掉META-INF文件夹下的签名文件
删除CERT.RASA CERT.SF
只留下MANIFEST.MF文件即可
然后使用Auto-sign工具重新对其进行签名
具体的调用格式如下
重新签名之后的apk包即可和原来的包一样正常地安装到手机上
分享到:
相关推荐
实战:篡改APK名称、图标
Android APK加密防止Android应用被篡改,Android应用防篡改,加密技术防篡改
目前移动领域出现了相当部分的安全问题,新的恶意软件层出不穷,同时,企业对敏感数据保密性意识日益提高,作为移动开发者,有责任对最终用户的隐私和安全承担更多责任。另一方面,APP被篡改、盗用,直接伤害了...
一款基于ADocker引擎开发的多开工具,免root支持Android应用双开、无限多开,基于官方APP,不篡改原始包,免内存安装,分身更快速、更稳定、更安全,登录就是永久会员!
此外,您可以篡改多个 Android 清单属性,而无需分析其内部结构。 选择感兴趣的 APK 第一步是选择需要处理的包装。它可以位于计算机或 Android 设备上。 您只需要通过专用USB电缆将其连接到PC,即可立即获得有关它...
此外,您可以篡改多个 Android 清单属性,而无需分析其内部结构。 选择感兴趣的 APK 第一步是选择需要处理的包装。它可以位于计算机或 Android 设备上。 您只需要通过专用USB电缆将其连接到PC,即可立即获得有关它...
卓APK资源混淆加密重签名工具,可以对安卓APK文件的代码和资源文件进行混淆加密处理,可以对安卓APK文件进行加固,对代码和资源文件进行混淆,重新签名等功能. 可以保护APK,包括反破解、反逆向、防篡改等,可以防止...
该脚本篡改了apk以注入Facebook Stetho库,以检查非根设备上的应用沙箱数据。StethoInjector受m0bilesecurity RMS工具启发,该工具动态注入Stetho库创建的对等物,以执行静态篡改。 此脚本篡改了apk以注入Facebook ...
之前我写过一篇文章反编译Android的apk包到smali文件 然后再重新编译签名后打包实现篡改apk的功能。 最近又有一种新的方法来实现直接从Android apk包里的classes.dex文件,把dex码反编译到java的.class二进制码,然后...
Android应用防篡改机制的研究.pdf
互联网内容插入广告的可行性分析——以hm.baidu.com被劫持篡改插入代码为例.pdf
为了避免web页面被篡改,提出了一种文件过滤驱动的分布式网页防篡改系统。系统包括web文件监控、内容发布、web代理、备份恢复、监控中心5个子系统
安卓APK资源混淆加密重签名工具,可以对安卓APK文件的代码和资源文件进行混淆加密处理,可以对安卓APK文件进行加固,对代码和资源文件进行混淆,重新签名等功能. 可以保护APK,增加破解难度, 防止APK被篡改,重签名...
介绍了网页篡改的特点,分析了Web系统存在的问题,从保障网站安全性的角度 出发,阐述了网页防篡改系统的功能和作用。网页防篡改系统是保护Web网站不发送被篡改 内容并进行自动恢复的Web页面的综合性监管系统,由...
主要介绍了Java防止文件被篡改之文件校验功能,本文给大家分享了文件校验和原理及具体实现思路,需要的朋友可以参考下
JPEG图像篡改的盲取证技术作为一种数字图像盲取证技术正逐渐成为图像安全领域的一个新研究热点。 首先,简要介绍了国内外学者在JPEG图像篡改的盲法鉴证技术中的主要成就。 然后,根据篡改和检测的不同方法,将电流...
通过MD5文件对比,可防止他人恶意篡改资源,顾客使用放心。
基于对话框的网页文件防篡改系统的源代码,系统功能相对比较全的,可以自动监视、检测、修复篡改的文件,可以提示修改文件的路径和是否被修复
档案管理中电子文件防篡改技术的应用及启示.pdf