首页
学习
活动
专区
圈层
工具
发布

VC中获取窗体句柄的各种方法

AfxGetMainWnd AfxGetMainWnd获取自身窗体句柄 HWND hWnd = AfxGetMainWnd()->m_hWnd; GetTopWindow 函数功能:...函数原型:HWND GetTopWindow(HWND hWnd); 參数:   hWnd:被查序的父窗体的句柄。假设该參数为NULL,函数返回Z序顶部的窗体句柄。...GetActiveWindow 函数功能:该函数能够获得与调用该方法的线程的消息队列相关的活动窗体的窗体句柄(就是取得当前进程的活动窗体的窗体句柄)。...GetSafeHwnd 函数功能:获取某个窗体对象(CWnd的派生对象)指针的句柄(HWND)时,最安全的方法是使用GetSafeHwnd()函数。...这个原子(一个16bit的值),必须被放置在lpClassName的低位字节中,lpClassName的高位字节置零。

1.7K20

c++获取子类窗口句柄位置_C++中各种获取窗口句柄的方法「建议收藏」

AfxGetMainWnd AfxGetMainWnd获取自身窗口句柄 HWND hWnd = AfxGetMainWnd()->m_hWnd; GetTopWindow 函数功能:该函数检查与特定父窗口相联的子窗口...函数原型:HWND GetTopWindow(HWND hWnd); 参数: hWnd:被查序的父窗口的句柄。如果该参数为NULL,函数返回Z序顶部的窗口句柄。...GetActiveWindow 函数功能:该函数可以获得与调用该方法的线程的消息队列相关的活动窗口的窗口句柄(就是取得当前进程的活动窗口的窗口句柄)。...GetSafeHwnd 函数功能:获取某个窗口对象(CWnd的派生对象)指针的句柄(HWND)时,最安全的方法是使用GetSafeHwnd()函数。...这个原子(一个16bit的值),必须被放置在lpClassName的低位字节中,lpClassName的高位字节置零。

