在对 Android 应用程序进行安全评估期间,我遇到了多个 .so(共享对象)文件存在于 lib 目录中的实例。什么可能是相同的安全测试用例。
我有一个测试用例,即 ELF 文件的不安全编译选项。但我不知道如何检查相同的编译选项,例如缺少 -fstack-protector、PIE 等。
提前致谢!
在对 Android 应用程序进行安全评估期间,我遇到了多个 .so(共享对象)文件存在于 lib 目录中的实例。什么可能是相同的安全测试用例。
我有一个测试用例,即 ELF 文件的不安全编译选项。但我不知道如何检查相同的编译选项,例如缺少 -fstack-protector、PIE 等。
提前致谢!
要确定堆栈粉碎检测是否已编译到二进制文件中,使用 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