- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在 Linux 上,有什么方法可以判断二进制文件是否已通过命令行打开/关闭堆栈粉碎进行编译?
我很确定我已经启用了保护,但为了理智起见,我想为我的二进制文件编写一些测试,以防万一有一天出现问题并且保护被关闭。 .. 出于某种原因。
最佳答案
如果您的可执行文件格式是 ELF,并且它碰巧是由 GCC v4.3 或更高版本编译的,这只是碰巧 被传递给 -frecord-gcc-switches
命令行开关,那么您可以执行以下操作:
$ gcc -frecord-gcc-switches -fno-stack-protector test.c
$ readelf -p .GCC.command.line a.out
String dump of section '.GCC.command.line':
[ 0] -imultiarch x86_64-linux-gnu
[ 1d] test.c
[ 24] -mtune=generic
[ 33] -march=x86-64
[ 41] -frecord-gcc-switches
[ 57] -fno-stack-protector
当 GCC 通过 -frecord-gcc-switches
开关时,它将添加 .GCC.comment.line
部分 --包含传递给 GCC 的开关——传递给它创建的二进制 ELF 文件。
然后您可以使用 readelf
从您的二进制 ELF 文件中打印出相关部分并搜索是否存在 -fno-stack-protector
开关以确定二进制文件是否已在打开/关闭堆栈粉碎的情况下编译。
不幸的是,此解决方案仅限于使用 -frecord-gcc-switches
编译的二进制文件——这实际上意味着它在大多数情况下都是无用的,尽管您可能会在您的特定情况下走运案例。
值得一提的是,检测二进制文件中的缓冲区溢出漏洞是一个活跃的研究领域。例如,这是一个 research paper detailing a simple detection module (see section 7.1) .
关于c - 查明二进制文件是否已使用堆栈粉碎保护进行编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17219252/
我想做的是弄清楚如何查看 for 循环中的数据是否满足特定条件。我想使用 if 语句来执行此操作(除非有更好的方法),但我遇到的麻烦是数据位于 for 循环内,并且代码不希望我使用该循环之外的值环形。
我想知道 GL_TEXTURE_2D 在着色器中是否处于事件状态。 我将颜色绑定(bind)到着色器以及事件纹理(如果设置了 GL_TEXTURE_2D)并且需要将这两者结合起来。 因此,如果绑定(b
我正在使用 Google map ,并试图找出一个点是否位于其他两个点之间。到目前为止我所做的方法是制作两个向量。一个在两个“检查”点之间,一个在“检查”点之一与"new"点之间。计算出向量后,我对它
我正在制作一款游戏,您将鼠标悬停在目标上单击(射击)。我想知道如何确定 BufferedImage 是否被点击。 我有这样的代码: import javax.swing.*; import java.
我正在用Java开发一个程序,它使用processbuilder来启动另一个java程序,到目前为止,让另一个程序运行没有问题,但是我需要查明另一个程序是否干净地退出或抛出异常(具体来说)我正在寻找
我通常会检查 if obj.pk 以了解对象是否已保存。但是,如果您在某些字段上设置了 primary_key = True,这将不起作用。例如,我在 UserProfile 上设置了 user =
我正在使用 geyser 的混合 Android 应用程序。我想告知用户,如果他进入我网站的移动版本,就可以下载此应用程序。问题是,应用程序中运行的浏览器可以查看与移动网站几乎相同的内容。 如果我在应
我们正在尝试用某种优惠券作为奖励,只要在设备上完成新安装,就可以在实体店兑换。我们对此做了一些试验,并验证它是一个基于 IMEI 和 IMSI 的新设备。但我们发现人们在一些模拟器上这样做,这些 ID
我试图弄清楚如何查看 MotionEvent 何时完成某个事件(即,用户按下屏幕,四处拖动,然后将手指从屏幕上移开)。在文档中,我只看到 getEventTime 在事件开始时生成,但没有提及如何确定
我需要最快的方法来查看 IP 地址是否可达。在每个 IP 地址上都有一个服务器在特定端口上监听,所以如果您的方法是要查找服务器是否在端口上监听,请告诉我。 这样做的原因是假设我有 10 个 ip 地址
我有很多代码可以做这样的事情 bool GetIsUnique(IEnumerable values) { return values.Count() == values.Distinct()
在 Java 中,当由于缺少空间而无法显示 JLabel 的文本时,文本将被截断并在末尾添加“...”。 我怎样才能轻松找出当前 JLabel 显示的是全文还是截断的文本? 编辑: 我看到有一种方法可
是否可以编写类型特征,例如 is_callable它告诉对象是否有 operator()定义?如果事先知道调用运算符的参数很容易,但不是在一般情况下。当且仅当至少定义了一个重载调用运算符时,我希望特征
我有一个包含一些 HTML 代码的字符串。我想知道 HTML 代码是否代表可见文本或图像。我使用 Java 使用以下正则表达式来解决这个问题(我知道你无法使用 RegExps 解析 HTML,但我认为
如果 3D 空间中的三角形(由其顶点和法线指定)从 3D 空间中的给定点可见(由其 x、y 和 z co 指定),我想编写一个返回“True”的函数rds) 鉴于空间中的其他三角形可能充当“障碍物”,
我有一个从数据库中获取的 Item 的 List。 我做了类似的事情: List list; list.stream() .filter( i -> i.condition() ) .
如果是下面的方法 template void report(std::ostream&str, Args&&... args) { (str void report(std::ostream
我正在构建一个动态古腾堡 block ,需要根据事件插件进行不同的渲染。我知道有PHP函数is_plugin_active 。是否有等效的或“解决方法”可以从 JavaScript 中找到它?或者我需
我构建了一个使用表单例份验证的 ASP.NET 应用程序。在我们的托管帐户控制面板中,我设置了一项自动化任务,每周请求一次网页。页面加载时,会发送出许多电子邮件。 我只是想知道是否有任何方法可以在代码
我有一个自定义的 JDialog,是为了解决一些本地问题(RTL 等)到目前为止,它只有一个“确定”选项,我现在必须修改它才能有一个取消按钮。我就是这么做的。现在唯一的问题是我不知道如何从中获取输入,
我是一名优秀的程序员,十分优秀!