Android安全扫描提示未使用编译器堆栈保护技术的解决方法

2023-10-31

前言

目前市面上不少安全扫描apk并评估的公司会针对以下这项进行扫描

防御原理和攻击原理,看最下面的参考,别人写的很好,我就没必要再累述了

未使用编译器堆栈保护技术

风险描述:

为了检测栈中的溢出引入了Stack Canaries漏洞缓解技术。在所有函数调用发生时,向栈帧内压入一个额外的被称作canary的随机数,当栈中发生溢出时canary将被首先覆盖,之后才是EBP和返回地址。在函数返回之前,系统将执行一个额外的安全验证操作,将栈帧中原先存放的canary和.data中副本的值进行比较,如果两者不吻合,说明发生了栈溢出

危害描述:

不使用Stack Canaries栈保护技术,发生栈溢出时系统并不会对程序进行保护

修复建议:

使用NDK编译so时,在Android.mk文件中添加:

LOCAL_CFLAGS := -Wall -O2 -U_FORTIFY_SOURCE -fstack-protector-all

如果是使用cmake编译则在CMakeLists.txt文件中添加

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector-all")

缺点

增加很多额外栈空间,增加程序体积

参考

1.gcc栈溢出保护机制:stack-protector - ArnoldLu - 博客园

2.GCC 中的编译器堆栈保护技术_yuanbinquan的博客-CSDN博客_堆栈保护

3.[原创]缓冲区溢出技术分析:栈溢出攻击-企业安全-看雪论坛-安全社区|安全招聘|bbs.pediy.com

4.黑客学习系列:栈溢出攻击 | Max's Blog

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android安全扫描提示未使用编译器堆栈保护技术的解决方法 的相关文章

