Windows PE 结构 之 节表结构解析及遍历
0x0 基础知识 00 区段名及其含义 区段名含义.text默认的代码区块, 它的内容全是指令代码,链接器把所有目标文件的text块连接成一个大的.text块,使用Borland C++编译器产生的代码存放在CODE的区...
Windows PE 结构 之 RVA&FOA地址转换与对齐
0x0 基础知识 00 RVA & FOA 转换; 当一个 PE 文件被加载到内存中以后,我们称之为 ' 映象 '(image)。一般来说,PE文件在硬盘上和在内存里是不完全一样的,被加载到内存以后其占用的虚拟地...
Windows PE 结构 之 导出表结构解析
0x0 基础知识 当PE文件被执行的时候,Windows加载器将文件装入内存并将导入表登记的动态链接库(一般是DLL格式)文件一并装入地址空间,再根据DLL文件中的函数导出信息对被执行文件的IAT进行修...
Windows Dll注入 之 远程线程注入
0x0 基础知识 原理:在目标进程中申请一块内存并向其中写入DLL路径,然后调用CreateRemoteThread,在目标进程中创建一个线程,线程函数的地址就是LoadLibraryW(A),参数就是存放DLL路径的内存指...
C++ UserAPC 实现 Shellcode loader
0x0 基础知识 00 异步过程调用 (APC) 异步过程调用 (APC) 是在特定线程的上下文中异步执行的函数。 当 APC 排队到线程时,系统会发出软件中断。 下次计划线程时,它将运行 APC 函数。 系统生成...
C++ 线程上下文 实现 Shellcode Loader
0x0 基础知识 00 线程上下文 CONTEXT 每个线程内核对象都维护着一个 CONTEXT结构,里面保存了线程运行的状态,使得CPU可以记得上次运行该线程运行到哪里了,该从哪里开始运行,该线程内部数据如...
C++ TLS 实现 Shellcode Loader
0x0 基础知识 00 TLS 是什么? 线程局部存储(Thread Local Storage,TLS)是一种将数据与特定执行线程关联的机制。当在一个线程内部的各个函数调用之间共享数据,但不让其他线程访问时,可以使...
C++ CallBack 回调 实现 Shellcode Loader
0x0 基础知识 00 原理 使用 EnumFontsW 函数的回调机制来执行 shellcode。当 EnumFontsW 函数遍历到一个字体时,它将调用 shellcode 作为回调函数来处理字体信息。由于回调函数直接指向 shellco...
C++ VEH 异常 实现 Shellcode Loader
0x0 基础知识 00 原理 VEH 的中文名字: 向量化异常处理(Vectored Exception Handling) VEH 最早出现在XP上 因为只有XP及以上Window版本才支持。目前 Windows 平台下实现和使用的异常处理机制...
C++ SEH 异常 实现 Shellcode Loader
0x0 基础知识 00 原理 结构化异常处理(SEH)是Windows操作系统提供的强大异常处理功能。而Visual C++中的__try{}/__finally{}和__try{}/__except{} 结构本质上是对Windows提供的SEH的封装。 使...
C++ Fiber 纤程 实现 Shellcode Loader
0x0 基础知识 00 原理 纤程(Fiber)是一种最轻量化的线程(lightweight threads)。它是一种用户线程(user thread),让应用程序可以独立决定自己的线程要如何运作。操作系统内核不能看见它,...
C++ 线程池等待 实现 Shellcode Loader
0x0 基础知识 00 原理 利用创建线程池等待对象 CreateThreadpoolWait() 的回调函数来执行 ShellCode 01 文档 createEventW 函数 (synchapi.h) - Win32 apps | Microsoft Learn createThreadpool...