如何查找AndroidManifest.xml中属性整数值对应的字符串值?
查找AndroidManifest.xml中整数值属性对应的字符串值的方法
当逆向APK遇到二进制AndroidManifest里的整数值属性时,有几种直接可靠的方式对应回开发者编写的字符串值:
查看Android框架类的常量定义
这类整数值本质是Android SDK中对应类的静态常量,比如android:screenOrientation的取值对应android.content.pm.ActivityInfo类中的常量:SCREEN_ORIENTATION_UNSPECIFIED = 0→"unspecified"SCREEN_ORIENTATION_PORTRAIT = 1→"portrait"SCREEN_ORIENTATION_LANDSCAPE = 2→"landscape"
其他属性同理,比如launchMode对应ActivityInfo里的LAUNCH_MODE_*系列常量,直接对照类中常量值即可完成匹配。
用逆向工具反编译成可读格式
使用Apktool、AXMLPrinter2这类工具反编译APK后,生成的AndroidManifest.xml会自动将整数值转换为对应的字符串别名。比如执行apktool d your.apk命令,输出目录里的AndroidManifest.xml中,android:screenOrientation="1"会直接显示为android:screenOrientation="portrait",无需手动查找映射关系。查阅Android SDK的attrs.xml文件
在本地Android SDK的platforms/android-xx/data/res/values/attrs.xml文件中,所有带枚举值的系统属性都有明确的字符串-整数映射。比如screenOrientation的定义片段:<attr name="screenOrientation"> <enum name="unspecified" value="0" /> <enum name="portrait" value="1" /> <enum name="landscape" value="2" /> <!-- 其他枚举值 --> </attr>直接搜索目标属性名,就能找到完整的映射列表。
内容的提问来源于stack exchange,提问作者Commodus
相关产品推荐
相关产品推荐

