随笔分类 - Windows编程
摘要:最近逆了一下WannaCry病毒,发现里边加载动态库是自己实现的,所以我也学着实现了一下。 0x001 读取动态库到内存 首先,需要将目标动态库读取的到内存,然后再进行下一步工作。 0x002 在目标加载地址处申请内存空间 实现LoadLirbrary其实就是将Dll文件由文件格式映射为内存格式,我
阅读全文
摘要:1.由于地址长度为64位,因此CALL指令把RSP(堆栈指针)寄存器的值减去8. 2.第一批传递子程序的四个参数依次存放于寄存器RCX、RDX、R8、R9。因此,如果只传递一个参数就会放到RCX寄存器中。如果还有第二参数就会将其放入RDX寄存器中,其他参数从右至左入栈。 3.长度不足64位的参数不进
阅读全文
摘要:Hot Patch钩子,多线程Inline Hook解决方法
阅读全文
摘要:最近去了一次面试,面试官问道这个进程的自建堆和默认堆的相关问题,我当时感觉答的并不是很好,这时候我决定好好整理一下相关知识跟大家分享。 进程默认堆: Windows许多重要的函数都用Unicode字符和Unicode字符串来执行它们所有的操作。如果我们调用的是一个函数的ANSI版本,那么该函数的AN
阅读全文
摘要:在Windows中,在同一台机器上共享数据的最底层的机制就是内存映射文件。所以,所有进程间通讯机制,都会用到内存映射文件。 这种数据共享机制是通过让两个或多个进程映射同一个文件映射对象得视图实现的,这意味着在进程间共享相同的物理存储界面。因此,当一个进程在文件映射对象视图中写入数据的时候,其他进程会
阅读全文
摘要:剪切板是一个存在于全局内存的一个容器,剪切板操作一般分为四个步骤: 1) OpenClipboard 先打开剪切板 2) EmptyClipboard 清空原来已经有的内容 3) SetClipboardData 写入现在的内容 4) CloseClipboard 关闭剪切板 这里我就不给出例子了,
阅读全文
摘要:套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。按照往例,话不多说,直接上Demo: Server端: Client端:
阅读全文
摘要:管道分为命名管道和匿名管道,首先我们谈一下命名管道。 一。命名管道(Named Pipe) 命名管道双向,跨网络,任何进程都可以轻易的抓住,放进管道的数据有固定的格 式,而使用ReadFile()只能读取该大小的倍数。 其实管道的使用方法与文件类似,都能使用read,write,open等普通IO函
阅读全文
摘要:邮件槽提供了不可靠的单向数据传输,但是邮件槽支持多播。邮件槽服务器使用CreateMailslot函数来创建一个邮件槽。C热阿特Mailslot接受形如"\\.\\Mailslot\MailslotName"(客户可以指定"\\.\"为本地计算机)的UNC名称作为一个输入的参数。如命名管道一样,邮件
阅读全文
摘要:本程序可完美获得x64和x86程序PEB,及环境变量等信息。 程序首先用OpenProcess打开目标进程,然后用Ntddl.dll导入表中微软未公开函数NtWow64QueryInformationProcess64(NtQueryInformationProcess)、NtWow64ReadVi
阅读全文
摘要:在C++中执行cmd指令的两种方法: 方法1: 方法2: 相关提醒: 1.使用这两个函数时不需要另外添加头文件,因为system函数声明在了stdlib.h中,而WinExec函数声明在了WinBase.h中。 2.一定要注意两种方法的区别,具体如下所示: system函数在执行时,不会顺序执行接下
阅读全文
摘要:1.CreateToolhelp32Snapshot()。这一种是比较常见的,利用进程快照进行枚举进程,主要利用CreateToolhelp32Snapshot()、Process32First()和 Process32Next()三个函数。下面直接上代码: 2.EnumProcesses()。利用
阅读全文
摘要:导入表是WindowsPE文件中的一组数据结构,可执行程序(即EXE文件)被加载到地址空间后,每个导入的DLL模块都有一个对应的导入表,PE加载器会根据导入表来加载进程需要的其他DLL模块。 导入表的数据结构如下: OriginalFirstThunk/Characteristics:指向导入表(I
阅读全文
摘要:SetWindowsHookEx函数是微软提供给程序开发人员进行消息拦截的一个API。不过,他的功能不仅可以用作消息拦截,还可以进行DLL注入。 SetWindowsHookEx原型声明如下: idHook:指示将要安装的挂钩处理过程的类型。例如,idHook为“WH_CALLWNDPROC”时代表
阅读全文
摘要:在Windows NT/2000/XP/3000操作系统中,当需要加载user32.dll的程序启动时,user32.dll会加载注册表键HKEY_LOCAL_MACHINE\Software\Microsoft\windowsNT\CurrentVresion\Windows\AppInit_Dl
阅读全文
摘要:APC(Asynchronous Procedure Call,异步过程调用)是在一个特定线程环境下被异步执行的函数,分为用户模式APC和内核模式APC。每个线程都有一个APC队列。在用户模式下,当线程调用SleepEx、WaitForSingleObjectEx等进入"Alterable Wait
阅读全文
摘要:远程线程注入的核心思想是利用windows提供的远程机制,在目标进程中开启一个加载模块的远程线程,使钩子被该远程线程加载到目标地址空间中。 远程线程使用的关键API有WriteProcessMemory、CreateRemoteThread、和LoadLibrary. 原型如下: BOOL WINAPI WriteProcessMemory( _In_ HANDLE hProcess, ...
阅读全文

浙公网安备 33010602011771号