余世维讲座领导商数:Java 解压缩 APK 并重新局部替换文件后打包
来源:百度文库 编辑:中财网 时间:2024/10/05 10:15:20
纯入门贴,高手轻拍。
感谢martincz给的帮助。
milestone相关的sbf下载地址:
http://and-developers.com/motorola_milestone:sbf
sbf文件是什么就先不多介绍了,刷过的都知道。
下载下来的sbf文件,用一个叫SBF Recalc的软件可以打开sbf文件,并将其拆成若干个
用sbf recalc打开sbf文件之后,点split flash file,就会在sbf的同目录生成一些 smg 文件。
部分smg文件就是yaffs2格式的映像,使用unyaffs工具可以解出来。
sbf recalc下载地址:
unyaffs的下载地址:
http://code.google.com/p/unyaffs/
下载下来之后是c的源码,安装cygwin之后,用gcc unyaffs.c即可编译出一个a.exe来。用a.exe可以解开部分smg文件
==================================================================================进一步介绍apk文件如何拆解吧
参考资料:http://jlins.javaeye.com/blog/561298
apk文件本质上是zip文件,先用zip解压。
解压之后的xml文件是二进制的,如果电脑上装了java,可以用下面命令转换:
java -jar AXMLPrinter2.jar xxx.xml > new_xxx.xml
AXMLPrinter2工具下载地址:http://code.google.com/p/android4me/downloads/list
==================================================================================
APK 拆解用APKTOOL
拆解後可以打包
http://code.google.com/p/android-apktool/
http://lvwind.net/2010/04/apktool-decode/
APK 拆解用APKTOOL
拆解後可以打包
http://code.google.com/p/android-apktool/
http://lvwind.net/2010/04/apktool-decode/
===========================Android apk文件拆解与重新打包===============================http://quanminchaoren.iteye.com/blog/834829
Android apk文件拆解与重新打包
- 博客分类:
- Android源码开发
apk文件本质上是zip文件,先用zip解压。
解压之后的xml文件是二进制的,如果电脑上装了java,可以用下面命令转换:
java -jar AXMLPrinter2.jar xxx.xml > new_xxx.xml
AXMLPrinter2工具下载地址:http://code.google.com/p/android4me/downloads/list
参考资料:http://www.andmoto.com/viewthread.php?tid=3588&extra=page%3D1
APK 拆解用APKTOOL
拆解後可以打包
http://code.google.com/p/android-apktool/
http://lvwind.net/2010/04/apktool-decode/
=============================apk的文件结 ==================================
http://www.iteye.com/topic/391448
apk实际是就是一个rar/zip,重命名rar后可以用winrar直接打开
apk文件一般包括如下内容:
META-INF -----没有签名的apk没有这个目录,该目录下包括签名信息
res -----资源文件目录,和工程中的一样
AndroidManifest.xml -----主描述文件,和工程中的一样
classes.dex -----所有的java类编译后的文件,是Dalvik VM需要的字节码
resources.arsc -----res目录的结构,重新组织过的二进制文件,格式未知
其中dex的格式参见:http://www.retrodev.com/android/dexformat.html
把这个搞清楚了,就可以反编译dex文件了:)
==================================================================================
============================ APK 文件反编译 ===========================================
http://seya.iteye.com/blog/867699
apk反编译
- 博客分类:
- Android技术学习讨论
二、将classes.dex文件解压出来,然后使用工具反编译成.jar文件,再进一步反编译出java文件
1.在cmd下进入dex2jar.bat所在路径,然后输入“dex2jar.bat XXX”,XXX指的是你要反编译的apk中的classes.dex文件所在路径及名称,比如:我的dex2jar.bat在D:\Android\apk_decode\dex2jar-0.0.7-SNAPSHOT路径下, classes.dex在D:\Android下,所以: 你进入dex2jar.bat路径下后,输入dex2jar.bat D:\Android\classes.dex,这样会生成一个jar文件。
2.用rar解压出jar文件中的class文件,然后用jad或DJ Java Decompiler反编译工具将.class文件反编译成.java文件
3.不解压出jar中的class文件,直接用JD GUI工具打开jar文件
4.步骤2和3选择其中一个即可,建议用步骤2,步骤3可能出现乱码
三、上面操作只能得到class文件,下面利用Google提供的apktool得到xml文件
1. 下载apktool,可以去Google的官方下载,地址:http://code.google.com/p/android-apktool/得,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip两个包都要下。解压apktool.jar到 C:\Windows ,解压apktool-install-windows.zip到任意文件夹(例如E盘根目录)。
2. Win+R 运行CMD,用cd命令转到apktool-install-windows所在文件夹,输入apktool看看。会列出一些帮助的话就成功了(解释d为加压 第一个路径为你的apk所在的位置。第二个是要输出的位置)
apktool d XXX.apk ABC 反编译XXX.apk到文件夹ABC
3. 在解压后的文件夹中可以得到apk的xml配置文件
四、将“二”中得到的class文件和“三”中得到的xml文件组合成一个android工程,即可得到完整的apk源码。
- HiAPN.zip (134.3 KB)
- 下载次数: 9
=========================== APK 文件反编译问题总结 ==================================
http://zkh43javaeye.iteye.com/blog/948597
apk反编译问题总结(转)
- 博客分类:
- Android
http://www.eoeandroid.com/thread-30768-1-1.html
今天反编译一个apk,遇到了很多问题,查了好几个文档,现在把前人的一些经验和自己碰到的问题记录下来,作一个总结,与大家分享,希望对大家有帮助
一、找到apk中的class.dex:
把apk文件改名为.zip,然后解压缩其中的class.dex文件,它就是java文件编译再通过dx工具打包成的。
二、得到java源文件
工具准备:
1、把dex文件反编译为jar文件的工具。(dex2jar)
http://code.google.com/p/dex2jar/downloads/list
2、把jar反编译为java的工具。(JD-GUI)
http://java.decompiler.free.fr/?q=jdgui
反编译步骤:
1、把class.dex拷贝到dex2jar.bat所在目录,直接拖动class.dex到dex2jar.bat,生成classes.dex.dex2jar.jar。
或者:1.在cmd下进入dex2jar.bat所在路径,然后输入“dex2jar.bat XXX”,XXX指的是你要反编译的apk中的classes.dex文件所在路径及名称,比如:我的dex2jar.bat在D:\Android\apk_decode\dex2jar-0.0.7-SNAPSHOT路径下, classes.dex在D:\Android下,所以: 你进入dex2jar.bat路径下后,输入dex2jar.bat D:\Android\classes.dex,这样会生成一个jar文件。
2.用rar解压出jar文件中的class文件,然后用jad或DJ Java Decompiler反编译工具将.class文件反编译成.java文件
3、运行JD-GUI工具(它是绿色无须安装的),打开上面的jar文件,在File下有个Save JAR Source,它可以生成src源代码。
三、上面操作只能得到class文件,下面利用Google提供的apktool得到xml文件
1. 下载apktool,可以去Google的官方下载,地址:http://code.google.com/p/android-apktool/得,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip两个包都要下。解压apktool-1.0.0.tar.bz2得到apktool.jar放到 C:\Windows ,解压apktool-install-windows.zip到任意文件夹(例如E盘根目录)。(我是两个包解压后都放在C:\Windows下)
2. Win+R 运行CMD,用cd命令转到apktool-install-windows所在文件夹,输入apktool看看。会列出一些帮助的话就成功了(解释d为加压 第一个路径为你的apk所在的位置。第二个是要输出的位置)
在这一步中我碰到这样一个问题:
Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version n
umber in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
4)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
版本问题,装了个jre6,在360中的软件管家可以找到的,记得装完后配置path路径,果然,ok。
继续:
apktool d e:\a.apk(apk路径)ABC(文件夹名称)
这时当前目录下生成 ABC文件夹,里面就是我们想要的东东了
四、将“二”中得到的java文件和“三”中得到的xml文件组合成一个android工程,即可得到完整的apk源码。
但是好像项目中用到的包没用弄进来,很是郁闷,希望哪位大侠弄懂之后教我,谢谢