
Windows
lk_HIT
这个作者很懒,什么都没留下…
展开
-
虚拟内存分析
本篇文章主要目的是对进程的用户地址空间进行一个分析。 先来了解一些概念: 区域,块,页面。 用户地址空间划分为不同的区域,然后区域划分为不同的块,块由页面组成。(如果区域是MEM_FREE,则不存在块的概念) 区域中的块是该区域内连续的页面,并且具有相同的保护属性以及以相同类型的物理存储器作为后备存储器。 分析用户地址空间区域,主要要用到VirtualQueryEx函数,该函数声明如下: DWORD VirtualQueryEx ( HANDLE hProcess, LPCVOID pv.原创 2021-03-14 18:43:38 · 663 阅读 · 0 评论 -
C++统计程序运行时间的类
这个类统计代码真正运行的时间,如果代码运行过程中cpu被剥夺了,那么被剥夺的那段时间是不计算在内的。 class CStopwatch { public: CStopwatch() { Start(); } __int64 Now() const { LARGE_INTEGER liPerNow; QueryPerformanceCounter(&liPerNo...原创 2020-02-29 19:42:01 · 706 阅读 · 0 评论 -
远程线程注入DLL-读取指定进程中的模块
步骤: (1)用VirtualAllocEx函数在远程进程的地址空间中分配一块内存 (2)用WriteProcessMemory把函数DLL的路径名字复制到第一步分配的内存中 (3)用GetProcAddress函数来得到LoadLibraryW或LoadLibraryA函数在Kernel32.dll中的实际地址 解释下为什么可以这么做: *为什么可以直接用GetProcAddress获...原创 2020-02-08 12:56:24 · 1285 阅读 · 0 评论 -
在CUI程序中调用GetMessage可以正常使用吗?
可以,调用GetMessage之后该线程转换为GUI线程,有自己的消息队列。 创建一个子线程,然后通过各自的消息队列来实现线程之间消息的传递。 #include "framework.h" #include <string> #include <iostream> #define MSG_USER_OK 1234 #define MSG_USER_EXIT ...原创 2020-02-07 09:36:36 · 280 阅读 · 0 评论 -
windows挂钩注入DLL---获取桌面上所有图标名称及位置
(1)HHOOK是全局唯一的,可以跨进程使用 (2)当创建钩子指定的函数第一次执行的时候,会创建一个线程 (3)当一个线程调用GetMessage的时候会转换为GUI线程,会有一个对应的消息队列,可以通过这个消息队列来传递我们的指令 (4)往某一个指定线程发送消息用PostThreadMessage (5)当卸载钩子的时候,要确保我们在钩子函数中创建的消息退出,因为卸载钩子会导致DLL卸载...原创 2020-02-06 21:18:33 · 607 阅读 · 3 评论