一个堆栈溢出的例子
2007-04-18 16:08
417 查看
1.DLL lib
LIBRARY "XXX.DLL"
EXPORTS
Initialize @1 PRIVATE
void __stdcall Initialize(int nParam1,int nParam2,int nParam3=0)
...{
......
}
2. 宿主程序
typedef long (WINAPI* InitializeProc)(int nParam1,int nParam2)
InitializeProc pfnInitialize = (InitializeProc )GetProcAddress(hInstance, "Initialize");
if(m_pfnInitialize )
pfnInitialize (1,2);
===============
当callInitialize函数时按照stdcall压栈顺序,先把2,1,return addr 压入栈中,而实际上Initialize会把return addr当作第三个参数nParam3,一旦函数执行完毕,会把错误的地址作为return addr引起程序crash
LIBRARY "XXX.DLL"
EXPORTS
Initialize @1 PRIVATE
void __stdcall Initialize(int nParam1,int nParam2,int nParam3=0)
...{
......
}
2. 宿主程序
typedef long (WINAPI* InitializeProc)(int nParam1,int nParam2)
InitializeProc pfnInitialize = (InitializeProc )GetProcAddress(hInstance, "Initialize");
if(m_pfnInitialize )
pfnInitialize (1,2);
===============
当callInitialize函数时按照stdcall压栈顺序,先把2,1,return addr 压入栈中,而实际上Initialize会把return addr当作第三个参数nParam3,一旦函数执行完毕,会把错误的地址作为return addr引起程序crash
相关文章推荐
- c 数据结构 linkedStack 链表模拟堆栈 一个更具有通用型的例子
- Java的一个堆栈例子
- 一个strcpy 的溢出例子
- 【例子】一个C++溢出虚函数指针的更真实试验
- 61 用C语言写一个内存溢出的例子
- 当线程溢出它的堆栈时,就生成一个异常条件
- 一个小例子说明堆栈、指针。
- SGCheck:一个实验堆栈和全局数组溢出检测器
- 一个防止溢出的一个例子
- 一个简单的溢出例子
- 一个判断相乘是否溢出的小例子
- spark Streaming编写一个WorldCount的例子
- jquery学习心得:一个很好的css和js函数调用的例子
- 全局变量的一个例子
- java中的基于套结字(socket)的通信 一. 一个双人单方向通信例子
- 一个简单的函数适配器的例子
- .NET(C#) Internals: 以一个数组填充的例子初步了解.NET 4.0中的并行(一)
- 一个SQL Tuning例子
- RCP应用程序开发之一——新建一个rcp application例子
- blockchain 区块链200行代码:在JavaScript实现的一个简单的例子