07 2020 档案
摘要:前言 PE文件中的输入表含有三个重要结构IID,INT,IAT。PE文件为需要加载的DLL文件创建一个IID结构,一个DLL与一个IID对应。INT是输入名称表,IAT输入地址表,在没有绑定输入的情况下磁盘中的文件INT与IAT相同。如果有绑定输入的话因为绑定输入的函数其磁盘文件中的IAT项就已经是
阅读全文
摘要:前言 windows的SEH结构化异常处理是基于线程的,传统的SEH结构化异常会基于堆栈形成一条包含异常回调函数地址的链(SEH链)。而fs:[0](TEB的第一个字段)指向这条链的链头,当有异常发生时并产送到SEH处时其会从fs:[0]开始遍历这条链。如果那个链结点的回调函数能正确处理异常则程序会
阅读全文
摘要:前言 以前对c++的new[]的了解就是开辟一块内存,直到我最近在程序中用到它才发现我的了解太浅。 问题分析 new[]得到的内存空间不会自动初始化 new[]是在堆区中动态分配指定大小的内存,但是这块内存并不会自动进行初始化。也就是说这块内存并不会被置0,所以当堆中申请的内存中原有数据会被保留成为
阅读全文
摘要:INT3断点 INT3断点是利用0Xcc指令实现的,cpu在执行0xcc指令时会引发断点异常调试器会捕捉这个异常。 INT3断点引发的异常属于陷阱型异常,在执行完0xcc指令后eip指向下一条指令。但是系统对int3有特殊处理,当异常第一次分发时如果调试器没有处理那么第二次异常分发之前系统会令eip
阅读全文
摘要:中断 中断(硬件中断)是cpu为了响应外部突发事件而引入的一种机制。在没有中断机制之前cpu需要频繁查询外部设备的状态来与外部设备进行通信,而有了中断机制后,只有当外部设备要求cpu进行处理时cpu才会与其进行通信,这就大大提高了cpu的效率。 中断分类 可屏蔽中断 可屏蔽中断是为了使在执行某些任务
阅读全文
摘要:前言 为了熟悉调试子系统与调试器之间的联系,以及了解调试器各种断点的原理以及win32调试API的使用自己尝试写了一个简单的调试器。中间遇到了很多问题,总结一下希望能帮助到遇见类似问题的人。 问题一 CreateDialogParam()创建非模态对话框的时候,虽然其消息循环在外部,但并不是调用完就
阅读全文
摘要:窗口关系 在windows系统中,系统会为每个窗口都维护一个窗口对象(即一个数据结构)。这个数据结构的成员就含有owner和parent,分别是窗口的拥有者窗口和父窗口。 所以两个窗口可能存在两种关系:①父子关系 ②拥有与被拥有 父子关系(parent—child) 可以在任何时期改变窗口的父子关系
阅读全文
摘要:前言 学习windows通道时,用他去完成自己的cmd小工具时遇到了一些问题总结一下。 ① 关于STARTUPINFO结构:因为为了在cmd程序中通过通道与我们的程序交互,我们需要把cmd的输入输出变为匿名通道的输入输出。这就需要改变STARTUPINFO结构。 注意在把输入输出句柄改变时不要忘记改
阅读全文