App 汉化与二次签名

96
imesong
2016.02.17 22:49* 字数 618

反编译系列第三篇,前两篇文章在这里。
第一篇 Apktool安装
第二篇 Apktool 基本使用方法

App 汉化

App汉化主要是修改资源文件,主要部分在values 文件夹中string文件,还有少部分会在 Java 代码中。下面以汉化CrackMe 为例说明。

CrackMe下载

软件截图如下

Paste_Image.png
Paste_Image.png
Paste_Image.png

弹窗有一部分已经是汉字了,不过不影响我们理解。

1.使用Apktool 反编译 CrackMe


apktool d Crackme.apk

反编译之后,会在当前路径下生产Crackme 文件。切换到Crackme 文件夹下,目录如图

Paste_Image.png

找到res 文件夹下的 strings.xml,修改对应的语言为汉字即可。
同时到 menu目录下,看是否还有需要修改的文字。

我们还注意到,Dialog弹窗的Title 为英文,其他地方为汉字,在xml 中,没有搜索到 congratulations 的信息,我们猜测,这个字符串定义在Java代码中。我们切换到smali 文件夹下,打开MainActivity.smali,找到onClick 事件执行的地方。

Paste_Image.png

可以看到这里,直接把 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 打开看下。

Paste_Image.png

就这么简单,app的汉化与二次签名就完成了。

Android 反编译
Web note ad 1