草庐IT

汇编指令

全部标签

windows - 如何在不使用 GUI 的情况下在 windbg 中的暂停指令后获取堆栈跟踪?

通常我在我的C++代码中插入一个assert(0);,启动Windbg,按F5,输入k然后我得到一个堆栈跟踪。然后我必须通过鼠标复制粘贴它并退出。但我想将其自动化。有什么方法可以检索堆栈跟踪并将其写入文本文件而无需手动使用GUI? 最佳答案 首先,您可以像这样使用.logopen将gui的输出写入文本文件.logopenc:\dump\myLog.txt这会将所有内容转储到此位置,调用.logclose以在一行中关闭日志:.logopenc:\dump\myLog.txt;k;.logclose其次,如果你真的不想使用gui,还有命

windows - 与时间相关的中断在 Windows 中的汇编程序中不起作用?

我想用汇编语言创建一个延迟几秒钟的小程序。我使用的是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

windows - 如何在 CMD Windows XP 中执行汇编语言代码?

我学习了汇编语言编码。现在我想通过在WindowsXP命令提示符下运行来检查它。我已经输入调试命令并成功编​​写了汇编语言代码。我遇到的问题是如何执行我在上面写的命令?任何key、语句或其他?在这种情况下请帮助我。我星期天有考试。问候。 最佳答案 我想展示如何重定向一些汇编助记符和调试命令,以便在批处理文件和一些管道(>必须将以下示例复制并粘贴到新的文本文件中。文本文件必须重命名为“bat”文件扩展名:示例:“Hello.bat”@echooffechoacs:100>tmp.debechomovdx,108>>tmp.debech

windows - 假设 GetDC(hWnd) 作为 WM_CREATE 上的第一条指令被调用,对于窗口 hWnd,GetDC() 是否有可能返回 NULL?

假设GetDC(hWnd)作为WM_CREATE上的第一条指令被调用,对于窗口hWnd,GetDC()是否可能返回NULL?我担心GetDC()可能因资源不足而失败。当发生这种情况时,我应该检查错误吗?调用失败怎么办?Win32API函数会引发异常还是我应该引发异常? 最佳答案 GetDC()确实会失败,无论您何时何地调用它。在处理API时,您应该采取相当悲观的观点,并为任何API函数失败做好准备。正如您所建议的,失败的一个可能原因是系统资源耗尽,例如内核句柄、GDI对象等。所以你应该经常检查错误。不仅是GetDC(),对API函数

windows - 我怎样才能在 win32 汇编程序(特别是 nasm)中获得脉冲?

我打算制作一个时钟。一个实际的时钟,不适用于Windows。但是,我希望现在能够编写大部分代码。我将使用PIC16F628A来驱动时钟,它有一个我可以访问的定时器(实际上,除了它内置的时钟之外,它还有3个)。然而,Windows似乎没有这个功能。这使得制作时钟有点困难,因为我需要知道它已经过了多长时间才能更新当前时间。所以我需要知道如何在Windows中获得脉冲(1Hz、1KHz,只要我知道它有多快就无所谓了)。 最佳答案 Windows中有许多可用的计时器对象。可能最容易用于您的目的的是多媒体计时器,但它已被弃用。它仍然可以工作,

windows - Windows CE 的汇编语言

如何用汇编语言为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

windows - 为什么 NASM 和 dumpbin.exe 对同一个可执行文件的反汇编输出不同?

这是我遵循的步骤。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

c# - 是否可以在不使用编译指令的情况下检测主应用程序线程是否作为 Windows 服务运行?

我需要检查包含在共享库中的方法,该库被Windows窗体应用程序和Windows服务引用。当我们在控制台模式下进行检查时,我必须允许潜在的对话。如果是Windows服务,我将改为在事件日志中写入消息。我找到了很多使用编译指令来做到这一点的方法。是否有其他更优雅的方法?谢谢 最佳答案 可以查看Environment.UserInteractive如果您的应用程序作为Windows服务运行,该属性将返回false。 关于c#-是否可以在不使用编译指令的情况下检测主应用程序线程是否作为Wind

c++ - 了解 C/C++ 中 Windows/MSVC 的一些反调试内联汇编

我正在尝试了解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

c++ - 通过从 C/C++ 调用 Windows API 函数生成独立的汇编子例程

我做了一些shellcode执行的实验,我在其中编写了自己的shellcode,将其写入我希望它执行的目标程序的内存中,然后使用新线程或线程劫持来执行它。这很好用,但是手动编写shellcode相当耗时,因此我正在寻找一种能够用C或C++编写函数的方法,该函数在编译后将完全独立。这意味着任何编译后的函数都应该可以独立执行。这样我就可以直接将它写入我的目标程序中,例如使用WriteProcessMemory准备执行。因此,推送shellcode将使用如下代码完成:#include#includeusingnamespacestd;BOOLMakeABeep(){returnBeep(0x