通常我在我的C++代码中插入一个assert(0);,启动Windbg,按F5,输入k然后我得到一个堆栈跟踪。然后我必须通过鼠标复制粘贴它并退出。但我想将其自动化。有什么方法可以检索堆栈跟踪并将其写入文本文件而无需手动使用GUI? 最佳答案 首先,您可以像这样使用.logopen将gui的输出写入文本文件.logopenc:\dump\myLog.txt这会将所有内容转储到此位置,调用.logclose以在一行中关闭日志:.logopenc:\dump\myLog.txt;k;.logclose其次,如果你真的不想使用gui,还有命
我想用汇编语言创建一个延迟几秒钟的小程序。我使用的是WindowsXPSP3,打开DOS窗口,然后运行debug.exe我在那里输入了这个简短的汇编程序:MOVCX,3DMOVDX,0900MOVAH,86INT15中断15h中的功能86h,执行延迟,延迟的持续时间以CX、DX为单位,以微秒为单位。所以如果我想延迟4秒,那么它是4,000,000microseconds=3D0900h,这就是我在CX,DX中输入的内容。运行这个短程序,不幸的是没有执行任何延迟,它立即退出。然后我尝试了另一个中断函数:函数号0,在中断1Ah中,将PC的时钟计数返回到CX,DX。每个刻度为1/18.2
我学习了汇编语言编码。现在我想通过在WindowsXP命令提示符下运行来检查它。我已经输入调试命令并成功编写了汇编语言代码。我遇到的问题是如何执行我在上面写的命令?任何key、语句或其他?在这种情况下请帮助我。我星期天有考试。问候。 最佳答案 我想展示如何重定向一些汇编助记符和调试命令,以便在批处理文件和一些管道(>必须将以下示例复制并粘贴到新的文本文件中。文本文件必须重命名为“bat”文件扩展名:示例:“Hello.bat”@echooffechoacs:100>tmp.debechomovdx,108>>tmp.debech
假设GetDC(hWnd)作为WM_CREATE上的第一条指令被调用,对于窗口hWnd,GetDC()是否可能返回NULL?我担心GetDC()可能因资源不足而失败。当发生这种情况时,我应该检查错误吗?调用失败怎么办?Win32API函数会引发异常还是我应该引发异常? 最佳答案 GetDC()确实会失败,无论您何时何地调用它。在处理API时,您应该采取相当悲观的观点,并为任何API函数失败做好准备。正如您所建议的,失败的一个可能原因是系统资源耗尽,例如内核句柄、GDI对象等。所以你应该经常检查错误。不仅是GetDC(),对API函数
我打算制作一个时钟。一个实际的时钟,不适用于Windows。但是,我希望现在能够编写大部分代码。我将使用PIC16F628A来驱动时钟,它有一个我可以访问的定时器(实际上,除了它内置的时钟之外,它还有3个)。然而,Windows似乎没有这个功能。这使得制作时钟有点困难,因为我需要知道它已经过了多长时间才能更新当前时间。所以我需要知道如何在Windows中获得脉冲(1Hz、1KHz,只要我知道它有多快就无所谓了)。 最佳答案 Windows中有许多可用的计时器对象。可能最容易用于您的目的的是多媒体计时器,但它已被弃用。它仍然可以工作,
如何用汇编语言为WindowsCE(x86)编写程序?现在我正在使用VS2008winthWindowsCE5.0SDK,我的C++程序运行良好。我尝试用我的代码创建一个asm文件并将其包含到项目中:#include"stdafx.h"#include"windows.h"extern"C"voidclear();int_tmain(intargc,_TCHAR*argv[]){clear();return0;}清除.asm:.586;Targetprocessor.UseinstructionsforPentiumclassmachines.MODELFLAT,C;Usethefla
这是我遵循的步骤。1)我从KipIrvine的《x86处理器的汇编语言》一书中获取了三个不同小程序的汇编语言代码。2)我组装、链接以生成有效的可执行文件,在每种情况下都没有错误。3)对于每个可执行文件,我使用NASM生成反汇编ndisasm-u-pinteladd3.exe>add3_ndisasm.txt4)在每种情况下,我都使用dumpbin.exe获得了反汇编输出dumpbin/disasmadd3.exe>add3_dumpbin_disasm.txt令人惊讶的是,我在第4步得到的反汇编与第3步完全不同。这是我使用的汇编代码(在3种情况之一中)。;Thisprogramadds
我需要检查包含在共享库中的方法,该库被Windows窗体应用程序和Windows服务引用。当我们在控制台模式下进行检查时,我必须允许潜在的对话。如果是Windows服务,我将改为在事件日志中写入消息。我找到了很多使用编译指令来做到这一点的方法。是否有其他更优雅的方法?谢谢 最佳答案 可以查看Environment.UserInteractive如果您的应用程序作为Windows服务运行,该属性将返回false。 关于c#-是否可以在不使用编译指令的情况下检测主应用程序线程是否作为Wind
我正在尝试了解https://github.com/nemesisqp/al-khaser/blob/0f74c40dde8ba060807e031271f81457a187fa08/DebuggerDetection.cpp#L603中的一些反调试器功能会__asm{moveax,fs:[30h]moval,[eax+2h]movIsDbg,al}功能相同__asmmovIsDbg,[fs:[0x30]+0x2]如果不是,为什么不呢?此外,如何将其转换为纯C/C++?如何获取线程信息(特别是fs:[30h])?会BOOLInt2DCheck(){//TheInt2DCheckfunc
我做了一些shellcode执行的实验,我在其中编写了自己的shellcode,将其写入我希望它执行的目标程序的内存中,然后使用新线程或线程劫持来执行它。这很好用,但是手动编写shellcode相当耗时,因此我正在寻找一种能够用C或C++编写函数的方法,该函数在编译后将完全独立。这意味着任何编译后的函数都应该可以独立执行。这样我就可以直接将它写入我的目标程序中,例如使用WriteProcessMemory准备执行。因此,推送shellcode将使用如下代码完成:#include#includeusingnamespacestd;BOOLMakeABeep(){returnBeep(0x