草庐IT

IDA汇编

全部标签

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++ - 了解 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

c++ - 反汇编二进制文件中的 HIGHLOW 是什么意思?

我刚刚第一次使用DUMPBIN,我在输出文件中反复看到术语HIGHLOW:BASERELOCATIONS#711000RVA,E0SizeOfBlock...3B5HIGHLOW2001753D___onexitbegin3C1HIGHLOW2001753D___onexitbegin...我很好奇这个词代表什么。我没有在Google或Stackoverflow上找到任何关于它的信息。 最佳答案 Toapplyafixup,adeltaiscalculatedasthedifferencebetweenthepreferredbas

windows - Windows如何执行汇编程序?

我开始学习汇编语言,想知道Windows是如何执行汇编程序的?Windows是否也使用相同的过程来执行.exe文件?在这一点上,我很难专注于学习汇编编程语言,同时不断思考后台发生的事情。我也在寻找一本书,以便更好、更深入地了解Windows内部结构以及一般操作系统如何执行上述任务。感谢任何帮助(用于描述过程的术语)或对外部资源的引用! 最佳答案 在您组装您的程序后,它变成一个普通的可执行文件,Windows会像执行任何其他native可执行文件一样执行它。 关于windows-Windo

windows - x86 32 位汇编代码是否有效 x86 64 位汇编代码?

Isallx8632-bitassemblycodevalidx8664-bitassemblycode?我想知道32位汇编代码是否是64位汇编代码的子集,即每个32位汇编代码都可以在64位环境中运行?我想答案是肯定的,因为64位Windows能够执行32位程序,但后来我看到64位处理器支持32位兼容模式?如果不是,请提供一个不是有效64位汇编代码的32位汇编代码的小例子,并解释64位处理器如何执行32位汇编代码。 最佳答案 现代x86CPU具有三种主要操作模式(此描述已简化):在实模式下,CPU在禁用分页和分段的情况下执行16位代

c - 独立于汇编操作系统的原子比较和交换

我正在编写独立于操作系统的无锁队列,队列工作正常(使用默认的windows\linux原子CAS),但我想在linux和windows中不做任何更改的情况下使队列工作。所以我想我应该在汇编器中编写自己的CAS,或者有其他方法可以实现它?到目前为止我有这段代码:global_CAS_CAS:moveax,[esp+4]movedx,[esp+8]movecx,[esp+12];XCHGeax,edx我知道我仍然需要在CMPXCHG之前添加lock并且它应该与结构一起工作,但现在我更感兴趣的是让它工作。我使用nasm-2.10.05和这个命令编译nasm.exe-felf-ocas.oca

windows - 如何设置 Emacs 以进行汇编编程和修复缩进?

HowtosetEmacsupforassemblyprogrammingandfixindentation?Emacs以令人讨厌的方式缩进了一些指令。特别是,下面的global、extern和section关键字缩进为代码。我希望这些关键字左对齐。如何做到这一点?另外,汇编编程有什么好的模式值得推荐吗?global_mainextern_printfsection.text_main:pushmsgcall_printfaddesp,4retmsg:db'HelloWorld',0虽然语法高亮在asm模式下有效: 最佳答案 我在L

windows - 如何在DOS下显示汇编中的字符?

我有以下代码,我试图在其中显示,但我的调试器(AFD)继续调试但不显示任何内容。[org0x100]movax,0xb800moves,axmovdi,0nextchar:movword[es:di],0x0720adddi,2cmpdi,40jnenextcharmovax,0x0003;80x25textmode,16colorsint0x10 最佳答案 通过在退出前等待键盘按键,给自己一个机会来实际查看输出的内容:[org0x100]movax,0xb800moves,axmovdi,0nextchar:movword[es:

windows - 如何将 .asm 文件汇编并链接到 Win32 可执行文件?

我的系统上安装了NASM和Dev-Cpp。Dev-cpp随LD(GNU链接器)一起提供。我不熟悉汇编代码和从汇编文件创建32位Windows可执行文件的过程。我试过使用这个:nasm-fwin32ass.asmnasm-oassass.o我没有成功使用这些命令来创建可执行文件。汇编(使用NASM)和链接以生成将在32位Windows上运行的可执行文件的正确方法是什么? 最佳答案 您的一条评论(似乎已不复存在)确实提到您在Windows上安装了Dev-Cpp。如果您的路径上有Dev-CppMinGWbin目录,则GNU链接器LD可供您