4.1 字符串资源
作者:飞龙
这篇教程是 APK 逆向实战的第一个例子,我会以一个非常简单的程序开始。主要内容就是修改字符串资源,除了破解所需之外,汉化也需要了解这个东西。我们的程序是这个样子。
可以告诉大家的是,这三个文本的位置都不一样。
下面我们将其载入 Android Killer。完成后,在文本搜索框中搜索文本 1
。
这样是不会有任何效果的,我们就猜测这个字符串应该是写入代码中的,而反编译出来的代码中的字符串以\uxxxx
编码。所以我们要搜索\u6587\u672c 1
。可以看到它的确存在于代码中。
下面我们要寻找文本 2
,我们首先看一看这个函数,这是MainActivity
的onCreate
。这里没有其它的字符串了,说明一定在别处。
我们搜索\u6587\u672c 2
,也是无效果的。那么我们搜索文本 2
。
<TextView android:textAppearance="?android:textAppearanceMedium" android:id="@id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="2.0dip" android:text=" " />
<TextView android:textAppearance="?android:textAppearanceMedium" android:id="@id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="2.0dip" android:text="文本 2" />
<TextView android:textAppearance="?android:textAppearanceMedium" android:id="@id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="2.0dip" android:text="@string/text3_text" />
我们在activity_main
里面找到了这个东西,它是MainActivity
的布局文件,布局文件中的字符串是不编码的。所以以后我们就需要两种情况都试一试。
我们查看第三个TextView
,它的 ID 是@id/textView3
,那么肯定就是我们要找的第三个文本框。我们可以看到它的text
属性是@string/text3_text
,说明它可能在strings.xml
里面。
我们直接访问strings.xml
,我们可以看到文本 3
在这里:
虽然 Android 不提倡硬编码在代码或者布局文件里面,但总有些人是这样做的,我们就需要了解。