我将如何进行导出地址表(EAT)Hook?我能够进行IAT(导入地址表)Hook。有人能给我举个例子吗?谢谢! 最佳答案 EATHook遵循与IATHook非常相似的方法,主要区别在于您查看的位置发生了变化,请查看Win32PEformat的PE文件导出部分。.可以找到一个非常简单的(虽然是C语言)示例here,如果确实需要以汇编形式编译和反汇编即可。 关于windows-C++如何导出地址表Hook(EAT)?,我们在StackOverflow上找到一个类似的问题:
我需要一种方法来为我的C++应用程序安装firefox和chrome扩展。如何做到这一点以及如何避免通过浏览器(firefox和chrome)安装它? 最佳答案 Chrome:http://code.google.com/chrome/extensions/external_extensions.html火狐:https://developer.mozilla.org/en/Extension_Packaging请注意,您无需关闭浏览器即可安装扩展程序。下次启动浏览器时将找到该扩展程序。
好吧,我想使用默认的InternetExplorer连接代理设置在C++中的cURL中发出请求,这是我的示例代码:CURL*curl;CURLcoderesult;curl=curl_easy_init();charerrorBuffer[CURL_ERROR_SIZE];if(curl){//Nowsetupallofthecurloptionscurl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errorBuffer);curl_easy_setopt(curl,CURLOPT_URL,url);curl_easy_setopt(curl,CURLO
我正在尝试将SNMP代理集成到用nativeC++编写的Windows应用程序中。要使此代理成为WindowsSNMP代理的子代理,必须编写一个DLL来导出某些由WindowsSNMP服务调用的例程。到目前为止一切正常。现在这个DLL需要从应用程序中获取实际信息。我的第一个想法是让应用程序和DLL使用双方都可以访问的共享内存块,但这会使信息总是略显陈旧,最好在SNMP请求进入时运行一些代码来获取最新值。双方将读写信息。该应用程序已经有一个基于TCP的控制台接口(interface),但是对于来自SNMP客户端的非常频繁的请求,连接、查询、断开连接可能有点繁重。让DLL直接与应用程序通信
我们有一款软件可以在多种不同的显卡上运行,包括ATI和NVIDIA。我需要能够在安装驱动程序之前确定显卡的设备ID或型号名称,以便我可以创建一个硬盘驱动器镜像,它可以使用我们支持的任何显卡启动,有它第一次启动时检测显卡,安装驱动程序然后重新启动。目标平台为WinXP。我尝试使用WMI,但它只能检索有关显示适配器的信息,其中不包括设备ID,并且在安装驱动程序之前,显示适配器将只有通用数据,例如“视频Controller(VGA)”名称等。EnumDisplayDevices在安装驱动程序之前无法检测到设备。这一定是可能的,因为当新硬件向导打开时它知道显卡的名称,但我就是找不到这样做的方法
我有一个程序,它加载库test.dll,这个库使用ws2_32.dll来创建套接字和发送/接收数据包。我可以将我的C++库注入(inject)到这个过程中,但不知道如何拦截函数“套接字”、“接受”等函数的test.dll调用。有人可以帮我解决这个问题吗?谢谢! 最佳答案 你需要Hook接受函数。您可以使用库来做到这一点,例如MSDetours(早期版本是免费的,你可以使用1.5版,只需谷歌一下)。打电话DWORDa=DetourFindFunction("Ws2_32.dll","accept")它将为您提供指向接受函数的指针。然后
在工作中我遇到了我们产品的一个奇怪的行为,发现可以归结为WindowsAPIRegOpenKeyEx的奇怪行为。下面是我的测试代码:#include#include#includeintmain(intargc,char*argv[]){HKEYhk;LONGlreturn=RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("Software\\MercuryInteractive\\LoadRunner\\Vugen\\Logger\\media"),0,KEY_READ,&hk);if(lreturn==ERROR_SUCCESS){printf("YES!
我需要知道我的进程有多少实例在本地Windows系统上运行。我需要能够使用C++/MFC/WinAPI来完成它。那么,执行此操作的可靠方法是什么?我正在考虑为此使用进程ID,将其作为列表存储在共享内存数组中,进程可以访问该数组。但问题是,当一个进程关闭或崩溃时,它的进程ID多久会被重用? 最佳答案 进程和线程标识符可以在所有句柄关闭后的任何时间被重用。参见WhendoesaprocessIDbecomeavailableforreuse?有关这方面的更多信息。但是,如果您要存储一对{identifier,processstartti
我正在编写我自己的WindowsLoader版本(尽管是一个非常简单的版本),到目前为止一切顺利。但是,在递归遍历已加载模块的导入表时,我遇到了一些小问题。对于大多数依赖项,一切都很顺利,我可以简单地递归加载模块。但是,对于某些依赖项,这只会破坏目标进程。经过进一步调查,我意识到这是因为Windows并行程序集。本质上,加载的PE中的依赖项是目标进程中使用的模块的不同SxS版本。在一种情况下,我正在加载的DLL引用了msvcr90.dll,但目标进程使用的是运行时的早期版本:msvcr71.dll。现在,windows加载程序可以很好地处理这个问题,所以显然有一种“正确”的方法可以做到
我想知道是否有任何方法可以找到当前进程正在运行的实际物理处理器/插槽号,或者提供逻辑处理器号的相同映射。我有一个8插槽系统,总共有128(0-127)个逻辑处理器。从我在msdn中读到的内容来看,它们将分为2个处理器组,每个处理器组有64个逻辑处理器。http://msdn.microsoft.com/en-us/library/dd405503我试过查看cpuid和GetNumaProcessorNodeEx从cpuid,APICid帮助识别逻辑处理器ID,从GetNumaProcessorNodeEx,我得到numa节点(我发现如果有64个或更少数量的逻辑处理器,这很有用)如果逻辑