
Win32
文章平均质量分 57
oalken
这个作者很懒,什么都没留下…
展开
-
【2021.01.08】模块隐藏
模块隐藏之断链TEB(Thread Environment Block/线程环境块),它记录相关线程的信息,每一个线程都有自己的TEB,哪个线程在执行的时候,FS寄存器中存放的就是哪个线程的TEB。FS:[0]即是当前线程的TEB。MOV EAX,FS:[0]。 PEB(Process Environment Block/进程环境块),它记录相关进程的信息,每个进程都有自己的PEB信息,TEB偏移0x30即是当前进程的PEB。MOV EAX,FS:[0x30]、MOV PEB,EAX。 TEB与原创 2021-01-08 19:35:18 · 489 阅读 · 0 评论 -
【2021.01.06】进程通信
进程A#include <iostream>#include <Windows.h>void Attack(){ std::cout << "**********攻击**********" << std::endl; return;}void Rest(){ std::cout << "**********打坐**********" << std::endl; return;}void Blood()原创 2021-01-06 23:41:22 · 169 阅读 · 0 评论 -
【2021.01.06】远程线程注入
注入在第三方进程不知道或者不允许的情况下将模块或者代码写入对方进程空间,并执行的技术。 在安全领域,"注入" 是非常重要的一种技术手段,注入与反注入也一直处于不断变化的,而且也处于愈来愈激烈的对抗当中。 如:远程线程注入、APC注入、消息钩子注入、注册表注入、导入表注入、输入法注入等。远程线程注入实现进程A#include <iostream>#include <Windows.h>int main(){ std::cout << "Wait原创 2021-01-06 22:32:03 · 250 阅读 · 0 评论 -
【2021.01.06】远程线程
线程线程是附属在进程上的执行实体,是代码的执行流程。 代码必须通过线程才能执行。 一个进程中至少要包含一条线程,进程中也可以包含多条线程。CreateRemoteThread创建远程线程,它允许你在其他进程创建线程。HANDLE CreateRemoteThread( HANDLE hProcess, LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwSta.原创 2021-01-06 21:30:25 · 200 阅读 · 0 评论 -
【2021.01.06】隐式链接
隐式链接DLL编译完成后生成*.dll与*.lib,但其生成的*.lib文件与静态链接库的不同,动态链接库中的*.lib里不包含代码,只包含一些辅助性的信息。 代码完全在*.dll中,所以只使用*.dll单文件也可以使用,但是只能使用显式链接(加载DLL、获取函数地址、释放DLL)。 如果有了*.dll与*.lib文件即可使用隐式链接。将 *.dll 与 *.lib 放到工程目录中。 将 #pragma comment(lib, "DLL名称.lib") 添加到调用文件中。 加入函数的声原创 2021-01-06 20:57:38 · 378 阅读 · 0 评论 -
【2021.01.06】静态链接库、动态链接库
什么是静态链接库静态链接库就是你使用的.lib文件,库中的代码最后需要连接到你的可执行文件中去。 所以静态连接的可执行文件一般比较大一些,需要使用静态库时把.h与.lib文件复制到项目文件夹中。然后在代码中进行引用。格式如:#include "a.h" #pragma comment(lib,"a.lib")静态链接库的缺点使用静态链接库由于在编译时会把静态链接库与可执行文件打包在一起,所以生成的可执行文件较大。 包含相同的公用代码,造成浪费。什么是动态链接库动态链接库(Dy原创 2021-01-06 20:17:53 · 209 阅读 · 0 评论 -
【2021.01.06】内存映射文件
什么是内存映射文件?好处:免去了打开文件关闭文件等等操作,想操作时直接操作自身的虚拟内存即可。 当要读写的文件特别大的时候,内存映射文件可以提供远比IO读写文件更好的性能。内存映射文件#include <iostream>#include <Windows.h>#define MAPPINGNAME L"共享文件"HANDLE g_hMapFile;LPTSTR g_lpBuff;DWORD MappingFile(LPCWSTR lpcF原创 2021-01-06 19:36:56 · 168 阅读 · 0 评论 -
【2021.01.06】文件系统
文件系统文件系统是操作系统用于管理磁盘上文件的方法和数据结构,简单点说就是在磁盘上如何组织文件的方法。 NTFS FAT32 磁盘分区容量 2T(2048GB) 32G 单个文件容量 4G+ 4G EFS加密 支持 不支持 磁盘配额 支持 不支持 卷相关APIAPI 作用 GetLogicalDrives 获取卷 GetLogicalDrives 获取一个所卷的盘符的字符串 GetLo.原创 2021-01-06 18:31:04 · 154 阅读 · 0 评论 -
【2021.01.05】私有内存的申请释放、共享内存的申请释放
Private、Mapped私有内存指的是某物理页只归某进程自己使用,称为Private内存。 有些物理页不但某一个进程可以用,其他进程也可以使用,被共享的时候,就称为Mapped内存。申请内存的两种方式VirtualAlloc/VirtualAllocEx通过VirtualAlloc/VirtualAllocEx申请的:Private Memory。LPVOID VirtualAlloc( LPVOID lpAddress, //要分配的内存区域的地址 SI原创 2021-01-05 21:44:35 · 485 阅读 · 0 评论 -
【2021.01.05】虚拟内存与物理内存
每个进程都有4GB内存,是真实存在的吗?虚拟内存在进程A中0x12345678的地址存放一个数值,进程B中0x12345678的地址也存放一个数值。 它们互不影响,各自存放自己的。 每个进程都有4GB内存指的是假的虚拟内存,等到真正使用的时候才会分配。物理内存进程A和进程B的0x12345678这个地址里面存放的数值,不但能读取还能修改,那它确实是存在的。 那么存在哪里了呢?存放在物理内存中。物理页操作系统为了便于管理物理内存,将物理内存按照一定的单元来分类。 整个物原创 2021-01-05 20:17:24 · 251 阅读 · 0 评论 -
【2021.01.05】子窗口、子窗口控件
子窗口控件Windows提供了几个预定义的窗口类以方便我们的使用,我们一般叫它们为子窗口控件,简称控件。 控件会自己处理消息,并在自己状态发生改变时通知父窗口。 预定义的控件有:按钮、复选框、编辑框、静态字符串标签和滚动条等。创建编辑框和按钮// Project2.cpp : 定义应用程序的入口点。//#include "framework.h"#include "Project2.h"#define IDC_EDIT_1 0x100#define IDC_BUTTON_1 0原创 2021-01-05 18:54:02 · 244 阅读 · 0 评论 -
【2021.01.05】消息类型
消息的产生与处理流程typedef struct tagMSG { HWND hwnd; //句柄 UINT message; //消息类型 WPARAM wParam; //消息详细信息 LPARAM lParam; //消息详细信息 DWORD time; //消息产生时间 POINT pt; //消息产生位置 DWORD lPrivate;} MSG, *PMSG, *NPM原创 2021-01-05 17:54:09 · 205 阅读 · 0 评论 -
【2021.01.04】Win32窗口程序及调试信息的输出
句柄真正的对象在0环(内核),句柄只是一个索引,无非就是一个DWORD。名称 作用 HANDLE 指向内核对象 HWND 指向窗口 HDC 指向设备上下文 HINSTANCE 指向模块 Win32程序入口函数int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, .原创 2021-01-04 21:47:34 · 965 阅读 · 0 评论 -
【2021.01.04】消息队列
什么是消息?当我们点击鼠标的时候,或者当我们按下键盘的时候,操作系统都要把这些动作记录下来,储存到一个结构体中,这个结构体就是消息。消息队列:每个线程只有一个消息队列原创 2021-01-04 20:07:45 · 245 阅读 · 0 评论 -
【2021.01.04】窗口的本质
窗口的本质HWNDHWND是全局句柄表中的索引。GDI 图形设备接口(Graphics Device Interface)设备对象(HWND)。 DC(设备上下文、Device Contexts)。 图形对象。图形对象 作用 画笔(Pen) 影响线条,包括颜色、粗细、虚实、箭头形状等。 画刷(Brushes) 影响对形状、区域等操作,如使用的颜色、是否有阴影等。 字体(FONTS) 影响文字输出的字体。 位图(Bitmaps) 影响位图原创 2021-01-04 18:48:57 · 149 阅读 · 0 评论 -
【2021.01.04】事件
事件事件本身也是一种内核对象。CreateEventHANDLE CreateEventA( LPSECURITY_ATTRIBUTES lpEventAttributes, //安全描述符 只要是内核对象都有这个 BOOL bManualReset, //如果希望是通知类型就填TRUE, 否则FALSE BOOL bInitialState, //有信号还是无信号 有信号代表一原创 2021-01-04 17:21:48 · 119 阅读 · 0 评论 -
【2021.01.03】互斥体
内核级临界资源怎么办?如果这个临界资源是内核级临界资源,例如是跨进程共享的物理页,或者是一个文件。 这种情况下,不同进程同时访问内核级临界资源,这种情况下如何保证访问是安全的?互斥体的使用CreateMutex创建一个互斥体。HANDLE CreateMutexA( LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner, LPCSTR l原创 2021-01-03 23:42:27 · 270 阅读 · 0 评论 -
【2021.01.03】临界区
线程安全问题每个线程都有自己的栈,而局部变量是储存在栈中的。 这就意味着每个线程都有一份自己的 "局部变量"。 如果线程仅仅使用 "局部变量",那么就不存在线程安全问题。 如果多个线程共用一个全局变量呢?多线程就一定存在线程安全问题吗?未必,如果多线程仅使用局部变量,那自然不存在线程安全问题。 多线程共用一个全局变量就一定存在安全问题吗?也未必,如果多线程共用的全局变量只进行读取操作,那也不存在线程安全问题。 如果多线程共用一个全局变量且有写入的操作,那么就必须考虑线程安全问题。线程安全问原创 2021-01-03 19:12:23 · 175 阅读 · 0 评论 -
【2021.01.03】线程控制
如何让线程停下来?函数 作用 Sleep 暂停当前线程的执行,直到超时间隔结束。 SuspendThread 挂起指定的线程。 64位应用程序可以使用 Wow64SuspendThread 函数挂起WOW64线程。 ResumeThread 减少线程的挂起计数。 当挂起计数减为零时,线程的执行将继续。 线程可以挂起多次使用 SuspendThread() 函数对一个线程挂起多次,如果需要恢复线程继续执行,线程被挂起几次就需要使用原创 2021-01-03 18:15:01 · 127 阅读 · 0 评论 -
【2021.01.02】创建线程
什么是线程?线程是附属在进程上的执行实体,是代码的执行流程。 一个进程可以包含多个线程,但一个进程至少要包含一个线程。创建线程HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, //SD 安全描述符,应该已经很熟悉了 SIZE_T dwStackSize, //initial stack size LPTHREAD_START_ROUTINE原创 2021-01-02 22:12:21 · 90 阅读 · 0 评论 -
【2021.01.02】进程相关API
进程ID与进程句柄全局句柄表索引 地址 内核对象 0 0x87654321 EPROCESS 1 2 0x87654400 ETHREAD 3 0x87654000 EPROCESS 4 0x87653400 ETHREAD 进程的句柄表是私有的,仅当前进程有效,拿到其他进程中不是有效的。 而系统拥有一张全局句柄表,整个系统下都可以使用。 操作系统的全局句柄表包含了所有正在运行中的进程和线程。..原创 2021-01-02 21:45:10 · 177 阅读 · 0 评论 -
【2021.01.01】句柄表
什么是内核对象?像进程、线程、文件、互斥体、事件等在内核中都有一个对应的结构体,这些结构体由内核负责管理,我们管这样的结构体叫做内核对象。进程 线程 文件 EPROCESS ETHREAD FILE_OBJE 有哪些内核对象?见CloseHandle()函数的MSDN页面:RemarksThe CloseHandle function closes handles to the following objects:Access token Comm原创 2021-01-01 21:40:52 · 158 阅读 · 0 评论 -
【2020.12.31】创建进程
CreateProcessBOOL CreateProcessA( LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD原创 2020-12-31 23:58:00 · 291 阅读 · 0 评论 -
【2020.12.31】进程的创建过程
进程内存空间地址划分每个进程有4GB虚拟内存空间(实际只有2G:也就是低2G空间的用户模式区)。 进程的用户模式区低2G空间前64KB与后64KB是没有使用的。 每个进程的内核空间是同一份,是公用的。分区 x86 32位Windows 空指针赋值区 0x00000000 - 0x0000FFFF 用户模式区(低2G) 0X00010000 - 0x7FFEFFFF 64KB禁入区 0x7FFF0000 - 0x7FFFFFFF 内核(高2G) 0x80原创 2020-12-31 22:45:31 · 279 阅读 · 0 评论 -
【2020.12.30】Win32 API
什么是Win32 API?有哪些?Win32 API 主要是存放在 C:\Windows\system32 目录下的所有DLL。 几个重要的DLL:Kernel32.dll:最核心的功能模块,比如管理内存,进程和线程相关的函数等。 User32.dll:是Windows用户界面相关应用程序接口,比如创建窗口和发送消息等。 GDI32.dll:全称是Graphical Device Interface(图形设备接口),包含用于画图和显示文本的函数。在Win32中使用字符串//字符类.原创 2020-12-30 21:52:40 · 265 阅读 · 0 评论 -
【2020.12.30】C语言中的宽字符
//默认使用ASCIIchar szStr[] = "你好";//默认使用Unicodewchar_t swStr[] = L"你好";常用函数 多字节字符类型 宽字符类型 说明 类型 char wchar_t 多字节字符类型、宽字符类型 命令 printf wprintf 打印到控制台 命令 strlen wcslen 获取字符串长度 命令 strcpy wcscpy 字符串复制..原创 2020-12-30 20:10:46 · 311 阅读 · 0 评论