由来
最近上“计算机基础”课要用到思科开发的 Packet Tracer 来练习网络的组建,并且要考交换机命令的使用,学校机房用的是PC版 Packet Tracer ,到官网下载了Android版安装到手机中,用于日常练习交换机命令(总不能整天背着笔记本到处跑吧),但没有中文版,所以打算汉化后使用,没想到遇到陌生的技术点,踩了一天坑,故写篇文章记录下。
使用到的工具
- Apktool
- jdk
- VS Code
Apktool: 用于反编译APK
jdk: 可选工具,用于为打包后的APK签名
VS Code: 可选工具,主要用来查找翻译的 字符串
需要工具的可以到官网下载,文章末尾也会提供所有工具的下载连接(百度云)
工具安装
1、安装JDK
JDK的安装是比较方便的,下载安装程序后一直下一步就安装好了,至于JDK的环境变量,较新版本的JDK在安装的过程中已经设置好了,打开cmd输入命令来验证JDK是否安装成功。
java -version // 此命令查看java的版本
如果输出类似于下面的内容,代表安装成功
java version "10.0.2" 2018-07-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)
如果没有安装成功,可到网上查找JDK的安装教程,网上有很多教程,我·就不再写安装教程了,我这里找了一篇,需要的读者可参考:https://blog.csdn.net/qq_35246620/article/details/61208961
2、Apktool的安装
Apktool本身是不需要安装的,本体只是一个jar文件,当你下载完Apktool后,会得到一个 类似下图的 jar 文件,因为Apktool本身就是使用Java开发的。接着创建一个BAT文件用于运行Apktool(此bat文件不是必须的,此bat文件存在的意义是快捷的运行Aapktool),打开官方网站,点击菜单栏的Install后点击下图链接即可获取bat文件内容
下面是BAT内容
@echo off
把上面内容保存为 "apktool.bat"
if "%PATH_BASE%" == "" set PATH_BASE=%PATH%
set PATH=%CD%;%PATH_BASE%;
chcp 65001 2>nul >nul
java -jar -Duser.language=en -Dfile.encoding=UTF8 "%~dp0\apktool.jar" %*
接着就是验证apktool是否能运行,进入cmd,切换到你存放 Apktool.jar
的路径,执行一下命令来验证(我的存放目录是: E:\工作目录\2018-11-5)
./apktool -version //此命令用于查看apktool的版本
小提示:apktool依赖java运行环境,所以要在JDK安装成功后才可以运行apktool
如果不可运行,请检查java运行环境或apktool.jar文件的完整性
3、安装 VS Code
到 vs code 的官网下载安装程序后,一路点击下一步即可,傻瓜化安装,无压力,这里就不介绍了。
开始汉化
嗯。。。。。工具安装好了,开始进入汉化阶段。这次的汉化过程可能与普通的汉化过程有点不一样,因为我推测这个APK是H5开发后用工具打包的,因为我也使用过类似的工具来打包网站上的二维码生成器。
注意:本文章所使用的终端为 Win10 自带的 powershell ,不是CMD,命令的语法上可能有些不一样
1、反编译APK:
汉化的第一步是反编译APK,以此获取apk的资源
接着执行反编译命令:
./apktool d PacketTracerM.apk
// 选项(d): 表示执行反编译操作
// 参数(PacketTracerM.apk): 要反编译的APK文件
反编译后会把反编译后的数据输出到当前目录中一个与apk同名的目录中
我们汉化操作就是在其中进行
现在,打开反编译后的目录,看几个有关汉化的文件夹
assets目录:资源目录
res目录:资源目录
smali目录:存储着apk要在Android虚拟机中执行的字节码,有些字符会直接写到Java代码中,这时候就要到Smali文件寻找要翻译的字符了,而此目录存储了反编译后的所有smali文件。
由于推测是使用HTML开发的,所以到assets和res目录中寻找要翻译字符串,不出所料,在assets目录中找到了一个 "HtmlGui" 目录,应该是界面代码了。好,用 VS Code 打开HtmlGui
但我们反编译的是一个特殊的APK,如果你遍历PacketTracer目录中的内容,你会发现存在一个HtmlGui的文件夹,路径是:?????待补全 ????? ,并且里面存放有html、js、css文件,这是我学逆向以来没有遇到过的,这也是我写这篇文章的主要原因。
个人推测:这个APK是使用html、js、css开发后用打包工具来打包的(因为我前一阵子也把网站中的一个二维码生成工具打包成apk安装到了Android手机上,现在的技术可以实现把H5打包为APK),为了稍微验证下我推测是否正确(为什么是“稍微验证呢?”因为我不确定我们的打包工具是一致的),我把我的二维码工具也反编译了
未完待续..............