随机推荐

  • 用Power BI来进行移动网络质量可视化分析

    如果我们有一些按照时间顺序发生的无线网络测量数据 每个测量数据有一个对应的坐标点 那么我们如何利用Power BI来进行可视化分析呢 这里记录一下我的作法 我的原始数据如下 Datetime Latitude Longitude CellI
  • 【vue3】:全局搜索解决方案

    全局搜索解决方案 需求 用户通过搜索框进行全局搜索 与当前系统路由进行匹配 用户点击匹配结果 可以跳转到该路径下的页面 原理 根据用户输入内容在数据源中进行 模糊搜索 获取数据源 根据匹配结果 将其渲染到下拉框组件中 点击下拉框选项 跳转到
  • ant-design:Upload组件上传图片组件封装

    将Upload组件放入src components下成为全局组件 调用时通过子组件向父组件传值实现的 这里的子组件为全局组件下的Upload上传组件 父组件指的是调用时的路由组件 上传图片一般为是为了得到上传到服务器后的图片路径 具体配置如
  • React:阻止组件渲染

    使用return null ReactDOM render
  • Vue elementui中el-select获取选中label的值

    针对控件el select中的option一个是label一个是value 在控件中change方法或者v model我们只能拿到value 下面是获取到label的方法
  • 用python发邮件、添加附件

    python 发邮件 两个内置模块 smtplib email 需要了解附件以什么形式添加到邮件中 open方法 二进制 字节 什么是授权码 能够看懂邮件发送过程中的发送编码 发送成功 发送失败 垃圾邮件等编码编号 什么是smtp协议 SM
  • 本地docker注册证书docker login连接到harbor仓库、利用shell脚本将大量镜像pull、tag、push到私有harbor仓库

    1 本地docker注册证书docker login连接到harbor仓库 我们使用docker login push pull去与Harbor打交道 上传下载镜像等 但是可能会出现x509 certificate signed by un
  • 【送面试题】Linux中grep和find的区别及全面使用指南

    AI绘画关于SD MJ GPT SDXL百科全书 面试题分享点我直达 2023Python面试题 2023最新面试合集链接 2023大厂面试题PDF 面试题PDF版本 java python面试题 项目实战 AI文本 OCR识别最佳实践 A
  • 常见测试用例设计方法2---边界值划分

    目录 二 边界值的基本思想 三 边界值的作用 四 边界值点的定义 五 边界值和等价类的联系 六 上点 离点 内点的确定 1 闭区间 2 开区间 3 半开半闭区间 总结 七 常见边界值 字符 整数 八 边界值分析案例优化建议 九 开闭区间的区
  • matlab 点云粗配准(8)——RANSAC算法实现点云粗配准(方法一)

    RANSAC 一 算法原理 1 算法概述 2 实现流程 二 代码实现 三 结果展示 一 算法原理 1 算法概述 基本思想是通过随机采样一定数量的点对 计算变换矩阵 然后用该变换矩阵将源点云变换到目标点云坐标系下 计算变换后的点云与目标点云之
  • Java开发:如何将model对象与json互相转换?

    model javabean 与json相互转换 文章声明 model对象与json之间互转网上有很多方法 此处只记录一种常用的 并且比较安全便捷的转换方法 使用gson 一 model转换json 1 首先创建一个model实体类 pac
  • 详解OpenCV中的Lucas Kanade稀疏光流单应追踪器

    详解OpenCV中的Lucas Kanade稀疏光流单应追踪器 1 效果图 2 源码 参考 这篇博客将详细介绍OpenCV中的Lucas Kanade稀疏光流单应追踪器 光流是由物体或相机的运动引起的图像物体在连续两帧之间的明显运动的模式
  • 比cat更好用的命令!

    大家好 我是良许 作为程序员 大家一定对 cat 这个命令不陌生 它主要的功能就是用来显示文本文件的具体内容 但 cat 命令两个很重大的缺陷 1 不能语法高亮输出 2 文本太长的话无法翻页输出 正是这两个不足 使得 cat 只能用来查看行
  • 记录一次报错:Error, operation time out. RESULT_OPERATION_TIMEO[rplidarNode-2] process has died [pid 22745,

    当Rplidar雷达突然报错 Error operation time out RESULT OPERATION TIMEOUT rplidarNode 2 process has died pid 22745 exit code 255
  • udev原理及使用方法

    本文参考以下两篇文章结合自己的理解总结 https blog csdn net huangminilong article details 83782142 https blog csdn net chituhuan article det
  • 性能调优疑问: IO操作消耗CPU吗?

    操作系统 中的IO章节都会说 IO设备发送中断 CPU收到中断后 挂起当前的进程 然后处理中断 处理完后 回到之前的进程 如果IO都需要CPU参与 那么IO很频繁的时候 会大量占用CPU吗 https www cs uic edu jbel
  • 静态路由实验

    思科 计算机网络实验 静态路由仿真实验 实验目的 掌握静态路由的配置和使用方法 熟悉交换机端口镜像的方法以及如何用于监视端口 文章目录 思科 计算机网络实验 静态路由仿真实验 一 静态路由是什么 二 实验步骤 实验 一 总结 一 静态路由是
  • jQuery 中的 each()

    通过它 你可以遍历对象 数组的属性值并进行处理 使用说明 each函数根据参数的类型实现的效果不完全一致 1 遍历对象 有附加参数 each Object function p1 p2 this 这里的this指向每次遍历中Object的当
  • 电脑优化导致打印机无法使用的问题

    使用打印机需要一些服务和端口 我经常看到因系统优化导致无法使用打印机的问题 主要有以下两种情况 一 sploov服务被关闭 sploov服务是打印机服务 必须开启 二 139或445端口被关闭 进行文件共享和打印机共享等实际通信 Windo
  • Android安全扫描提示未使用编译器堆栈保护技术的解决方法

    前言 目前市面上不少安全扫描apk并评估的公司会针对以下这项进行扫描 防御原理和攻击原理 看最下面的参考 别人写的很好 我就没必要再累述了 未使用编译器堆栈保护技术 风险描述 为了检测栈中的溢出引入了Stack Canaries漏洞缓解技术