55得票3回答
为什么这个内存地址 %fs:0x28 ( fs[0x28] ) 有一个随机值?

我写了一段C代码,然后我反汇编它并阅读寄存器,以便理解程序在汇编中的工作方式。int test(char *this){ char sum_buf[6]; strncpy(sum_buf,this,32); return 0; } 我一直在检查的代码片段是测试函数。当我...

55得票8回答
缓冲区溢出在使用gdb时有效,但不使用gdb无效。

我正在使用 CentOS 6.4 32 位系统,尝试在一个程序中引发缓冲区溢出。在 GDB 中它可以工作。这是输出:[root@localhost bufferoverflow]# gdb stack GNU gdb (GDB) Red Hat Enterprise Linux (7.2-60...

45得票1回答
在C++编译器输出中使用了"xor eax, ebp"。

我刚试着在VS2010上编译了几个C++片段,并在IDA Pro上分析了这些可执行文件。我注意到大部分都在开始处(__security_check_cookie之后)有以下代码: xor eax, ebp 以及类似的代码: xor ecx, ebp 这是为什么呢?编译器优化已经关闭了。

41得票7回答
编写安全的C语言和安全的C语言习惯用法

"普通人不想要自由,他只是想要安全。" - H. L. Menken 我正在尝试编写非常安全的C代码。以下列出了我使用的一些技术,并询问它们是否像我认为的那样安全。请不要犹豫,将我的代码/预设彻底摧毁。任何发现甚至最微小漏洞或教给我新思路的答案都将受到高度重视。 从流中读取: 根据GNU...

35得票5回答
如何触发缓冲区溢出?

我得到了一个作业任务,要求使用缓冲区溢出来调用一个函数而不需要显式地调用它。代码基本上是这样的:#include <stdio.h> #include <stdlib.h> void g() { printf("now inside g()!\n"); } ...

32得票12回答
什么是缓冲区溢出,如何引发它?

我听说过缓冲区溢出,想知道如何引发它。 有人能展示一个小的缓冲区溢出例子吗?还有它们被用于什么?

26得票5回答
试图执行堆栈破坏导致了段错误

我正在尝试在C语言中完成Smashing the Stack for Fun and Profit的一个示例,但目前遇到了一些困难,以下是代码(我的机器是64位Ubuntu): int main() { int x; x = 0; func(1,2,3); ...

26得票7回答
如果您的堆栈和堆都是不可执行的,那么您的代码如何运行?

我读了一本关于缓冲区溢出的书,它建议处理方法如下: 将堆栈(和堆)设置为不可执行可以为现有程序提供高度保护,以防止许多类型的缓冲区溢出攻击。 但我不理解怎么做 - 如果不在堆或栈上执行,那么执行会发生在哪里?

25得票14回答
C/C++有哪些工具可以检查缓冲区溢出?

我被要求维护一个大型的C++代码库,里面存在大量内存泄漏的问题。在研究时,我发现有很多缓冲区溢出导致了这些泄漏(不想知道是怎么变得这么糟糕的)。 我决定先解决缓冲区溢出的问题。为了让我的错误调试更容易,有哪些工具可以用来检查缓冲区溢出?

23得票1回答
当一个控件的类名非常长时,为什么会出现访问冲突?

我创建了一个控件的子类,以添加一些所需的字段,但是现在当我在运行时创建它时,会出现“访问冲突”的错误。不幸的是,这个访问冲突并不发生在我创建控件的地方,即使我使用了所有调试选项(包括“使用调试 DCU 进行构建”),堆栈跟踪也无法帮助我! 为了重现这个错误,我尝试创建一个控制台应用程序,但显...