- 博客(14)
- 资源 (1)
- 收藏
- 关注

原创 关于 _resetstkoflw
当从 stack overflow exception(c00000fd) 恢复的时候需要调用 _resetstkoflw. 如果发生了 stack overflow (c00000fd) 异常, 而这个函数没有被调用, 那么就没有 guard page (PAGE_GUARD) 了; 下一次 stack overflow 时, 进程不会产生 stack overflow
2012-12-26 19:51:55
748

原创 Stack overflow
Stack overflow - code c00000fd 当 stack 低地址溢出要注意 1) 通过捕获异常代码为 EXCEPTION_STACK_OVERFLOW 的异常. 2) 要明确这时候 stack 出了问题, 也就是说使用 stack 的任何操作都可能挂掉 比如 printf() 等 如果要输出相对可以接受的是使用 OutputDebugStri
2012-12-26 19:46:04
474

原创 stack 扩展机制
windows中,每个线程都关联一个stack,stack的默认大小是1M,用于存放临时变量,函数参数,返回地址等。但是当一个线程开始运行的时候不是其相关stack的内存就真正被提交,因为如果一个进程有10个线程,那么如果这10个线程的stack的内存都被提交,那么虚拟内存就占用了10M,就需要想对应的页表项等开销,而且这10M到底是否被真的使用还是个未知数,所以系统的策略是只提交几个页面,然
2012-12-26 19:43:10
405

原创 LoadLibrary 失败 0x000001e7 Attempt to access invalid address
现象:LoadLibrary 偶尔会失败,返回值 NULL, @err,hr 0x000001e7 Attempt to access invalid address. 原因在于DLL,当DLL link 的时候指定了 /FIXED Property Pages\Linker\Advanced | Fixed Base Address : Image must be loade
2012-12-26 19:16:11
1298
原创 使用 __declspec(dllimport) 能够优化对DLL导出函数的调用.
使用 __declspec(dllimport) 能够优化对DLL导出函数的调用. > 不使用时: [DLL] #ifdef THEDLL_EXPORTS #define THEDLL_API __declspec(dllexport) #else #define THEDLL_API
2012-12-27 22:22:17
384
翻译 CSS 中 Position relative 和 absolute区别
Relative PositioningA relative positioned element is positioned relative to its normal position.The reserved space for the element is still preserved in the normal flow.relative 位置是相对元
2012-12-26 20:03:23
378
原创 Win8 UT 上的小变动
Win8 UT 的时候发现GetRuntimeMethod()无法访问一个class的private方法,只用通过IEnumerableclass CForTest{ private int Increase1(int i) { return ++i; } public int Increase2(int i) { return ++i; }}
2012-12-26 20:02:25
388
原创 空指针带来的AV异常.
故名思意, 如果一个指针是NULL, (NullPtr == NULL), 则 NullPtr->Method() 会产生异常. 但是根据被调用函数不同, 分为 NullPtr->Member_Method() 和 NullPtr->Virtual_Method() // // 例子 // class AA {
2012-12-26 19:56:49
2373
原创 IA32 architecture 学习笔记 (五)<chapter 2 System Architecture Overview>
系统架构概况所有IA32处理器power-up 或 reset 之后进入实模式,然后软件(windows)开始初始化,切换到保护模式。IA32体系结构(自从Intel386开始)为OS和系统级软件提供了扩展支持:实模式、保护模式、虚拟8086模式和系统管理模式。IA32体系结构为操作系统提供了广泛的支持,包括以下几个部
2012-02-12 18:20:43
576
原创 IA32 architecture 学习笔记 (四)
IO端口 (Input / Output)除了和外存(磁盘,光盘等)传输数据,IA32处理器还可以和 IO 端口 (I/O ports)传输数据。IO端口是构建在系统硬件上的电子电路,该电路能够对处理器的控制、数据和编址进行译码。IO端口和外围设备进行通信,可能是输入端口、输出端口或者双向端口。有的 IO端口用来传输数据(如:给设备寄存器发送数据),有的是用来控制外围设备(如:控制磁盘控制
2011-12-31 22:38:45
815
原创 IA32 architecture 学习笔记 (三)
中断和异常(处理器层面)在软件层面,经常碰到两种异常:异步异常:SEH 结构化异常, 由CPU产生。 又叫做:硬异常;同步异常:由程序显示调用RaiseException产生,C++异常属于这种异常(throw)。又叫做:软件异常;在硬件处理器层面,处理器提供了两种机制用来中断一个程序的正常执行:中断:异步事件,一般由I/O设备触发;异常:同步事件,当处理器执行一个指令
2011-11-29 21:23:26
733
原创 Windbg之"查看内存"命令
查看局部变量dv /i /V查看thisdv thisdt thisdt @@C++(this->m_value)// 都行 查看静态对象1) x // 得到对象地址.2) dt type 对象地址.
2011-11-23 08:40:45
1166
原创 IA32 architecture 学习笔记 (二)
指针数据类型在非64bits模式下,体系结构定义了两种指针:near pointer :在一个段中32bits (or 16bits) 的offset。near pointer被用来 flat memory 模式。(比如在win32保护模式下Ring3,用户看到是flag memory,DS段描述符指定的DS段基地址是0x00000000, limit是整个4G,所以nea
2011-11-22 23:39:19
1024
原创 IA32 architecture 学习笔记 (一)
IA32支持最基本的三个操作模式 (modes of operations):1)Real-Address Mode(当 CPU 启动或者重启,CPU就处于real-address mode.)2)Protected Mode3) System management mode (SMM)操作模式决定哪些指令和哪些体系结构的特性可以被使用。基本执行
2011-11-12 19:25:53
2525
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人