在Windows中,假设我使用DLL注入(inject)进入另一个进程。我还对我注入(inject)的进程的内存进行了一些截屏,并知道我想要提取的数据的位置。假设在0xaaaaaaaa处的另一个进程中有包含特定值的数据。我如何从那个过程中获取这个值,以便我可以在我的注入(inject)应用程序中使用它?既然我被注入(inject)到进程中,我可以只使用像memcpy这样的东西吗?memcpy(value,0xaaaaaaaa,10);我假设它可能比这更复杂?编辑:对于下面的回复,我看不出WM_COPYDATA对我有何帮助,因为它用于将数据发送到另一个应用程序,而不是用于从现有应用程序检
操作系统:Windows。语言:C我有一个线程通过TCP向服务器发送请求并在信号量上无限等待响应。还有另一个线程读取套接字,将接收到的数据复制到一个公共(public)缓冲区中,并使信号量发出脉冲以结束等待。这一切都很好。但在进程由于某种原因被终止的情况下,等待信号量的线程会一直等待,而其他线程将终止。为什么当进程被杀死时线程等待信号量没有结束?我在Linux论坛上读到有SEM_UNDO可以帮助解决这种情况。Windows上有类似的东西吗?任何解决方法? 最佳答案 Semaphoresdonothaveowners.如果您等待信号量
我正试图在操作系统级别深入了解Windows内存管理的内部机制。难道在分配内存时,总是在幕后触发页面错误吗?这是否意味着停止软页面错误的唯一方法是停止在进程内分配新内存?定义我将“内存分配”定义为任何形式的malloc,即new、LocalAlloc、VirtualAlloc、HeapAlloc等。我将“页面错误”定义为将内存从操作系统池映射到进程工作集的过程,该操作在高端Xeon上持续花费250us。 最佳答案 你需要非常清楚这里发生的不同事情。该进程有两个独立的部分,提交内存和将内存分页到进程中。这些都与调用malloc、Hea
我想“监听”其他一些应用程序并决定在它终止时做什么。如何?编辑:这两个程序在同一台计算机上运行,我想知道何时关闭另一个程序。然后在另一个程序中执行操作。我无法修改其他程序代码。我可能会也可能不会从应用程序A启动应用程序B。我可以通过其到exe的完整路径来识别应用程序B。 最佳答案 正如Abyx所写,WaitForSingleObject(或者可能是WaitForMulipleObjects)是您需要的API函数。创建事件启动一个(工作)线程将事件句柄传递给线程->HANDLE1获取要监视的进程的句柄。参见HowcanIgetap
想知道“ProcessExplorer”或“ComboFix”等应用程序如何检测隐藏进程???我假设这必须用C或C++完成。即使在.NET中也很容易访问进程列表,但这并不总是准确的,我知道根工具包可以从任务管理器中隐藏自己。是通过内存访问和IO吗?好奇是否有人知道这是如何实现的。 最佳答案 这个问题无法回答。这取决于该过程最初是如何隐藏的。例如,有人可以通过向HookEnumProcesses、Process32Next等的所有进程以及与进程枚举相关的所有其他API注入(inject)用户模式DLL来隐藏进程。这将被跳过钩子(H
我有以下问题:我有一个用C++编写的应用程序(永不结束的服务器)作为服务运行,在主线程中还包含3个线程(主要执行IO)。在主循环中,我捕获了所有可能的异常。进程终止,主循环或线程本身没有打印任何内容。我在事件日志中看到进程以代码1000停止。Windows是否像在unix中一样创建核心文件?如果我从事件日志中得到一个内存地址,是否有任何方法可以知道它发生在应用程序的哪个部分?也许这是一个线索:在它发生的同时我启动了另一个应用程序(不同类型)。 最佳答案 尝试将windbg设置为事后调试器。安装windbg从命令行执行“windbg-
有SetThreadToken()函数,但没有“SetProcessToken()”这样的函数。有没有办法为另一个进程设置token?“SetProcessToken()”怎么写? 最佳答案 是的,你可以,使用未记录的NtSetInformationProcess函数,但是一旦进程开始运行,进程token就被锁定并且不能再被修改。因此,您必须使用CREATE_SUSPENDED创建标志启动进程,设置进程token,然后使用ResumeThread()恢复进程。为了设置进程token,调用者必须拥有并启用SeAssignPrimary
我有一个函数指针(void*),我想知道这个函数属于哪个进程。我不知道该怎么做,但我认为可以通过使用某种形式的VirtualQuery技巧来实现。任何帮助将不胜感激。提前致谢澄清:“属于进程”是指函数所在的进程。例如:假设内存中加载了一个可执行文件(test.exe)。该可执行文件包含一个名为SayHello的函数,它位于内存中的0xDEADBEEF处。在一个完全不同的过程中,我怎么知道0xDEADBEEF在test.exe的内存空间中。希望事情已经解决了。澄清2:我相信您熟悉“VTableHook”,其中外部模块在单独的进程中更改VTable指针以指向不同的函数。因此,无论何时调用H
我正在尝试运行可执行文件并使用subprocess.Popen捕获其输出;但是,我似乎并没有得到所有的输出。importsubprocessassfromsubprocessimportPopenimportosps=Popen(r'C:\Tools\Dvb_pid_3_0.exe',stdin=s.PIPE,stdout=s.PIPE)print'pOpendone..'while:line=ps.stdout.readline()printline手动打开时比原来的exe文件少打印两行。我尝试了另一种方法,结果相同:f=open('myprogram_output.txt','w'
我正在寻找一种编写应用程序的方法。我使用VisualC++6.0。我需要阻止用户通过任务管理器关闭此进程。 最佳答案 你做不到。 关于c++-如何为Windows编写一个无法杀死的进程?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/992671/