一、找到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源码。
但是好像项目中用到的包没用弄进来,很是郁闷,希望哪位大侠弄懂之后教我,谢谢
扩展阅读:
http://bbs.zoopda.com/thread-60736-1-1.html
http://bbs.zoopda.com/thread-117350-1-1.html
-------------------------------------------------------------------------------------------------------------------
Eclipse+ADT进行Android应用程序的代码混淆和签名
分享到:
相关推荐
其中,APK反编译是安全领域的一个关键话题,因为恶意攻击者可以通过反编译获取到应用的源代码,从而分析其逻辑、窃取数据或植入恶意代码。本文将详细介绍使用Apktool这一工具进行APK反编译的过程,以及相关的安全...
需要注意的是,APK反编译涉及到版权和隐私问题,因此在实际使用中必须遵守相关法律法规,尊重开发者的工作成果,不得用于非法目的。此外,反编译也可能暴露应用的安全漏洞,因此开发者应关注代码加密和混淆技术,以...
本主题将深入探讨“反编译工具(APK)”的相关知识点,包括APK的结构、反编译过程、签名机制以及如何生成自定义签名的新APK。 首先,我们需要了解APK的基本构成。一个APK文件主要包含以下组件: 1. **Dex文件**:这...
APK混淆工具正是为了增强APK的安全性而设计的,它的主要作用是将APK文件中的代码和资源进行混淆和加密,以此来防止恶意用户进行反编译,窥探或篡改应用的内部逻辑。通过混淆,原本可读性强的代码变得难以理解,大大...
在Android开发中,混淆、签名和反编译是三个关键步骤,它们对于应用程序的安全性和发布流程至关重要。 **混淆**的主要目的是保护代码不被轻易逆向工程解析,减少恶意攻击的可能性。在Android中,通常使用ProGuard...
APK反编译是一种技术,它允许开发者或安全研究人员解包一个已编译的APK,查看其内部结构,包括Java字节码、XML布局文件、图片资源等。下面将详细介绍反编译APK的工具和流程。 1. **准备工具** - **Apktool**:这是...
9. **APK反编译与安全**:虽然签名和混淆可以提高应用的安全性,但并不能完全防止反编译。开发者还需要注意敏感信息的保护,如API密钥、服务器地址等,避免硬编码在代码中。 10. **多渠道打包**:对于需要分发到多...
签名确保了应用的身份唯一性和后续版本更新的一致性,而混淆则增强了应用的安全性,保护了源代码不被轻易反编译。 #### 二、签名打包的概念 签名打包是指在发布Android应用之前对应用进行加密签名的过程。这一步骤...
- **Proguard**:在签名前,开发者通常会使用Proguard进行代码混淆,以增加应用的安全性,防止反编译。 - **Multiple keystores**:如果你有多个应用,或者需要在不同环境中发布应用(如测试和生产),可能需要生成...
以下是关于“mac apk反编译”及相关工具的详细解释: 1. **Apktool**:Apktool是一款开源的Android反编译工具,由IzzySoft开发。它主要用于解包和重新打包APK文件,同时也支持资源的反编译和编译。通过Apktool,...
本教程将详细介绍如何反编译Android App,修改资源文件,并重新打包生成新的APK。以下是具体步骤和相关知识点: 1. **下载工具**: 首先,你需要准备一些必要的工具。这里提到了`apktool`,它是Android应用反编译...
ApkTool不仅支持基本的反编译和回编译,还提供了其他实用功能,比如支持对APK进行加密和混淆,以增强其安全性;或者用于分析和研究恶意软件,帮助安全研究人员发现潜在的威胁。 然而,值得注意的是,未经许可对他人...
APK反编译工具是Android应用开发者和安全研究人员常用的软件,用于查看、修改或分析APK文件的内部结构。APK文件本质上是包含了Android应用程序的所有组件,包括代码、资源、图片以及配置文件等。反编译工具可以帮助...
本文将深入探讨“Android反编译apk工具包”,并介绍如何使用其中的`decodeapk`工具来解码APK文件,揭示其源代码和资源。 首先,我们需要明白APK是Android应用的安装包,它包含了Java字节码、资源文件(如布局、图片...
混淆主要是为了保护应用程序的源代码不被轻易反编译和理解,而签名则确保应用的完整性和身份验证。 一、代码混淆 1. 概念:代码混淆是将Java源代码中的类名、方法名、变量名等转换为无意义的短名称,使得反编译后...
`apktool`是一个强大的Android反编译和打包工具,它可以用来解包、修改和重新打包APK。它允许开发者查看APK内部结构,包括XML布局文件、图片资源和Java字节码等,然后进行自定义修改。在修改完成后,通过apktool可以...
在Android开发过程中,有时我们需要对APK进行反编译和打包操作,这通常是出于调试、学习、安全分析或优化的目的。本压缩包“android反编译和打包工具”提供了相关工具,帮助开发者进行这些任务。以下将详细介绍...
代码混淆是提高应用安全性和防止反编译的重要手段。ProGuard是Android默认的混淆工具,而在新版本的Android Studio中,R8逐渐取代了ProGuard。你需要在“proguard-rules.pro”文件中添加或修改混淆规则,以避免关键...
1. ProGuard:这是一个内置的代码混淆工具,可以移除未使用的代码,缩短类和方法名,提高反编译难度。 2. 图片资源优化:压缩图片大小,使用WebP等高效图片格式。 3. 多APK支持:根据不同的设备特性(如屏幕尺寸、...