这题给的是一个apk文件
,刚接触安卓,简要学习了一下安卓逆向的大致流程
反编译代码的工具下载:
- dex2jar: 把
dex文件
转成jar文件
下载地址:https://sourceforge.net/projects/dex2jar/files/ - jd-gui: 这个工具用于将
jar文件
转换成java代码
下载地址:http://jd.benow.ca/
反编译资源的工具:
- APKTool: APK逆向工具,使用简单下载地址: http://ibotpeaches.github.io/Apktool/install/
- 简单介绍下大概流程,首先把后缀为
.apk
的文件改为.zip
的一个压缩文件,方便解压。dex2jar
和jd-gui
配套使用,用于逆向代码部分,APKTool
用于逆向res文件夹下的图片布局等部分。.apk
修改成.zip文件解压后的目录树长这样:
反编译代码
用到dex2jar包
中三个文件d2j_invoke.bat
, d2j-dex2jar.bat
, lib
,将上面解压的classes.dex文件
和这三个文件一起复制到同一文件夹。
在当前窗口运行d2j-dex2jar.bat classes.dex
,即可得到classes-dex2jar.jar
文件
再运行jd-gui
,将classes-dex2jar.jar
拖入,即可得到想要的 java 代码
反编译res资源部分
apktool跟着官网的安装步骤即可完成安装
在find.apk文件目录下cmd运行 apktool find.apk
可得到同名文件夹
这个文件夹下会得到若干文件,主要内容介绍如下:
- AndroidManifest.xml:描述文件
- res:资源文件
- smail:反编译出来的所有代码,语法与java不同,类似汇编,是Android虚拟机所使用的寄存器语言
查看MainActivity.smali
文件,得到以下关键信息,结合.line 22
和.line 23
可知两串字符串分别对应上面java代码中的arrayOfChar1
和arrayOfChar2
1 | .line 22 |
分析java代码,判断对arrayOfChar2
中字母进行凯撒加密,爆破脚本如下
1 | model = "abcdefghijklmnopqrstuvwxyz" |