【发布时间】:2021-05-04 19:52:01
【问题描述】:
Android 和 iOS 应用程序的问题之一是缓冲区溢出保护。根据安全指南,移动应用程序需要在编译时启用基于堆栈的缓冲区溢出保护 (-fstack-protector-all)。是否需要在 Xamarin.Forms 中启用此标志?如果是,如何编译带有标志的应用程序。
【问题讨论】:
标签: xamarin xamarin.forms xamarin.android xamarin.ios
Android 和 iOS 应用程序的问题之一是缓冲区溢出保护。根据安全指南,移动应用程序需要在编译时启用基于堆栈的缓冲区溢出保护 (-fstack-protector-all)。是否需要在 Xamarin.Forms 中启用此标志?如果是,如何编译带有标志的应用程序。
【问题讨论】:
标签: xamarin xamarin.forms xamarin.android xamarin.ios
Xamarin.Forms 与堆栈检查/金丝雀无关,它与 Xamarin.iOS(即Mono.framework/Mono)和 Xamarin.Android(即@ 987654322@ ) 预编译的堆栈检查/金丝雀,PLUS 任何 3rd 方本机库和用户提供的捆绑在应用程序中的本机库。
Mono.framework/Mono
otool -Iv MonoTouch.iphoneos.sdk/Frameworks/Mono.framework/Mono | grep stack_chk
0x0014d508 33044 ___stack_chk_fail
0x001e4444 33045 ___stack_chk_guard
0x001e44d4 33044 ___stack_chk_fail
0x0014d554 33042 ___stack_chk_fail
0x001e4444 33043 ___stack_chk_guard
0x001e44cc 33042 ___stack_chk_fail
~~~
arm64-v8a/libmono-android.release.so
objdump -dj .text ./Xamarin/Android/lib/arm64-v8a/libmono-android.release.so | grep stack_chk
9130: 97fffd9c bl 87a0 <__stack_chk_fail@plt>
9254: 97fffd53 bl 87a0 <__stack_chk_fail@plt>
98a0: 97fffbc0 bl 87a0 <__stack_chk_fail@plt>
9a90: 97fffb44 bl 87a0 <__stack_chk_fail@plt>
9cb0: 97fffabc bl 87a0 <__stack_chk_fail@plt>
~~~
注意:这些只是示例输出,您可以自行检查应用中所有捆绑的原生框架/共享库...
【讨论】: