我写了一段C代码,然后我反汇编它并阅读寄存器,以便理解程序在汇编中的工作方式。int test(char *this){ char sum_buf[6]; strncpy(sum_buf,this,32); return 0; } 我一直在检查的代码片段是测试函数。当我...
我正在使用 CentOS 6.4 32 位系统,尝试在一个程序中引发缓冲区溢出。在 GDB 中它可以工作。这是输出:[root@localhost bufferoverflow]# gdb stack GNU gdb (GDB) Red Hat Enterprise Linux (7.2-60...
我刚试着在VS2010上编译了几个C++片段,并在IDA Pro上分析了这些可执行文件。我注意到大部分都在开始处(__security_check_cookie之后)有以下代码: xor eax, ebp 以及类似的代码: xor ecx, ebp 这是为什么呢?编译器优化已经关闭了。
"普通人不想要自由,他只是想要安全。" - H. L. Menken 我正在尝试编写非常安全的C代码。以下列出了我使用的一些技术,并询问它们是否像我认为的那样安全。请不要犹豫,将我的代码/预设彻底摧毁。任何发现甚至最微小漏洞或教给我新思路的答案都将受到高度重视。 从流中读取: 根据GNU...
我得到了一个作业任务,要求使用缓冲区溢出来调用一个函数而不需要显式地调用它。代码基本上是这样的:#include <stdio.h> #include <stdlib.h> void g() { printf("now inside g()!\n"); } ...
我正在尝试在C语言中完成Smashing the Stack for Fun and Profit的一个示例,但目前遇到了一些困难,以下是代码(我的机器是64位Ubuntu): int main() { int x; x = 0; func(1,2,3); ...
我读了一本关于缓冲区溢出的书,它建议处理方法如下: 将堆栈(和堆)设置为不可执行可以为现有程序提供高度保护,以防止许多类型的缓冲区溢出攻击。 但我不理解怎么做 - 如果不在堆或栈上执行,那么执行会发生在哪里?
我被要求维护一个大型的C++代码库,里面存在大量内存泄漏的问题。在研究时,我发现有很多缓冲区溢出导致了这些泄漏(不想知道是怎么变得这么糟糕的)。 我决定先解决缓冲区溢出的问题。为了让我的错误调试更容易,有哪些工具可以用来检查缓冲区溢出?
我创建了一个控件的子类,以添加一些所需的字段,但是现在当我在运行时创建它时,会出现“访问冲突”的错误。不幸的是,这个访问冲突并不发生在我创建控件的地方,即使我使用了所有调试选项(包括“使用调试 DCU 进行构建”),堆栈跟踪也无法帮助我! 为了重现这个错误,我尝试创建一个控制台应用程序,但显...