我正在为我的网络制作一个安全程序。其中一个实例是检查和监控调用了哪些api和库。执行此操作的dll和与之配套的程序已经完成。但是有一个问题我似乎无法解决。当尝试使用NtCreateThreadEx将我的dll注入(inject)系统进程(例如explorer.exe,我的主要测试系统进程)时,我得到了返回值:C0000022,这意味着:Status_Access_Denied(返回NTSTATUS,但DWORD可以)我不知道该怎么做,我以管理员身份运行,我提升了我的权限,并使用了正确的功能,但我仍然得到c0000022这是我用来注入(inject)的代码#include"main.h"
我有一个程序(不是我的,没有源代码),它公开了一个接口(interface),因此我可以编写一个DLL,它将被我的程序调用。现在我想知道当我在我创建的这个DLL中声明一些变量时,它将存储在什么内存空间中?我的意思是,它只会位于EXE地址空间的内存空间中,对吗?但是,关于EXE的DLL是如何加载的?我认为一个DLL只在内存中加载过一次,那么这与我在我的DLL中创建局部变量有什么关系呢?(如对象、类等) 最佳答案 DLL每个进程加载一次。曾几何时,DLL在进程之间共享,但自从Windows3.1走上渡渡鸟之路以来,情况就不同了。您在DL
我已经编写了一个DLL来帮助我调试我的应用程序。我正在运行64位版本的windows7。这是我观察到的:(1)如果我设置HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\WindowsNT\CurrentVersion\Windows\AppInit_DLLs并运行我的应用程序的32位版本,DLL被加载并且一切正常。(2)如果我设置HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Windows\AppInit_DLLs并运行我的应用程序的64位版本,应用程序启
我有一个连接到Oracle数据库的perl脚本,打开一个文本文件并从数据库表中的文件加载数据,该脚本在我的开发机器(windowsxp32位)上运行完美,但是当我加载脚本到生产服务器(Windows200364位)并从命令行运行它,它会打开一个perl.exe-无法定位组件窗口,消息说ThisapplicationhasfailedtostartbecauseOCI.dllwasnotfound.Re-installingtheapplicationmayfixthisproblem.命令行输出为:install_driver(Oracle)failed:Can'tload'C:/Pe
有没有什么工具可以在一些c++dll中记录API,然后回放。在我们的客户站点,我们有一台机器,上面装有一些供应商软件,可以公开其功能。我们想录制该dll,然后在办公室模仿它。知道我们如何做到这一点吗?感谢您的帮助。 最佳答案 您可以从Detours开始或其开源等效项EasyHook.您的Hook函数可以记录事件,然后回到办公室您可以编写一个替代DLL来重播该事件。 关于c++-记录dllAPI然后模仿它,我们在StackOverflow上找到一个类似的问题:
我正在尝试从加载我的DLL的进程中获取消息。我试过:SetWindowsHookEx(WH_CALLWNDPROC,(HOOKPROC)WndProc,hInstance,0);这给了我关于“程序X无法启动,因为系统中缺少Y.dll”的错误弹出窗口。这就是我在标题中加上“安全”的原因。我也试过:SetWindowsHookEx(WH_CALLWNDPROC,(HOOKPROC)WndProc,hInstance,threadId);threadId是我的DLLMain中GetCurrentThreadId()的结果。这个有效,但我没有收到任何窗口消息(只有一堆512和1025)。
我想知道是否有人可以推荐JGit之类的库,但它是用C/C++编写的。本质上我们需要的是dll文件,我们可以将其与我们的应用程序捆绑在一起以初始化repo并每天从repo中提取数据。 最佳答案 我用了3秒的谷歌搜索才得出:libgit2. 关于c++-作为DLL的GITC/C++库,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8038135/
我在Windows7上并通过XAMPP设置mysql。我现在开始一个新的Rails项目(我第一次在Rails中开发),并且刚刚设置了这个项目。我想启动服务器,所以我使用了railsserver。然而它提示说"Theprogramcan'tstartbecauseLIBMYSQL.dllismissingfromyourcomputer"我知道libmysql.dll的存储位置,那么我该如何告诉Rails去那里查找呢? 最佳答案 Libmysql.dll文件位于mysql安装的bin目录中。Ruby\bin目录中还需要有它的副本。将它
我正在编写一个DLL,它可以在服务的上下文中运行,并且可以加载到标准的win32进程中。如何检测它是在服务上下文中运行还是在标准win32进程上下文中运行? 最佳答案 根据Session0Isolation,在Vista中引入,Windows服务在session0中运行。要确定进程是否在session0中执行,您可以使用ProcessIdToSessionId功能:DWORDsession_id;if(ProcessIdToSessionId(GetCurrentProcessId(),&session_id)){std::cout
如何将参数传递给我的luadll函数?我做了一个简单的luadll函数:staticintfunctionName(lua_State*L,intarg1,chararg2[]){printf("runningmydll:\n");printf("passingnumber:%dpassingstring=%s",arg1,arg2);return0;}并在lua中使用它来运行函数:require"myTestDll";myTestDll.functionName(1231544,"HelloWorld,I'mrunningmyDLL.");但结果是它打印了错误的数字,甚至没有接近正确