YiMiTuMi

使我进步的不是谦虚,而是别人羡慕我时我的那份骄傲!

保护模式(二)--页机制

c++

页 保护模式主要保护内存靠段和页的机制,段保护简单点说就是一个寄存器去访问一个虚拟地址跨段之间的保护,页保护是通过虚拟地址去查找物理地址时,对当前地址的读写等保护。 在X86处理器中地址分段模式包括一下2种形式: 1)平坦模式:在平坦模式下,系统能访问一个连续的、不分段的地址空间,所有的段被映射到同一个地址空间(虚拟的),所有的段都有相同的基地址0,界限为4GB(32位)。我们所使用的...

遍历系统所有加载的驱动

c++

遍历系统所有加载的驱动 遍历系统中的驱动可以采用两种方式: 1)每个驱动都有一个 _DRIVE_OBJECT 成员,这个成员,用 WinDbg 打印出来是这样的: kd> dt _DRIVER_OBJECT 85696180 ntdll!_DRIVER_OBJECT +0x000 Type : 0n4 +0x002 Size ...

保护模式(一)--段机制

c++

保护模式–段机制 保护模式主要保护内存靠段和页的机制,段保护简单点说就是一个寄存器去访问一个虚拟地址跨段之间的保护,页保护是通过虚拟地址去查找物理地址时,对当前地址的读写等保护。 在X86处理器中地址分段模式包括一下2种形式: 1)平坦模式:在平坦模式下,系统能访问一个连续的、不分段的地址空间,所有的段被映射到同一个地址空间(虚拟的),所有的段都有相同的基地址0,界限为4GB(32位)...

MFC线程使用

c++

MFC线程使用 一般用线程查找一些文件,然后发消息出去插入到MFC的List中,一般配合虚拟列表使用比较好。 注意:MFC不能在子线程内操作控件,所以要发出去。 定义一个消息: #define WM_FILE_INFO WM_APP +108 建一个线程: void FileInfoFunctionDlg::FindList() { HANDLE hThread =...

CFindReplaceDialog查找List列表

c++

CFindReplaceDialog查找List列表 通过调用CFindReplaceDialog来查找List列表里的数据,对每一行的每一列都进行查找。 实现 定义: virtual BOOL PreTranslateMessage(MSG* pMsg); afx_msg LONG OnFindReplace(WPARAM wParam, LPARAM lParam); void ...

EFFECTIVE+STL:50条有效使用STL的经验总结

c++

EFFECTIVE+STL中文版:50条有效使用STL的经验总结 1.vector是默认应使用的序列类型。 2.当需要频繁的在序列中间做插入和删除操作时,应使用list。 3.当大多数插入和删除操作发生在序列的头部和尾部时,deque是应考虑的数据结构。 4.连续内存容器(基于数组的容器):把它的元素存放在一块或多块(动态分配的)内存中,每块内存中存有多个元素。当有新元素插入或已有的...

ShellCode应用

c++

shellCold 1.ShellCode编写原则   1) 不能有全局变量   2) 不能使用常量字符串 char szBuffer[] = "ShellCode"; //会使用常量区,所以不可用 //写成 char szBuffer[] = {'S', 'h', 'e', 'l', '\0'}; //这个使用堆栈 char szBuffer[] = {'K', '0', ...

文件类型真实性判断

c++

文件类型真实性判断 用来检测文件的后缀是否是真实的后缀,这里我调用的是一个名为TrID的开源软件,同时他给我们提供了对外的接口。 通过对比文件的二进制数据来查找特征值,收集足够的特征值来判断文件所占类型的比例。但是纯文本文件是没办法进行判断的。 注意:Exe、Dll等文件都是PE文件所以判断出来的都为Exe后缀文件。 文件官网: https://mark0.net/soft-trid...

MFC 数据导出到XLS

MFC

MFC List导出到XLS 在实际使用时,将List中的数据导出到XLS中是一种很常用的数据导出做法。 先建立一个XLS文件,然后 _wfopen 打开文件,用 fwrite 写入,所以先获取表的数据就好。 当然只要有数据导出哪里的数据都一样。 获取列表数据并导出 BOOL xxxx::ExportCurrentLog(CListCtrl* pList, CHeaderCtrl*...

CreateDirectory创建路径

c++/MFC

CreateDirectory创建路径 CreateDirectory可以用来创建路径,但是这个函数不是递归的。它可以在一个路径中创建唯一的最终目录。也就是说,如果父目录或中间目录不存在,该函数将失败并显示错误消息ERROR_PATH_NOT_FOUND。 依次创建文件路径: void CreateClientFileBackUpPath(CString strFileBackUpPa...