如何检查 SO 文件的编译选项 - Android 应用程序 VA

信息安全 安卓 缓冲区溢出 二进制代码 手臂
2021-08-22 07:13:18

在对 Android 应用程序进行安全评估期间,我遇到了多个 .so(共享对象)文件存在于 lib 目录中的实例。什么可能是相同的安全测试用例。

我有一个测试用例,即 ELF 文件的不安全编译选项。但我不知道如何检查相同的编译选项,例如缺少 -fstack-protector、PIE 等。

提前致谢!

2个回答

要确定堆栈粉碎检测是否已编译到二进制文件中,使用 apktool 反编译后,您所知道的共享对象库可以位于 <apktool_outdir>/lib/<arch>

cd <lib_dir>

for o in $(ls); do echo -e "\n\n$o:" && strings $o | grep stack_chk; done

在对 Android Internals 和 Secure Code Development 进行了很好的研究之后,我已经确定了这个问题的答案。

我们可以使用 checksec.sh 脚本来检查可执行文件的编译选项。可以从以下 github 存储库中轻松找到该脚本: https ://github.com/slimm609/checksec.sh