反编译系列第三篇,前两篇文章在这里。
第一篇 Apktool安装
第二篇 Apktool 基本使用方法
App 汉化
App汉化主要是修改资源文件,主要部分在values 文件夹中string文件,还有少部分会在 Java 代码中。下面以汉化CrackMe 为例说明。
软件截图如下
弹窗有一部分已经是汉字了,不过不影响我们理解。
1.使用Apktool 反编译 CrackMe
apktool d Crackme.apk
反编译之后,会在当前路径下生产Crackme 文件。切换到Crackme 文件夹下,目录如图
找到res 文件夹下的 strings.xml,修改对应的语言为汉字即可。
同时到 menu目录下,看是否还有需要修改的文字。
我们还注意到,Dialog弹窗的Title 为英文,其他地方为汉字,在xml 中,没有搜索到 congratulations 的信息,我们猜测,这个字符串定义在Java代码中。我们切换到smali 文件夹下,打开MainActivity.smali,找到onClick 事件执行的地方。
可以看到这里,直接把 congratulations 赋值给 v1,紧接着调用AlertDialog的setTitle 方法。
2.打包Crackme
执行下面的命令
apktool b crackme -o crackme_unsigned.apk
当前目录下会生成 crackme_unsigned.apk,这个是没有签名的apk 文件,还不能安装到手机上。
3.重新签名apk
如何生成签名文件这里不再说明,需要的可以自行搜索,我习惯使用debug.keystore,这里以debug.keystore 为例。
3.1获取debug.keystore
Android Studio 在 Mac OS 上 ,用户home目录下会生成 .android 的隐藏文件夹,里面有 debug.keystore,复制到CrackMe 所在目录,方便使用。
3.2二次签名
签名使用的是jarsigner命令,debug.keystore 的默认alias 是 androiddebugkey,密码是 android,这两个签名的时候必须要有的。
执行下面这个命令
jarsigner -keystore debug.keystore -signedjar crackme_s.apk crackme_unsigned.apk androiddebugkey
-keystore ** 指定使用的签名文件,-signedjar** 指定签名后的文件输出结果,后面紧跟着是 要签名的 apk ,最后是 签名文件的 alias
命令执行成功之后,会提示输入密码,输入 android,回车,没有意外,apk 的二次签名就完成了。
下面安装是我们汉化的app 打开看下。
就这么简单,app的汉化与二次签名就完成了。