APK反编译利器Apktool实现android程序汉化(转http://www.cnmsdn.com/html/201008/1282267450ID7326.html)

 说起APK的汉化,目前大部分教程都是让用Hex Workshop或者Android ResEdit来做。但是实际操作后,就会发现:

  1、Hex Workshop操作繁琐,经常出现搜不到想要修改的字符的情况;

  2、Android ResEdit简单用用可以,修改稍微复杂一点就会出现整条整条丢字符串的情况;并且新内容不能比原内容长——谁能保证我的本地化语言就一定比原来的短 呢?

  现在好了,老外写的《android-apktool》软件,可以帮助我们把APK反编译,生成程序的源代码和图片、XML配置、语言资源等文件。我们对 图片和语言资源等文件修改后,可以再把它们编译打包成APK,签名后就是手机可以安装的本地化/修正版APK了。

  《android-apktool》软件软件可以访问它的主页http://code.google.com/p/android-apktool/下 载获得,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip两个包都要下。下载 后解开,为了方便使用,按作者的推荐把得到的4个文件复制到C:Windows文件夹里。

  这个工具是Java写的,需要你的电脑安装了JRE或者JDK,并在系统环境变量Path里加入java.exe所在路径。

  以上准备工作做好后,就可以用它来反编译APK了。这里我用动态壁纸的APK来做示范。

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

  (假设LiveWallpapersPicker.apk放在C盘根目录)

  开始 > 运行,输入cmd,回车。 apktool d "C:LiveWallpapersPicker.apk" "C:LiveWallpapersPicker"

  (命令行解释:apktool d 要反编译的文件 输出文件夹)

  这样,LiveWallpapersPicker.apk就被反编译了,输出内容在C:LiveWallpapersPicker文件夹里。

  打开C:LiveWallpapersPicker文件夹,我们发现里面有一些XML文件和一些文件夹。绝大部分情况下,语言和图片资源都在res文件 夹里,我们这个例子当然不例外。

  打开res文件夹,可以其中又是很多文件夹。(又是)绝大部分情况下,语言资源都放在values*文件夹里。比如说values放默认语言(英语居多),values-de放德语,values-fr放法语等等。一般我们关心的是values-zh-rCN(简体中文)和values-zh- rTW(繁体中文)。

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

 

 < ?xml version="1.0" encoding="UTF-8"?>

  < resources>

  < string name="application_name">动态壁纸选择器

  < string name="live_wallpaper_picker_title">当前壁纸

  < string name="live_wallpaper_preview_title">当前壁纸预览

  < string name="configure_wallpaper">设置...

  < string name="wallpaper_instructions">设置壁纸

  < string name="live_wallpaper_empty">无当前壁纸。

  < string name="set_live_wallpaper">设置壁纸

  < string name="wallpaper_title_and_author">%1$s提供者:%2$s

  < string name="live_wallpaper_loading">正在载入当前壁纸…

  < /resources>

  很好,就是它了。把“当前壁纸”都改为“动态壁纸”,再检查和修正标点——中文内容用中文标点(强烈呼吁大家注意标点问题,目前马大哈太多了)后, 保存。

  本例改这么多就够了。其它复杂的APK建议把res文件夹里的内容都检查下,至少你关心的语言文件夹里的内容都检查下。

  改完后,就可以重打包了。还是在cmd命令行里,输入: apktool b "C:LiveWallpapersPicker"

  (命令行解释:apktool b 要打包内容所在文件夹)

  就可以了。生成的APK在C:LiveWallpapersPickerdist文件夹里,叫out.apk。

  这个out.apk是没有签名的,所以不能直接装到手机里。签名工具和方法见http://www.hiapk.com/bbs/thread-21261-1-1.html, 这里不说了。

=====================================================

下载软件Auto-sign.rar(http://download.csdn.net/source/2768910)

命令如下:

java -jar signapk.jar testkey.x509.pem testkey.pk8 de.joergjahnke.mario.android.free.apk   de.joergjahnke.mario.android.freesinge.apk

=====================================================

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

  操练:去掉免费版软件的广告条

  打开google code发现Apktool更新了,居然支持win了。。。。

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

  安装

1.先装JAVA环境,JDK/JRE都行,官网下载

 

 接上页装过的就跳过吧

 

2.下载apktool.jar及相关文件,这里apktool-1.0.0.tar.bz2 apktool-install-windows-2.1_r01-1.zip

  3.解压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到文件夹ABC

  apktool b ABC 从文件夹ABC重建APK,输出到ABCdistout.apk

  然后我们反编译一枚软件玩玩…

  AutoMemoryManager的免费版底部有一条广告,去掉它吧。

  把com.lim.android.automemman.apk放到同文件夹(我的就是E盘根目录)

  Win+R 运行CMD

  E:< 回车>

  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 eslayoutmain.xml看,所有都可见了吧~

  编辑第59行

  < com.admob.android.ads.AdView android:id=”@id/ad”

 

 接上页android:layout_width=”fill_parent” android:layout_height=”wrap_content” admobsdk:backgroundColor=”#ff000000″ admobsdk:textColor=”#ffffffff” admobsdk:keywords=”Android application” />

 

  改为

  < com.admob.android.ads.AdView android:id=”@id/ad” android:layout_width=”0.0dip” android:layout_height=”0.0dip” admobsdk:backgroundColor=”#ff000000″ admobsdk:textColor=”#ffffffff” admobsdk:keywords=”Android application” />

  然后CMD输入

  E:>apktool b AMM

  I: Checking whether sources has changed…

  I: Smaling…

  I: Checking whether resources has changed…

  I: Building resources…

  I: Building apk file…

  用Auto-sign签名E:AMMdistout.apk 安装

  这样广告就不见了

  再看,嘿嘿~很帅吧…

  这其实就是改了AndroidManifest.xml里的ADmob广告ID罢了

 

 

附:

要反编译一个apk译文件(转http://wangqiaowqo.javaeye.com/blog/526203)

要反编译一个apk译文件,需要做以下几步:
1.找到apk安装文件
2.找到安装软件的*.dex译文件
3.dump dex文件
4.分析dex文件获取想要的代码


1.找到apk安装文件
这个比较容易,把手机或者模似器安装好后,可以在eclipse的File Explorer下找到安装程序的apk译文件,也可以通过adb命令找到:

$ adb shell
# cd /system/app
cd /system/app
# ls

2.找到安装软件的*.dex译文件
运行安装软件后,会在android文件系统下生成一个*.dex文件,一般在目录/data/dalvik-cache下,也可以通过adb命令找到:

$ adb shell
# cd /data/dalvik-cache
cd /data/dalvik-cache
# ls

3.编译软件对应的dex文件,通过以下指令:

adb shell dexdump -d -f -h /data/dalvik-cache/data@app@be.citylive.twitpic.apk@classes.dex > twitpic.text

指令参数解释:
-d : disassemble code sections
-f : display summary information from file header
-h : display file header details
-C : decode (demangle) low-level symbol names
-S : compute sizes only


4.获取需要的代码:
打开刚才得到的编译出来的text文件,会看到形如以下的代码:

Class #0 header:
class_idx : 32
access_flags : 196625 (0x30011)
superclass_idx : 61
interfaces_off : 0 (0x000000)

从这个译文件里我们很容易得到代码信息

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值