草庐IT

windows - OllyDbg 中的地址在程序重新加载时发生变化

这是我的第一篇文章,我是汇编和调试的新手,所以请多多包涵。我试图将一些代码(对MessageBoxA的一点调用)注入(inject)到Windows7记事本可执行文件中。但是,我遇到了地址问题。首先,我在OllyDbg中打开exe,然后找到包含“notepad.pdb”的ASCII文本的行。然后我在下面放了一个ASCII字符串(例如,“INJECTEDNOTEPAD”)。接下来,在其下方,我输入了这个asm代码:​​PUSH0PUSHaddress_of_ASCII_string;Inthiscase,00A6B668CPUSHaddress_of_ASCII_string;Inthi

windows - 当应用程序崩溃时打开句柄会发生什么? (从 Windows XP 开始)

我的印象是,如果一个应用程序有一个打开的句柄并且它崩溃了,句柄不会被释放,如果您尝试访问该句柄(比方说一个文件),那么您将收到错误。但是,我已经在WindowsXP及更高版本中尝试过此操作,如果我从任务管理器中关闭exe,则句柄似乎会在它关闭句柄之前释放。以下是代码:PrivateSubForm_Load()DimiFileAsIntegeriFile=FreeFileOpen"myfilelock"ForOutputLockReadWriteAs#iFileMsgBox"Abouttoclose"'closeitherewithtaskmanagerClose#iFileEndSub

windows - 如何检测窗口内容何时发生变化

我需要编写截屏视频,并且需要检测窗口内容何时发生变化,即使只选择了文本。这个窗口是第三方控件。 最佳答案 有几种方法。(1)屏幕轮询。可以轮询屏幕(即创建一个DIB,每个时间段从屏幕到BitBlt),然后按原样发送优点:实现起来非常简单缺点:高CPU负载。每秒轮询整个屏幕的次数非常繁重(应该传输大量数据)。因此它会又重又慢。高网络带宽(2)与上面相同,除了现在您对轮询屏幕进行一些分析以查看差异。然后您可以只发送差异(如果没有更改,显然不发送任何内容),另外您可以选择压缩差异流。优点:实现起来还不算太复杂显着降低网络带宽缺点:CPU使

windows - 在 Windows 上使用 Telnet 需要很长时间。这种情况经常发生吗?

我试图在WindowsXP上通过Telnet访问某些网站,每当我在端口上打开一个网站或我的127.0.0.180它回显connectingto127.0.0.1...或我输入的任何其他目标。很长一段时间后,连接超时,我什么都没有了。我的浏览器工作正常。有什么问题吗? 最佳答案 如果在connecting...字符串后键入GET/会发生什么?可能是您已连接但您的telnet客户端没有告诉您,网络服务器正在等待您做某事。 关于windows-在Windows上使用Telnet需要很长时间。这

windows - 如果线程在临界区内死亡,会发生什么?

场景是这样的。我们有很多线程访问受临界区保护的一段代码,这确保一次只有一个线程可以访问该部分。现在的问题是,如果一个线程死在临界区内会发生什么?应用程序会挂起吗?或者有什么方法可以释放锁? 最佳答案 来自MSDN:Ifathreadterminateswhileithasownershipofacriticalsection,thestateofthecriticalsectionisundefined.来源:http://msdn.microsoft.com/en-us/library/windows/desktop/ms6826

windows - 一旦进程结束,进程句柄会发生什么?

如果我有一些已停止(终止或刚刚结束)的Windows进程的句柄:句柄(或者更好的是它背后的内存)是否会被另一个进程重新使用?或者从现在开始,GetExitCodeProcess()等方法会永远得到正确的结果吗?如果1.为真:GetExitCodeProcess()工作“多长时间”?如果2.为真:这是否意味着我可以通过启动/终止新进程来关闭操作系统,因为我创建了越来越多的句柄(并且操作系统为它们保留了内存)?我对句柄的概念有点困惑。提前致谢! 最佳答案 句柄间接指向一个内核对象。只要有打开的句柄,该对象就会保持事件状态。Willthe

windows - 当文件进入回收站时,权限会发生什么变化?

我有一个与服务应用程序完成的文件管理相关的问题。我的问题是用户能够将文件移动到我为其创建硬链接(hardlink)的回收站,一旦他们这样做,我就失去了列出可用硬链接(hardlink)的能力。这似乎只有当删除的硬链接(hardlink)文件位于$RECYCLER文件夹中而不是位于同一磁盘上具有类似权限的文件夹中时才会发生。要重现我的问题,假设有一个名为Service的用户帐户和一个合适的密码。在当前用户帐户上:mdC:\tmpechoCONTENTS>C:\tmp\1fsutilhardlinkcreateC:\tmp\2C:\tmp\1这会创建一个名为C:\tmp\1的文件和一个名为

.net - 'assembly purgatory' 发生了什么?

当一个.NET程序集被部署到GAC并且目标文件被锁定时,Windows将它保存在我最能猜测是某种“程序集炼狱”的地方-c:\windows\assembly\temp.使用ProcessExplorer在搜索可疑DLL时可以很容易地看到这些:(来源:alexangas.com)一旦我结束进程锁定文件(在本例中为OWSTIMER.EXE),它就会神奇地正确部署到GAC。我很好奇Windows在这里实际做了什么。它如何知道文件锁何时被释放?它在哪里保存锁定文件的记录?它会放弃吗? 最佳答案 Temp和tmp是GAC程序集安装和卸载期间使

windows - 当程序被命令行中的 Edit>Mark 暂停时,究竟发生了什么?

在Windows中从命令行运行程序时,如果进入标记模式,则程序输出会暂停,让您有足够的时间复制所需的内容,然后继续执行程序。我一直认为这只是暂停了输出流,而程序仍然继续运行。但是,我发现它似乎也“暂停”了程序(或者至少阻止它通过套接字进行通信)。我的问题是:这种“暂停”实际上意味着什么?哪些线程被挂起?子进程是否已暂停(我猜不是)?例如,如果运行Java代码,是整个JVM挂起,还是只挂起主线程?Windows实际上是如何处理这个问题的?如果这个问题可能有点开放性,我深表歉意,但在打开QuickEdit模式的情况下,我想知道关键程序有什么风险!提前致谢 最佳答

windows - 为什么可移植的可执行文件在清理和重建后会发生变化(忽略时间戳)

我花了一些时间比较清理和重建前后可执行文件的十六进制差异,似乎有些部分总是会发生变化,无论如何。我知道.NET会注入(inject)一些元数据,并且编译器会插入时间戳。我们的内部散列工具会忽略这些更改,但在可执行文件的其他部分会失败。我不认为那些不断改变我们代码的部分。 最佳答案 您在评论中指出的16个不同字节是一个UUID。GUID的第7和第8个字节中有一些“变体”和“版本”位,可用于识别它们(seeRFC4122)。 关于windows-为什么可移植的可执行文件在清理和重建后会发生变