一个简单的 stack trace 例程,C/C++ 两套接口
debug.h,前半是 C 接口,后半是 C++ 接口
[code]#ifndef DEBUG_H
#define DEBUG_H
#include
by wolf0403 - 程序开发 - 2006-09-19 04:37:43 阅读(572) 回复(0)
原文链接:http://insecure.org/stf/smashstack.html
不清楚是不是该发这里 还是内核源码版 考虑到这里人气要比那里旺 先发在这吧
问题是原文的最后一个例子 Small Buffer Overflows 我看的不是很懂
[code]
exploit4.c
------------------------------------------------------------------------------
#include
一个简单的 stack trace 例程,C/C++ 两套接口
debug.h,前半是 C 接口,后半是 C++ 接口
[code]#ifndef DEBUG_H
#define DEBUG_H
#include
void fun1(int a, int b) { char buf_fun1[4]; ...... } void fun2(int a, int b , int c) { char buf_fun2[100]; ... } 在调用fun1,fun2时它们的stack分布有一些差异. fun1: stack(低地址) top of buf_fun1 fsp ret a b stack(高地址) .. fun2: stack(低地址...
void fun1(int a, int b) { char buf_fun1[4]; ...... } void fun2(int a, int b , int c) { char buf_fun2[100]; ... } 在调用fun1,fun2时它们的stack分布有一些差异. fun1: stack(低地址) top of buf_fun1 fsp ret a b stack(高地址) .. fun2: stack(低地址...
函数原型:char* realloc(char *ptr, size_t new_size) ; ------------------------------ 问题1: realloc 之后,是不是把原来内存的内容也拷贝进去? 问题2: realloc失败后,会返回NULL,如果这样的话: char *ptr = malloc(1024) ; ptr = realloc(ptr, 1024*100) ; // ptr = NULL ptr = NULL 了,那怎么free(ptr) 内存泄漏?
需要将数据中的某些字节删除,相应地需要释放fg所占用的内存。比如将"asdfghjkl"中的"fg"删除,并返回"asdhjkl"。我用下面的code来完成。
#include
内存分配malloc, realloc等函数有两种工作方式:小块分配模式和大块模式
前者从低端开始忘高分,用brk.
后者从高往低分,不用brk.
在我的机器上128K是大模式,128K以下是小模式。大模式时候,brk不变,分配的内存在brk数值上方。
brk在大模式下不变。处于非常小的原始数值。
编译该测试程序,
./a.out 127
./a.out 130
分别看结果。
[CODE]
#include
[code]#include