jjzjj

Assembly

全部标签

windows - 实现 x86 到 x64 汇编代码切换

我正在研究NtDll如何在x86进程中工作,并且我使用IDAPRO调试了函数NtCreateFile。它的代码如下:moveax,55h;NtCreateFilemovedx,offset_Wow64SystemServiceCall@0;calledx;Wow64SystemServiceCall();retn2ChWow64SystemServiceCall():movedx,largefs:30hmovedx,[edx+464h]testedx,2jzshortloc_7738B5C8int2Eh;DOS2+internal-EXECUTECOMMAND;DS:SI->count

windows - 16 位程序是否在 32 位操作系统上以虚拟 8086 模式运行?

我想确认几件事。我正在为8086编写汇编语言程序。我正在使用masm611汇编器进行组装。如果我在32位窗口的命令提示符下运行和调试808616位实模式程序,它是否使用和修改实际的cpu寄存器和内存?windows32bit下程序运行在virtualmode86吗?此外,如果我使用PWBMicrosoftProgrammers’Workbench中的CodeView调试器调试程序,如下所示:PWB请确认CodeView调试器中的寄存器和内存值是否是硬件中的实际值并且正在变化。此外,当我在PWB中运行程序时,它使用32位Windows下的实际硬件。 最佳答案

windows - 试图将 "variable"插入堆栈

我有以下代码:[bits64]%definemsgdb"%i\n",0xa,0%definevar-4movr8,rspmov[r8+(var)],WORD0xFFFFpushWORD[r8+(var)];notworks;iftryingtopushDWORDitsshowserrorinstructionnotsupportedin64bitasmpushDWORD0xFFFF;workscalltCtAKBWomJmsgtCtAKBWomJ:call[rbx+3*8]addrsp,8push0call[rbx]call[rbx+x*8]调用asmloaderapix=0,退出x=

windows - 汇编编程和过程调用的问题

我正在使用MASM进行一些汇编编程。当我尝试运行我的程序时,它会在遇到“callmyFunction”时立即崩溃,即使我已经从过程中删除了所有代码。这是我的代码,如有任何帮助,我们将不胜感激。.486.modelflat.stack100hExitProcessPROTONEAR32stdcall,dExitCode:DWORD.code_start:callmyFunctionINVOKEExitProcess,0PUBLIC_startmyFunctionprocnear32myFunctionendpEND 最佳答案 将myF

windows - 仅使用系统调用而不是 Windows dll 制作程序

这个问题在这里已经有了答案:Windowssystemcalls[duplicate](1个回答)关闭5年前。我正在尝试让程序使用系统调用而不是dll(kernel32.dll、ntdll.dll)。例如,我知道Windows1064位中的0x2C(44)系统调用是NtTerminateProcessbuythat网页。此外,当我反汇编ntdll.dll时,我发现该代码:NtTerminateProcess:movr10,rcxmoveax,44testbyte[abs7FFE0308h],01h;alsowhatisinthatmemoryaddress?jnzlabelsyscal

c++ - Visual C++ 在函数末尾附加 0xCC (int3) 字节

这是我第一次来,我真的希望你们能帮助我,因为我现在已经没有想法了。我已经搜索了几个小时的答案,但找不到真正有效的答案。我想直接将代码注入(inject)到正在运行的进程中。是的,你没看错。我正在尝试将代码注入(inject)另一个应用程序,并且-不管你信不信-这只是为了扩展它的功能。我在Windows上使用VisualStudio2012ExpressEdition。我有以下代码:__declspec(naked)voidFoo(){__asm{//Inlineassemblycodehere}}__declspec(naked)voidFooEnd(){}intmain(){cout

windows - PE文件中没有.BSS

这是简短的控制台应用程序示例staticcharbuffer[4096];intmain(){for(inti=0;i据我了解,编译器生成的“exe”文件应包含用于存储“buffer”变量的.bss部分。我正在使用TinyC编译器,生成的文件不包含对.bss的任何引用。DOSHeaderMagicnumber:0x5a4d(MZ)Bytesinlastpage:144Pagesinfile:3Relocations:0Sizeofheaderinparagraphs:4Minimumextraparagraphs:0Maximumextraparagraphs:65535Initial

windows - 如何在部分上使用 fixups 属性?

“修复”应用于部分时究竟做了什么?在一个fasm示例中,我发现了以下部分delcaration,我真的不确定fixups属性的作用,我在fasm文档中找不到太多关于它的信息。section'.reloc'fixupsdatareadablediscardableif$=$$dd0,8;iftherearenofixups,generatedummyentryendif 最佳答案 这似乎是buginhowFASMgeneratesPECOFFDLLs的解决方法..reloc部分仅适用于PECOFF图像(EXE和DLL),并提供允许在任

c - 是否可以通过编程关闭电脑风扇+处理器风扇?

我正在尝试观察软件今天是否会损坏硬件。为此,我选择关闭电脑风扇是个好主意(否则我宁愿让硬盘崩溃)。我需要知道以下内容:是否可以在任何人的计算机上执行此操作?这会对硬件造成危险吗?选择C​​是一个不错的选择,还是我应该选择汇编语言?提前致谢。 最佳答案 首先,风扇旋转是有原因的:复杂的电子设备会很快过热。查看执行此操作的专用工具会更容易,例如适用于Windows的SpeedFan。另一方面,如果您真的想这样做,有很多方法-但是,它们大多是特定于供应商和产品的。对于Linux上的Acer笔记本电脑,请参见例如this-请注意,它是非常底

windows - 使用 Windows 16 位 API 更改目录

我用MASM6.0(AssemblyAPIWindows16位)编写我想在我的代码中更改目录。我正在使用DOS3Call函数(比int21h快)movdx,OFFSETdir_usermovah,3bhinvokeDOS3Call;dir_useristheuser'sworkdirectory,like"c:\prog"有了这个功能,我可以改变目录,但我想知道是否有任何API可以在不使用中断的情况下为我做这件事。我需要一个16位的API,在32位中我知道该怎么做。谁能帮帮我?对不起英语,我不是美国人... 最佳答案 你不能。中断是