3.2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    从损坏的手机中获取数据

    比如粉碎、射击手机或是直接扔进水里,但取证专家仍然可以找到手机里的证据。 如何获取损坏了的手机中的数据呢? ?...他们还输入了具有多个中间名和格式奇奇怪怪的地址与联系人,以此查看在检索数据时是否会遗漏或丢失部分数据。此外,他们还开着手机GPS,开着车在城里转来转去,获取GPS数据。...要知道,在过去,专家们通常是将芯片轻轻地从板上拔下来并将它们放入芯片读取器中来实现数据获取的,但是金属引脚很细。一旦损坏它们,则获取数据就会变得非常困难甚至失败。 ?...图2:数字取证专家通常可以使用JTAG方法从损坏的手机中提取数据 数据提取 几年前,专家发现,与其将芯片直接从电路板上拉下来,不如像从导线上剥去绝缘层一样,将它们放在车床上,磨掉板的另一面,直到引脚暴露出来...比较结果表明,JTAG和Chip-off均提取了数据而没有对其进行更改,但是某些软件工具比其他工具更擅长理解数据,尤其是那些来自社交媒体应用程序中的数据。

    15.1K10

    Windows黑客编程技术详解 --2.3 病毒木马资源释放技术(内含赠书福利)

    若hModule为NULL,则系统从当前进程的模块中装载资源。 lpName[in] 指定资源名称。 lpType[in] 指定资源类型。 返回值 如果函数运行成功,那么返回值为指定资源信息块的句柄。...若hModule为NULL,则系统从当前进程的模块中装载资源。 hResInfo[in] 资源句柄。此句柄必须由函数FindResource或FindResourceEx来创建。...若hModule为NULL,则系统从当前进程的模块中装载资源。 hResInfo[in] 资源句柄。此句柄必须由函数FindResource或FindResourceEx来创建。...其次,根据上面获取的资源信息块的句柄,利用SizeofResource获取资源的大小之后,再通过LoadResource把资源加载到程序内存中。...要特别注意一点,明确资源所在的模块,如果资源包含在DLL文件中,则可以在DllMain中或是通过GetModuleHandle函数获取DLL模块的句柄。

    1.7K30

    Window黑客编程之资源释放技术

    可将句柄传递给LoadResource函数来获得这些资源。如果失败,返回NULL。 接下来是SizeofResource函数。这个函数的作用是获取指定资源的字节数。...函数原型: DWORD SizeofResource(HMODULE hModule,HRSRC hReslnfo); 参数: hModule:包合资源的可执行文件模块的句柄。...函数原型: HGLOBAL LoadResource(HMODULE hModule,HRSRC hReslnfo); 参数: hModule:处理包合资源的可执行文件的模块句柄。...若hModule为NULL,系统从当前过程中的模块中装载资源。 hReslnfo:将被装载资源的句柄。它必须由函数FindResource或FindResourceEx创建。...首先通过FindResource函数定位程序里的资源,主要根据资源类型,和资源名称定位,获得资源消息块的句柄。 然后根据获得的句柄,再通过SizeofResource函数获取资源的大小。

    1.1K10

    进程模块句柄

    一、注意区别进程模块句柄和进程内核句柄 二、每个可执行文件或者DLL文件被装入到某个进程地址空间后,都会有一个唯一的实例句柄,来表示装入后的可执行文件或者DLL,此时我们把这个可执行文件或者DLL...进程模块句柄的本质就是当前模块的起始地址。 三、如何获取进程模块句柄 a.HMODULE GetModuleHandle( LPCTSTR lpModuleName) 1....如果这个函数的参数是NULL的话,那么这个函数只返回当前进程的模块地址!! 2. 在DLL中,调用GetModuleHandle,返回的不是DLL模块的地址,而是当前进程的模块地址!...获得进程中模块对应的文件名 DWORD GetModuleFileName( HMODULE hInstance...DWORD cchPath);//pszPath指向的内存的大小 b.WinMain函数中的第一个参数hInstance 四、如果代码位于DLL文件中,那么想知道这个

    1.5K30

    VC下提前注入进程的一些方法1——远线程不带参数

    哈哈~        如果想尽量抹掉我们注入的一些痕迹,我们可以把这个逻辑完善些——从被注入进程中卸载远线程载入的DLL。我们要卸载这个DLL,我们就得很耐心的等,等它执行完了。...// 获取加载模块的句柄 HMODULE hLibModule = 0; // LoadLibrary的返回值就是这个句柄,所以GetExitCodeThread...远线程是在被注入进程中执行的,那么远线程Load的DLL文件的文件句柄应该在被注入进程的地址空间中,我们在注入进程中获得它也不能操作啊?...其实这也不是问题,我们在我们进程中不对这个值做什么操作,我们只是获取到它,然后再把它塞回到被注入进程中,让FreeLibrary远线程在被注入进程中去操作它。...HMODULE hLibModule = 0; // LoadLibrary的返回值就是这个句柄,所以GetExitCodeThread

    1K20

    红队 | Windows注入的一些方式

    全局钩子:针对整个系统基于消息的应用。该钩子需要dll文件,在dll中实现对应的钩子函数。...hMod:dll函数模块句柄,DllMain的第一个参数 dwThreadId:hook程序关联的线程的ID。如果为0表示与系统关联的所有进程 如果函数执行成功则返回的是钩子过程的句柄。...句柄必须具有对进程的 PROCESS_VM_WRITE 和 PROCESS_VM_OPERATION 访问权限。 2.lpBaseAddress:指向指定进程中写入数据的基地址的指针。...APC注入的一般几个步骤: •首先通过OpenProcess函数打开目标进程,获取目标进程的句柄。...•最后遍历上面得到的线程ID,调用OpenThread函数打开具有THREAD_ALL_ACCESS访问权限的线程,获取线程句柄。

    1.2K30

    Windows资源

    在进程中找到对应的资源句柄,然后使用LoadResource将资源加载到内存中,以后就可以使用这个资源了。...) { printf("获取资源所在内存失败!...,做好这些工作,该程序就能正常运行 在上面的代码中,依次调用FindResource、 LoadResource、LockResource,获取资源在进程空间中的地址,并将它对应的物理页面锁定在内存中...首先使用BeginUpdateResource建立可执行程序文件模块的更新句柄 2. 使用UpdateResource传入之前的更新句柄,更新资源数据 3....LoadLibrary不仅仅可以用来加载dll,实际上它可以加载任意的PE文件到内存,而GetModuleHandle是在内存中查找已经存在的一个模块的句柄,而我们这个地方这个exe事先并没有加载到内存

    1.1K10

    CC++ 实现常用的线程注入

    HOOK的DLL加载到本身的进程中,以此得到DLL的模块句柄,再使用GetProcAddress()得到DLL中公开的函数地址,最后遍历出待注入进程的线程ID,这样SetWindowHookEx()就可以利用这些参数进行...与下方工程放到同一个目录下,通过LoadLibrary()函数获取到模块句柄,然后通过GetProcAddress()获取到导出函数地址,并通过函数指针调用,由于全局注入依赖于父进程,所以下面的代码必须一直运行...mov @hModule,eax ; -------------------------------------------- ; 循环获取每个导入函数的地址,并放入指针变量保存 lea esi...,[ebx + offset _szMessageBox] ; 循环获取,从该函数起始地址处 lea edi,[ebx + offset _lpMessageBox] .while...TRUE _invoke [ebx + _lpGetProcAddress],@hModule,esi mov [edi],eax ; 获取到函数地址后,放入导入函数字符串中

    85210

    7.7 实现进程内存读写

    moduleEntry; HANDLE handle = NULL; // 获取进程快照中包含在th32ProcessID中指定的进程的所有的模块 handle = CreateToolhelp32Snapshot...接着就是要封装实现GetProcessModuleBase函数,该函数接收两个参数,分别是进程名以及模块名,并返回该模块在指定进程中的句柄。...当有了上述两个模块的支持那么实现进程模块基址的读取将变得非常容易实现,如下是一段读取模块句柄的代码示例,在代码中我们分别读取了Tutorial-i386.exe自身模块基地址,以及该进程内user32....ReadProcessMemory 函数用于从指定进程中读取指定内存地址的数据,写入一个缓冲区中。函数接受的参数包括要读取的进程句柄,要读取的内存地址,要读取的数据大小等。...上述这两个函数都位于ntdll.dll库中,在使用时需要通过LoadLibrary函数获取到该动态链接库的模块句柄,并在该内存中使用GetProcAddress函数动态得到上述两个函数的基地址,有了基址就可以使用函数指针的方式动态的引用内存读写功能

    80350

    7.7 实现进程内存读写

    MODULEENTRY32 moduleEntry; HANDLE handle = NULL; // 获取进程快照中包含在th32ProcessID中指定的进程的所有的模块 handle...,接着就是要封装实现GetProcessModuleBase函数,该函数接收两个参数,分别是进程名以及模块名,并返回该模块在指定进程中的句柄。...当有了上述两个模块的支持那么实现进程模块基址的读取将变得非常容易实现,如下是一段读取模块句柄的代码示例,在代码中我们分别读取了Tutorial-i386.exe自身模块基地址,以及该进程内user32....ReadProcessMemory 函数用于从指定进程中读取指定内存地址的数据,写入一个缓冲区中。函数接受的参数包括要读取的进程句柄,要读取的内存地址,要读取的数据大小等。...上述这两个函数都位于ntdll.dll库中,在使用时需要通过LoadLibrary函数获取到该动态链接库的模块句柄,并在该内存中使用GetProcAddress函数动态得到上述两个函数的基地址,有了基址就可以使用函数指针的方式动态的引用内存读写功能

    58620

    7.7 实现进程内存读写

    MODULEENTRY32 moduleEntry; HANDLE handle = NULL; // 获取进程快照中包含在th32ProcessID中指定的进程的所有的模块 handle...,接着就是要封装实现GetProcessModuleBase函数,该函数接收两个参数,分别是进程名以及模块名,并返回该模块在指定进程中的句柄。...当有了上述两个模块的支持那么实现进程模块基址的读取将变得非常容易实现,如下是一段读取模块句柄的代码示例,在代码中我们分别读取了Tutorial-i386.exe自身模块基地址,以及该进程内user32....ReadProcessMemory 函数用于从指定进程中读取指定内存地址的数据,写入一个缓冲区中。函数接受的参数包括要读取的进程句柄,要读取的内存地址,要读取的数据大小等。...上述这两个函数都位于ntdll.dll库中,在使用时需要通过LoadLibrary函数获取到该动态链接库的模块句柄,并在该内存中使用GetProcAddress函数动态得到上述两个函数的基地址,有了基址就可以使用函数指针的方式动态的引用内存读写功能

    51730

    .NETC# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑

    的句柄(可在 dll 的入口函数中获取);而我们是托管代码 dwThreadId 是线程 Id,传入 0 则为全局所有线程,否则传入特定的线程 Id 需要注意的坑 模块句柄传什么?...本文一开始被注释掉的代码中,我使用 Marshal 直接从托管程序集中获取了模块句柄。 这里需要说明,托管程序集不能注入到其他进程,因此也不可以挂接钩子。...所以更推荐使用前一小节中提供的 LoadLibrary 函数来获取模块句柄,而不是获取当前托管模块的句柄。...解决方法,两/三个: 方法一:使用 LoadLibrary("user32.dll") 获取模块句柄代替 Marshal.GetHINSTANCE 方法二:将获取句柄的模块改为入口程序集(exe),即...因此,要处理特定窗口的消息,只能先拿到此窗口所在的线程。 前面的 P/Invoke 中我也预留了获取窗口所在线程的方法。因此,可以直接使用以下调用来获取 hWnd 句柄窗口所在的线程。

    2.2K20

    Windows安全学习随笔

    ,回调函数加密lsass规避杀软 ---- ​ 随着技术的发展,杀软对lsass等进程句柄的获取有了更加严格的监控,下面我们将使用NtDuplicateObject间接获取进程句柄,避免告警。...使用NtQuerySystemInformation获取所有进程打开的句柄 利用OpenProcess获取具有PROCESS_DUP_HANDLE权限的句柄 使用NtduplicateObject来Copy...获取上述句柄的副本 通过NtQueryObject查询句柄信息,筛选出类型为Process的句柄 通过QueryFullProcessimageName判断进程是否为lsass的句柄 0x002函数、结构原型...Debug权限的操作,我们暂且略过,从第二步如何使用NtQuerySystemInformation获取系统内句柄信息开始演示. ​...,使用OpenProcess打开一个具有PROCESS_DUP_HANDLE、PROCESS_QUERY_LIMITED_INFORMATION权限的进程句柄,为避免杀软检测,我们并不能直接使用系统中存在的这份句柄

    1.2K20

    枚举进程中的模块

    在Windows中枚举进程中的模块主要是其中加载的dll,在VC上主要有2种方式,一种是解析PE文件中导入表,从导入表中获取它将要静态加载的dll,一种是利用查询进程地址空间中的模块,根据模块的句柄来得到对应的...dll,最后再补充一种利用Windows中的NATIVE API获取进程内核空间中的模块,下面根据给出这些方式的具体的代码片段: 解析PE文件来获取其中的dll 在之前介绍PE文件时说过PE文件中中存在一个导入表...解析的类,首先给类中的文件路径赋值,然后加载到内存,并初始化它的数据目录表信息,从表中取出导入表的结构,根据结构中的Name字段的值来计算它的真实地址,即可解析出它里面的模块,这里我们只能解析出PE文件中自身保存的信息...解析进程地址空间中的模块 这个方法首先通过OpenProcess函数获取对应进程的句柄,然后调用EnumProcessModules枚举进程地址空间中当前存在的模块,这个函数会返回一个HMODULE句柄的数组...,我们遍历这个数组,对其中的每个句柄调用GetModuleFileNameEx(很多模块GetModuleFileName获取不到,具体原因我没有深入研究)获取对应的文件路径。

    2K20

    病毒写法,资源的释放.

    一丶简介 1.资源简介 为什么说是病毒写法资源释放.其实技术是把双刃剑.可以做好事也可以做坏事.我们知道.程序的本质就是二进制.所以在VS中我们可以添加二进制数据并且释放出来.释放的资源可以是你自定义的...查找资源 HRSRC FindResourceA( HMODULE hModule, //你要获取的资源模块,如果是当前程序可以填写NULL.如果你要获取某个DLL的...进行解析 LPCSTR lpType //资源的类型.这个是你自定义的资源类型 ); 获取资源大小 DWORD WINAPI SizeofResource(..._In_opt_ HMODULE hModule, //模块名 _In_ HRSRC hResInfo //FindResource返回的句柄 ); 加载资源,寻找到资源就要加载资源...返回的句柄 ); 锁定资源,加载后的资源会进行坐定.并且返回这个资源的首地址.

    1.2K30
    领券