模块隐藏

模块隐藏 遍历模块 HANDLE WINAPI CreateToolhelp32Snapshot( DWORD dwFlags, DWORD th32ProcessID ) //dwFlags: TH32CS_SNAPMODULE 遍历模块 PEB (Process Environment Block 进程环境块) 存放进程信息,每个进程都有自己的PEB信息 如何找到PEB EPROCESS进程内核对象结构体中 0x1b0偏移的位置 TEB线程环境块的 0x30位置 (实际上32位程序中的PEB的位置是固定的) TEB (Thread EnvironmentBlock 线程环境块)……

Continue reading

文件系统

文件系统 什么是文件系统 文件系统是操作系统用于管理磁盘上文件的方法和数据结构,简单说就是在磁盘上如何组织文件的方法,是软件层面的东西 windows上有哪几种文件系统 类型 NTFS FAT32 磁盘分区容量 2T 512MB – 2TB (早先只有32GB) 单个文件容量 4GB以上 最大4GB EFS加密 Y N 磁盘配额 Y N 如何操作文件……

Continue reading

远程线程注入

远程线程注入 线程是什么 如果说进程是个大房子,那么线程是进程中干活的人 线程是进程的灵魂 使用进程提供的数据 执行进程提供的代码 临时数据存储在计算机的寄存器中 创建线程 //在自己的进程中创建线程 CreateThread() //在别人的进程中创建线程 HANDLE WINAPI CreateRemoteThread ( _In_ HANDLE hProcess, //目标进程句柄 _In_ LPSECURITY_ATTRIBUTES lpThreadA……

Continue reading

动态链接库

动态链接库 静态链接库的缺陷 链接时将函数加入到exe导致exe变大 在运行时对于不同进程他们所使用的同一个函数都会独占空间,造成资源浪费 怎么解决 利用之前学习过的内存知识,例如映射类型的内存块 将这些公共代码放在文件中没在进程运行的时候在加载该文件 并且在内存中只需要加载一边,不同进程使用……

Continue reading

静态链接库

静态链接库 如何创建静态链接库 vs新建项目,选择静态链接库 在项目文件中新建 .cpp 文件与.h 文件 项目编译生成后会产生一个 .lib文件 如何使用静态链接库 将生成的.h与.lib文件复制到项目根目录 直接添加.lib与.h到项目中 在项目代码中添加头文件引用 #include “xxx.h” #pragma comment(lib,“xxx.lib”) 静态链接库的生成 lib的生成和我……

Continue reading

以文件为后背存储区的内存交换文件

以文件为后背存储区的内存交换文件 各种后备存储器的内存映射文件 以磁盘中文件系统的具体文件为后备存储的页交换文件(文件映射) 以页交换文件("虚拟内存")为后备存储器的页交换文件(共享内存) 页交换文件(虚拟内存) 通过CreateFileMapping api 创建文件映射内……

Continue reading

页交换文件与内存映射文件

页交换文件与内存映射文件 内存的几种状态和类型 私有类型: 使用VitualAlloc申请分配/调拨内存后,申请的内存只能被当前进程使用。其他进程无法访问。这就是所谓的私有内存 映射类型 -> 页交换文件(虚拟内存) 页交换文件补充了我们的物理内存的不足。在内存中长时间不活跃的数据,系统会将内存……

Continue reading

物理内存和虚拟内存的关系

物理内存和虚拟内存的关系 进程容器中4GB空间的内容分布 在所谓的4GB空间内,系统内核占据了高2GB的空间,普通进程看不见摸不着,而且高2GB的空间是全局共享。全局就那么一份,各个进程间共享 观察进程内存分布,我们发现进程中真正使用的内存远远不到2gb,而且地址不是连续的。说明操作系……

Continue reading

事件和线程同步

事件和线程同步 函数 //创建一个时间对象 HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, // SD 安全属性 BOOL bManualReset, // reset type 0自动复位(互斥)、1手动复位(通知模式) BOOL bInitialState, // initial state 初始创建时时间是否具备信号 LPCTSTR lpName // object name 对象的名称 ); //将目标事件对象设置为有信号的(同时通知其他线程) BOOL SetEvent( HANDLE hEvent // handle to event //目标事件的句柄 ); //将目标事件对象设置为……

Continue reading