apktool反编译工具使用教程
随着安卓的普及,用户越来越大,软件的要求也越来越高,写篇反编译教程,大家自己捣鼓修改软件吧。(说白了就是解包和打包APK文件)
一:首先下载附件,安装JAVA运行环境:安装地址:www.java/zh_CN(安装过的不用重复安装)
APKTool.zip (2.73 MB)
二:(1)解压APKTOOL到电脑(我的是F盘),打开电脑开始--运行CMD命令
一:首先下载附件,安装JAVA运行环境:安装地址:www.java/zh_CN(安装过的不用重复安装)
APKTool.zip (2.73 MB)
二:(1)解压APKTOOL到电脑(我的是F盘),打开电脑开始--运行CMD命令
(2)在窗口中输入命令定位到文件夹
命令说明:apktool d DJ.apk
apktool d为反编译命令,其中d代表decode
DJ.apk为被反编译的apk安装包的文件名(可以自己定义)
反编译后大家可以看到F盘,apktool文件夹内出现一个DJ文件夹,具体文件夹结构说明在本文结束有讲解
三:编译打包:(重新把修改过的文件打包为APK格式)
三:编译打包:(重新把修改过的文件打包为APK格式)
打包命令为:apktool b DJ(DJ为刚才的文件夹名称)
重新编译完成后,DJ文件夹内会新增一个dist文件夹,里面的DJ.apk文件就是重新编译好的apk安装包,签名后即可安装。
签名工具下载:地址:115/file/bhgviics#
APK文件结构说明(来源于互联网)
l
该文件是每个应用都必须定义和包含的,它描述了应用的名字、版本、权限、引用的库文件等等信息,如要把apk上传到Google Market上,也要对这个xml做一些配置。在apk中的l是经过压缩的,可以通过AXMLPrinter2工具解开,具体命令为:java -jar AXMLPrinter2.l java安装完整教程
META-INF目录
META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。在eclipse编译生成一个apk包时,会对所有要打包的文件做一个校验计算,并把计算结果放在META-INF目录下。这就保证了apk包里的文件不能被随意替换。比如拿到一个apk包后,如果想要替换里面的一幅图片,一段代码, 或一段版权信息,想直接解压缩、替换再重新打包,基本是不可能的。如此一来就给病毒感染和恶意修改增加了难度,有助于保护系统的安全。
res目录
res目录存放资源文件。包括图片,字符串等等。
lib目录
lib目录下的子目录armeabi存放的是一些so文件。这个地方多讲几句,都是在开发过程中摸索出来的。eclipse在打包的时候会根据文件名的命名规则(lib****.so)去打包so文件,开头和结尾必须分别为“lib”和“.so”,否则是不会打包到apk文件中的。其他非eclipse开发环境
META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。在eclipse编译生成一个apk包时,会对所有要打包的文件做一个校验计算,并把计算结果放在META-INF目录下。这就保证了apk包里的文件不能被随意替换。比如拿到一个apk包后,如果想要替换里面的一幅图片,一段代码, 或一段版权信息,想直接解压缩、替换再重新打包,基本是不可能的。如此一来就给病毒感染和恶意修改增加了难度,有助于保护系统的安全。
res目录
res目录存放资源文件。包括图片,字符串等等。
lib目录
lib目录下的子目录armeabi存放的是一些so文件。这个地方多讲几句,都是在开发过程中摸索出来的。eclipse在打包的时候会根据文件名的命名规则(lib****.so)去打包so文件,开头和结尾必须分别为“lib”和“.so”,否则是不会打包到apk文件中的。其他非eclipse开发环境
没有测试过。如果你是用SDK和NDK开发的话,这部分很重要,甚至可以通过把一些不是so文件的文件通过改名打包到apk中,具体能干些什么那就看你想干什么了。
assets目录
assets目录可以存放一些配置文件,这些文件的内容在程序运行过程中可以通过相关的API获得。具体的方法可以参考SDK中的例子:在sdk的 \SDK\1.6\android-sdk-windows-1.6_r1\platforms\android-1.6\samples\ApiDemos 例子中,有个ample..t 的例子,在这个例子中他把一个text文件放到工程的asset目录下,然后把这个txt当作普通文件处理。处理的过程在ReadAsset.java 中。同理,asset也可以放置其他文件。
classes.dex文件
classes.dex是java源码编译后生成的java字节码文件。但由于Android使用的dalvik虚拟机与标准的java虚拟机是不兼容的,dex文件与class文件相比,不论是文件结构还是opcode都不一样。目前常见的java反编译工具都不能处理dex文件。Android模拟器中提供
assets目录
assets目录可以存放一些配置文件,这些文件的内容在程序运行过程中可以通过相关的API获得。具体的方法可以参考SDK中的例子:在sdk的 \SDK\1.6\android-sdk-windows-1.6_r1\platforms\android-1.6\samples\ApiDemos 例子中,有个ample..t 的例子,在这个例子中他把一个text文件放到工程的asset目录下,然后把这个txt当作普通文件处理。处理的过程在ReadAsset.java 中。同理,asset也可以放置其他文件。
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。另,有人介绍到Dedexer是目前在网上能到的唯一一个反编译dex文件的开源工具,需要自己编译源代码。
resources.arsc
编译后的二进制资源文件
resources.arsc
编译后的二进制资源文件
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论