xml格式:被设计用来传输和存储数据,就是格式化了的纯文本。(优点:跨平台)
apk文件结构:
android应用是用java编写,利用Android SDK编译代码,并把所有的资源文件和数据打包成APK文件。
一个APK文件就是一个.zip格式的压缩包,可以用解压缩文件打开任何一个APK文件,由于代码混淆和加密,通过普通解压缩工具打开里面的文件或目录会看到各种乱码。
典型apk文件
名称 | 功能 |
---|---|
Assets目录 | 存放需要打包到APK的静态文件 |
Lib目录 | 程序依赖的native库(so文件) |
META-INF目录 | 存放应用程序签名和证书的目录 |
Res目录 | 存放应用程序的资源 |
AndroidManifest.xml | 应用程序的配置文件(向系统自我介绍的文件) |
Classes.dex | Dex可执行文件,存储字节码(类似python里的.pyc文件) |
Resources.arsc | 资源对应关系文件 |
工具
dex2jar
(使用:cd 到 dex2-jar 目录,使用命令 d2j-dex2jar.bat(windows)或 d2j-dex2jar.sh(linux)执行完命令之后,会生成一个 classes-dex2jar.jar 文件 。)
+
jd-gui
思路展开
利用dex2jar反编译Classes.dex,再用jd-gui打开,得到源码。
找到关键函数,发现只需要ascii转字符就可。
temp=[102,108,97,103,123,119,52,110,110,52,95,106,52,114,95,109,121,95,100,51,120,125]
flag=[0 for i in range(22)]
for i in range(22):
flag[i]=chr(temp[i])
print(''.join(flag))
flag{w4nn4_j4r_my_d3x}