当前位置:文档之家› Android APK反编译得到Java源代码和资源文件

Android APK反编译得到Java源代码和资源文件

Android APK反编译得到Java源代码和资源文件2011年3月9日iStar发表评论阅读评论这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程。

在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的态度,不过好像通过这种方式也可以去汉化一些外国软件。

一.反编译Apk得到Java源代码首先要下载两个工具:dex2jar和JD-GUI,前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。

以下是下载地址:dex2jar:/files/dex2jar-0.0.7-SNAPSHOT.zip JD-GUI:/files/jdgui.zip具体步骤:1.首先将apk文件,将后缀改为zip,解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的;2.解压下载的dex2jar,将classes.dex复制到dex2jar.bat所在目录。

在命令行下定位到dex2jar.bat所在目录,运行dex2jar.bat classes.dex生成classes.dex.dex2jar.jar3.运行JD-GUI,打开上面生成的jar包,即可看到源代码了。

二.反编译apk生成程序的源代码和图片、XML配置、语言资源等文件如果是只是汉化软件,这将特别有用。

首先还是下载工具,这次用到的是apktool,下载地址:/p/android-apktool/,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip两个包都要下。

具体步骤:1.将下载的两个包解压到同一个文件夹下,应该会有三个文件:aapt.exe,apktool.bat,apktool.jar;2.在命令行下定位到apktool.bat文件夹,输入以下命令:apktool d C:\***.apk C:\***文件夹命令行解释:apktool d [要反编译的apk文件 ] [输出文件夹],特别注意:你要反编译的文件一定要放在C盘的根目录里;3.将反编译完的文件重新打包成apk,很简单,输入apktool b c:\***文件夹(你编译出来文件夹)即可。

dex2jar和JD-GUI这2个工具配合学习android太靠谱了,所以放上来给大家共享,开源的好处就是好东西大家一起分享。

dex2jar下载地址:/files/dex2jar-0.0.7-SNAPSHOT.zipJD-GUI下载地址:windows版JD-GUI:/files/jdgui.zipLinux版JD-GUI:/files/jd-gui-0.3.2.linux.i686.tar.gz1.首先找到Android软件安装包中的classes.dex把apk文件改名为.zip,然后解压缩其中的classes.dex文件,它就是java文件编译再通过dx工具打包成的,所以现在我们就用上述提到的2个工具来逆方向导出java源文件2.把classes.dex拷贝到dex2jar.bat所在目录。

windows系统下:在命令行模式下定位到dex2jar.bat所在目录,运行 dex2jar.bat classes.dex ,生成classes.dex.dex2jar.jarUbuntu系统下:(3楼正解!)在终端下定位到dex2jar.sh所在目录,运行sh dex2jar.sh classes.dex则可生成classes.dex.dex2jar.jar3.运行JD-GUI工具(它是绿色无须安装的)打开上面的jar文件,即可看到源代码一个APK反编译利器Apktool(android汉化)2010-07-19 18:52 转载自:/s/blog_5752764e0100kv34.htmlAPK 本地化[/viewthread.php?tid=3873]说起APK的汉化,目前大部分教程都是让用Hex Workshop或者Android ResEdit来做。

但是实际1、Hex Workshop操作繁琐,经常出现搜不到想要修改的字符的情况;2、Android ResEdit简单用用可以,修改稍微复杂一点就会出现整条整条丢字符串的情况;并且——谁能保证我的本地化语言就一定比原来的短呢?现在好了,老外写的《android-apktool》软件,可以帮助我们把APK反编译,生成程序的源代码言资源等文件。

我们对图片和语言资源等文件修改后,可以再把它们编译打包成APK,签名后就化/修正版APK了。

《android-apktool》软件软件可以访问它的主页/p/android-apktool/下0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip两个包都要下。

下载后解开,为了方把得到的4个文件复制到C:\Windows文件夹里。

这个工具是Java写的,需要你的电脑安装了JRE或者JDK,并在系统环境变量Path里加入java.以上准备工作做好后,就可以用它来反编译APK了。

这里我用动态壁纸的APK来做示范。

如果用过动态壁纸,你也许会发现在设置壁纸时,界面的显示有点问题:“动态壁纸”,在手机上中这是“动态壁纸选择器”LiveWallpapersPicker.a pk的翻译错误造成的。

(假设LiveWallpapersPicker.apk放在C盘根目录)开始 > 运行,输入cmd,回车。

