问题标签 [aslr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
111 浏览

aslr - 使用 ASLR 的校验和生成器

我是这里的新手。我想将 Windows 任务管理器中的 PID 与 Visual Studio 2010 中动态基础 ASLR 生成的校验和/哈希值相匹配?我已经在 Visual Studio 2010 中启用了 ASLR,但没有收到任何数据。知道怎么做吗?

线索:

  1. 窗口功能CreateToolhelp32Snapshot
  2. MODULEENTRY32
  3. 窗口功能OpenProcess

非常感谢伙计们。

吉格斯

0 投票
2 回答
1685 浏览

delphi - 在 C++ Builder 中启用安全异常处理

对于 Windows 8 应用程序认证,有(除其他外)以下要求:

  • 3.2 必须使用/SafeSEH标志编译您的应用程序以确保安全的异常处理
  • 3.3 你的app必须使用/NXCOMPATflag编译,防止数据执行
  • 3.4 您的应用程序必须使用/DYNAMICBASE地址空间布局随机化 (ASLR) 标志进行编译

我无法找到如何在 C++Builder XE 中启用其中任何一个。

对于/NXCOMPATand /DYNAMICBASE,可以editbin.exe从 VS 或peflags.exeCygwin 使用。虽然我会对可能的副作用更有信心,但如果有本地方法来启用这些。

无论如何,我完全不知所措/SafeSEH

0 投票
2 回答
20499 浏览

linux - 仅为我自己禁用和重新启用地址空间布局随机化

我想在我的系统(Ubuntu Gnu/Linux 2.6.32-41-server)上禁用地址空间布局随机化(ASLR),但是,如果我使用

我想这个改变会影响系统上的所有用户。(这是真的吗?)我怎样才能将禁用 ASLR 的影响限制为仅对我自己作为用户,或者仅对我调用命令禁用的 shell 会话?

顺便说一句,我看到我系统的当前(默认)设置是

为什么是 2 而不是 1 或 3?在哪里可以找到有关 /proc/sys 设置的数值、范围和含义的文档?谢谢!

0 投票
1 回答
7770 浏览

stack - 什么是堆栈随机化以及它如何防止缓冲区溢出攻击?

我从一本书中读到缓冲区溢出可能被用作注入攻击系统的漏洞代码的一种方式。堆栈随机化是防止此类攻击的有效方法之一。

我不明白什么是堆栈随机化以及它如何防止这些攻击?

0 投票
1 回答
314 浏览

linux - 为什么堆栈必须是页面对齐的?

在 Linux 中,我尝试(只是为了好玩)修改 process.c 中的内核源代码,创建一个具有更多熵的堆栈地址,即特别是以下行:

当我改变太多时,内核会停止,或者我会得到一些看似未定义的行为。我猜这会导致 PAGE_ALIGN() 以某种方式失败?我对 PAGE_ALIGN() 为何特别失败,或者内核中究竟是哪一段代码失败(尽管也很高兴知道)不感兴趣;我对堆栈为什么必须驻留在特定区域更感兴趣。这背后的架构原因和动机是什么?这是否与 GDT/LDT 在保护模式下的工作方式有关?

只是为了弄清楚我在问什么:

为什么堆栈必须具有 0xbfXXXXXX 形式(在 32 位上)?为什么堆栈不能是例如 0xaaXXXXXX 或任何其他值?

0 投票
1 回答
986 浏览

c - Linux 上的 ASLR 限制

我试图通过在 process.c 中修改 arch_align_stack() 来“改进”我自己的 x86 32 位机器上的 ASLR,方法是将第二个参数增加到模:

但是我很快发现,过多地篡改它会导致内核恐慌。而且我怀疑它会使系统变得不稳定,即使只是对其进行了一些篡改(它很可能靠运气存活了一段时间?)。

这促使我问了一个关于为什么会发生这种情况的问题(原始问题为什么堆栈必须是页面对齐的?)。显然这是因为(如用户“mpe”所述)默认堆栈大小为 8 kiB,即 8192 字节。那么通过扩展增加内核中的堆栈大小,这个参数(8192)应该可以增加吗?还提到堆栈本身的位置可以是随机的。

帕克斯会这样做吗?如果不是,那为什么不呢?

内核中如何/在哪里指定堆栈大小?这对于 32 位和 64 位有什么不同吗?

32位和64位之间有什么区别吗?64 位仍然使用 process.c 来处理这些东西吗?我看到在 process_64.c 中似乎没有与此代码等效的内容。

0 投票
0 回答
375 浏览

linux - PaX ASLR 与 Linux 默认 ASLR(64 位)

PaX 针对 64 位 x86 机器的 ASLR 实现比 Linux 默认的 64 位 ASLR 实现强得多。我的问题很简单,为什么 PaX 的实现不是默认的?

我假设这与兼容性问题有关,它破坏了某些程序的功能?或者以某种方式破坏其他东西?

哪些程序(示例,如果有人知道的话)会破坏,如果有的话,更有趣的是为什么会破坏它们?

另一种可能性是更高的性能损失,但在查看源代码后,我无法弄清楚为什么它应该更慢。请随时纠正我。我假设它与前者有关,兼容性。

0 投票
1 回答
1647 浏览

ios - 如何在我的单点触控应用程序中启用 PIE/ASLR?

XCode Build Settings 中有一个名为“Don't Create Position Independent Executables”的选项。这很容易在此处启用。

但是,我正在使用 MonoDevelop 和 MonoTouch 来开发我的应用程序,但在那里我找不到等效的设置。我尝试将 -fpie 标志传递给编译器,但似乎不起作用。当我使用 otool 检查编译的二进制文件时,它没有设置 PIE 标志。

请帮忙。

0 投票
1 回答
1159 浏览

linux - mmap() 熵的 ASLR 位

我正在研究 x86 系统上 mmap() 的 ASLR 随机化。我在很多地方读到过,在使用 mmap() 加载的地址上有 16 位随机化。

但是在源代码中我发现:

所以,那将只是 8 位的随机性。

但实际上,运行一些测试,我得到以下地址 (stack-heap-mmap) bf937000,09a60000,b774b000

bfa86000,090ef000,b76e2000

如果可以是 b77XX000 和 b76XX000 就超过 16 位!!!!

对此有什么帮助吗?

0 投票
1 回答
461 浏览

.net - 无法从 c# 项目(DynamicBase)加载本机 dll

在 Visual Studio 中,我创建了一个 C# 可执行文件,它加载一个 clr 库,然后在 64 位本机 dll 上调用 loadlibrary,显示一个内部异常消息框。如果我将可执行文件更改为 clr 并在 exe 项目上将高级选项随机基地址设置为否 (/DynamicBase:NO),它加载正常。如何让本机 .net exe 不使用 ASLR?此外,如何让这个场景在 IIS 下工作?-谢谢