【问题标题】:Compiled with stack-based buffer overflow protection in Xamarin.Forms在 Xamarin.Forms 中使用基于堆栈的缓冲区溢出保护进行编译
【发布时间】:2021-05-04 19:52:01
【问题描述】:

AndroidiOS 应用程序的问题之一是缓冲区溢出保护。根据安全指南,移动应用程序需要在编译时启用基于堆栈的缓冲区溢出保护 (-fstack-protector-all)。是否需要在 Xamarin.Forms 中启用此标志?如果是,如何编译带有标志的应用程序。

【问题讨论】:

    标签: xamarin xamarin.forms xamarin.android xamarin.ios


    【解决方案1】:

    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>
    ~~~
    

    注意:这些只是示例输出,您可以自行检查应用中所有捆绑的原生框架/共享库...

    【讨论】:

      猜你喜欢
      • 2015-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-23
      • 2018-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多