二进制安卓清单 binary AndroidManifest - XCTF apk 逆向-2

XCTF 的 apk 逆向-2 题目 wp,这是一道反编译对抗题。

题目背景

AndroidManifest.xml 在开发时是文本 xml,在编译时会被 aapt 编译打包成为 binary xml。具体的格式可以参考稀土掘金 MindMac 做的类图(2014),下面的博客分别是 wp 和字段解析。

攻防世界 XCTF 【Mobile】APK逆向-2 题解正常下载附件,解压后,拖到 JADX-gui 中去反编译一下,然 - 掘金

Android逆向笔记 ------ AndroidManifest.xml 文件格式解析做过 Android 开发的同学对 A - 掘金

概括地说,binary xml 把冗杂的 xml 文本压缩地更加紧凑

  • 把字符串放到全局的资源池,用编号引用。在 string chunk 声明字符串的数量、地址偏移和字符串池的地址等信息。

  • 把 xml 标签用 (start/end) NameSpace Chunk 和 (start/end) Tag Chunk 四种 chunk 二进制化。在 chunk 里,指定每个标签的属性列表。指定列表时首先声明属性个数,然后在一个 5-ints 的结构体里指定属性的 type, name 和 value(data) 对应的字符串

早期安卓应用管理器不会检查 binary xml 的一些字段是否合法,开发者为了保护 apk 不被反编译可以修改一些字段,使得用户能正常安装但是反编译器无法复原源代码。

本题 apk 修改了 string chunk 的 Chunk Type 和 Style Offset。其中 chunkType 错误在 apktool-2.11.0 版本已经会报错。需要通过 hex editor 修正复原。

对于本题来说,StyleOffset 不复原也能正常复原文本 xml 找到 flag。

相关推荐
恋猫de小郭24 分钟前
Flutter 新春第一弹,Dart 宏功能推进暂停,后续专注定制数据处理支持
android·java·flutter
我是大佬的大佬6 小时前
有关Android Studio的安装与配置并实现helloworld(有jdk的安装与配置)(保姆级教程)
android·android studio·软件工程
Mr_Xuhhh8 小时前
进程间通信
android·java·服务器·开发语言·数据库
向明天乄8 小时前
uniapp 地图添加,删除,编辑标记,在地图中根据屏幕范围中呈现标记
android·java·uni-app
zhangphil12 小时前
Android createScaledBitmap与Canvas通过RectF drawBitmap生成马赛克/高斯模糊(毛玻璃)对比,Kotlin
android·kotlin
消失的旧时光-194314 小时前
android 音视频系列引导
android·音视频
刘争Stanley15 小时前
Kotlin开发(六):Kotlin 数据类,密封类与枚举类
android·开发语言·kotlin
诺离18 小时前
让Android adb支持互联网调试脱离局域网
android·adb
袁震19 小时前
Android-okhttp详解
android·okhttp
练小杰20 小时前
【MySQL】我在广州学Mysql 系列——MySQL用户管理详解
android·数据库·经验分享·sql·学习·mysql·adb