1.apktool d "C:\LiveWallpapersPicker.apk" "C:\LiveWallpapersPicker"复制代码(命令行解释:apktool d 要反编译的文件输出文件夹)这样,LiveWallpapersPicker.apk就被反编译了,输出内容在C:\LiveWallpapersPicker文件夹打开C:\LiveWallpapersPicker文件夹,我们发现里面有一些XML文件和一些文件夹。

绝大部分源都在res文件夹里,我们这个例子当然不例外。

打开res文件夹,可以其中又是很多文件夹。

(又是)绝大部分情况下,语言资源都放在values* es放默认语言(英语居多),values-de放德语,values-fr放法语等等。

一般我们关心的是valu 和values-zh- rTW(繁体中文)。

打开values-zh-rCN文件夹,其中有个strings.xml。

打开看看:<?xml version="1.0" encoding="UTF-8"?><resources><string name="application_name">动态壁纸选择器</string><string name="live_wallpaper_picker_title">当前壁纸</string><string name="live_wallpaper_preview_title">当前壁纸预览</string><string name="configure_wallpaper">设置...</string><string name="wallpaper_instructions">设置壁纸</string><string name="live_wallpaper_empty">无当前壁纸。

</string><string name="set_live_wallpaper">设置壁纸</string><string name="wallpaper_title_and_author">%1$s提供者:%2$s</string><string name="live_wallpaper_loading">正在载入当前壁纸…</string></resources>很好,就是它了。

把“当前壁纸”都改为“动态壁纸”,再检查和修正标点——中文内容用中文标标点问题,目前马大哈太多了)后,保存。

本例改这么多就够了。

其它复杂的APK建议把res文件夹里的内容都检查下,至少你关心的语言下。

改完后,就可以重打包了。

还是在cmd命令行里,输入:1.apktool b "C:\LiveWallpapersPicker"复制代码(命令行解释:apktool b 要打包内容所在文件夹)就可以了。

生成的APK在C:\LiveWallpapersPicker\dist文件夹里,叫out.apk。

这个out.apk是没有签名的,所以不能直接装到手机里。

签名工具和方法见http://www.hiapk.c 1-1.html,这里不说了。

签名后得到的APK,就是可以装到手机里的了。

操练:去掉免费版软件的广告条[/viewthread.php?tid=18082]打开google code发现Apktool更新了,居然支持win了。

那本文就是一篇介绍在windows环境下使用Apktool的笔记。

安装1.先装JAVA环境,JDK/JRE都行,官网下载装过的就跳过吧2.下载apktool.jar及相关文件,这里下apktool-1.0.0.tar.bz2 和apktool-install-wind3.解压apktool.jar到 C:\Windows 解压apktool-install-windows.zip到任意文件夹(例如E盘4.Win+R 运行CMD,用cd命令转到apktool-install-windows所在文件夹,输入apktool看看。

成功了。

Apktool 命令apktool d XXX.apk ABC 反编译 XXX.apk到文件夹ABCapktool b ABC 从文件夹ABC重建APK,输出到ABC\dist\out.apk然后我们反编译一枚软件玩玩…AutoMemoryManager的免费版底部有一条广告,去掉它吧。

把com.lim.android.automemman.apk放到同文件夹(我的就是E盘根目录)Win+R 运行CMDE:<回车>E:\>apktool d com.lim.android.automemman.apk AMM <回车>I: Baksmaling…I: Decoding resource table…I: Decoding resources…I: Copying assets and libs…现在文件被decode到E:\AMM了,打开E:\AMM\res\layout\main.xml看,所有都可见了吧~编辑第59行<com.admob.android.ads.AdView android:id=”@id/ad” android:layout_width=”fill_paren eight=”wrap_content” admobsdk:backgroundColor=”#ff000000″ admobsdk:textColor=”#f eywords=”Android application” />改为<com.admob.android.ads.AdView android:id=”@id/ad” android:layout_width=”0.0dip” a =”0.0dip” admobsdk:backgroundColor=”#ff000000″ admobsdk:textColor=”#ffffffff” a ndroid application” />然后CMD输入E:\>apktool b AMMI: Checking whether sources has changed…I: Smaling…I: Checking whether resources has changed…I: Building resources…I: Building apk file…用Auto-sign签名E:\AMM\dist\out.apk 安装这样广告就不见了再看,嘿嘿~很帅吧…这其实就是改了AndroidManifest.xml里的ADmob广告ID罢了windows下安装APK文件到Android模拟器的方法2010-07-20 18:29文章转载自:/html/201003/1268078962ID1594.html一、安装APK文件到模拟器Android手机使用的执行文件为APK格式,类似于Windows平台的exe文件。

相关主题