摘要:

## 30、模块隐藏 一般来说,程序中注入的dll 都很难存活,因为程序的保护机制会遍历dll,会发现不属于自己的那个dll。所以我们就需要进行模块隐藏,将dll隐藏,让程序查不到。 ①模块隐藏之断链 TEB(Thread Environment Block 线程环境块 (属于是三环的结构体而非零环
阅读全文
摘要:

25、动态链接库 ①什么是动态链接库? 动态链接库(Dynamic Link Library,缩写为 DLL) ,是微软公司在微软 Windows操作系统中,实现共享函数库概念的一种方式。 这些库函数的扩展名是”.dll"、".ocx" (包含ActiveX控制的库)。 相较于静态链接库是和ex
阅读全文
摘要:

21、共享内存的申请释放 ①共享内存 HANDLE CreateFileMapping(HANDLE hFile, //handle to fileLPSECURITY ATTRIBUTES lpAttributes,// securityDWORD flProtect, // protection
阅读全文
摘要:

17、消息类型 ①消息的产生与处理流程: 其实窗口创建的流程比它的代码层面更加的重要。理清楚上图的消息流程。 操作系统会将不同的操作产生的不同的消息,将所有的消息都分一个类别,设置唯一的编号。 typedef struct tagMSG{ HWND hwnd; //消息对应的某个窗口 UINT me
阅读全文
摘要:

13、事件 ①通知类型: HANDLE CreateEvent(LPSECURITY_ATTRIBUTES IpEventAttributes,//SDBOOL bManualReset, // reset typeBOOL bInitialState, // initial stateLPCTST
阅读全文
摘要:

9、创建线程 ①什么是线程? <1>线程是附属在进程上的执行实体,是代码的执行流程。 <2> 一个进程可以包含多个线程,但一个进程至少要包含一个线程。 可以这么理解,进程属于是空间上的概念,是代表了4GB 的虚拟内存,而线程属于是时间上的概念,也就是说线程也就是当前正在运行中的实际的代码。在任务管理
阅读全文
摘要:

5、进程 进程是指运行中的一个程序。(X) ①什么是进程? 进程提供程序所需的资源,如:数据、代码等等。 程序运行起的状态与进程没有关系,举个例子,程序就相当于一个房子,进程就是其中的东西,而使用这些房子中的东西的人称为线程。 ②进程内存空间的地址划分 分区 x86 32位Windows 空指针赋值
阅读全文
摘要:

1、导入 关于Win32的错误认知: (1)已经有malloc()函数了,为什么还要学Win32 API? (2)学MFC就可以了,为什么要学Win32? Win32课程包含的内容: 01、字符 09、文件系统 02、多线程 10、内存映射 03、线程同步 11、DLL 04、窗口的本质 12、远程
阅读全文
摘要:

21、哈希查找表 ①哈希表的基本概念 哈希表的概念 哈希表:即散列存储结构 散列存储的基本思想:建立关键码与存储位置对应关系,或者说由关键码的值决定数据的存储的地址。 优点:查找速度极快,查找效率与元素个数无关 例1:若将学生信息按如下方式存入计算机,如: 将2001011810201的所有信息存入
阅读全文
摘要:

17、顺序查找 ①查找的基本概念 基本概念 查找表:由同一类型的数据元素(或记录)构成的集合 查找:查询特定元素是否在表中 查找成功:若表中存在特定元素,称查找成功,应输出该记录 查找不成功:表中不存在给定值的元素,称查找不成功 静态查找: 只查找,不改变集合内的数据元素 动态查找: 既查找,又改变
阅读全文
摘要:

13、二叉树基础 ①二叉树的定义 定义 是n(n>=0)个结点的有限集合,该集合或者为空集(称 为空二叉树),或者由一个根结点和两颗互不相交的、分别称 为根结点的左子树和右子树的二叉树组成。 特征: 1.每个结点最多两颗子树 2.左子树和右子树是有顺序的 3.即使树中某结点只有一颗子树也要区分是左子
阅读全文
摘要:

9、栈的链式存储结构及实现 定义 栈的链式存储结构称为链栈,是运算受限的单链表。其插入和删除操作只能在表头位置上进行。因此,链栈没有必要像单链表那样附加头结点,栈顶指针top就是链表的头指针。 对于链栈来说: 1.不需要头结点 2.不存在栈满的情况 3.top=NULL,为空栈 示意图: 链栈的结构
阅读全文
摘要:

5、线性表的链式存储结构 ①定义 链式存储: 用一组任意的存储单元存储线性表中的数据元素。 线性链表:用这种方法存储的线性表简称线性链表。 特点:结点在存储器中的位置是随意的,即在逻辑上相邻的数 据元素在物理上不一定相邻。 实现:为了正确表示结点间的逻辑关系,在存储每个结点值的 同时,还必须存储指示
阅读全文
摘要:

数据结构 1、前言 为什么要学习数据结构? 数据结构: 程序=数据结构+算法 好的数据结构可以带来更高的运行或者存储效率的算法 学好“数据结构”这门课程,对于学习计算机专业的其他课程,如操作系统、数据库管理系统、软件工程、编译原理、人工智能、游戏等都是十分有益的。 怎么学习数据结构? 数据结构: 重
阅读全文
摘要:

9、导入表 一个进程是由一组PE文件构成的: PE文件提供哪些功能 : 导出表 PE文件需要依赖哪些模块以及依赖这些模块中的哪些函数 : 导入表 扩展pe头中的最后一个成员是一个结构体数组,其中包含了十六个结构体 其中 _IMAGE_DIRECTORY_ENTRY_IMPORT 这个成员就是代表
阅读全文
摘要:

5、RVA与FOA的转换 引入问题: 如果想改变一个全局变量的初始值,该怎么做? 如果一个变量没有赋初值的话,那么他在硬盘的时候,不回存放在PE文件中,直到在内存中展开的时候才会在文件中。而如果有初始值的话,就会一直存在。 如果我们想要从一个运行起来的PE文件中去找到未运行的文件中的一个全局变量的地
阅读全文
摘要:

1、主要结构体 DOS MZ文件头的内存大小为64个字节 DOS Stub的大小不确定,因为这段是给连接器用的,即使这段数据被删改也不影响运行 通过DOS MZ文件头尾到PE文件头的内存确定大小 DOS部分属于是历史遗留问题,用于DOS 操作系统与exe程序运行无关,只是保留在PE中 PE文件头由三
阅读全文