草庐IT

汇编指令

全部标签

windows - Windows 内核是否有读写 fork() 指令?

BecausePOSIX.1compliancewasamandatorygoalforWindows,theoperatingsystemwasdesignedtoensurethattherequiredbasesystemsupportwaspresenttoallowfortheimplementationofaPOSIX.1subsystem(suchastheforkfunction,whichisimplementedintheWindowsexecutive,andthesupportforhardfilelinksintheWindowsfilesystem).这个f

windows - Windows 8 x64 上的汇编代码

我是硬件方面的新手,接近使用汇编代码编程。所以我读了一本关于它的书并找到了NASM汇编程序的示例代码:segment.text;codesegmentglobalmain;mustbedeclaredforlinkermain:;telllinkerentrypointmovedx,len;messagelengthmovecx,msg;messagetowritemovebx,1;filedescriptor(stdout)moveax,4;systemcallnumber(sys_write)int0x80;callkernelmoveax,1;systemcallnumber(s

windows - 汇编循环循环太多次

我对汇编很陌生(昨天开始学习)并且遇到循环问题:下面的代码应该打印值0-49,但它打印的是0-49,然后是~20行垃圾(我假设这是堆栈的一部分,其他程序/程序的其他部分正在使用)。我预计问题出在第二个循环.loop,因为它打印了错误的行数,而打印由.loop处理。我正在使用FASM(FlatAssembler)程序来编译它。代码:formatPEconsoleinclude"win32ax.inc"start:movecx,50;numberofloops.mainloop:;fortestingpurposes,justpushes49-0ontothestackpushecx;pu

windows - 代码段描述符中的 D 标志对 x86-64 指令有何作用?

当在x86-64代码中使用时,我试图了解代码段描述符中D标志的工作原理。它设置在代码段描述符的D/B位22中,如下图所示:英特尔文档(来自3.4.5SegmentDescriptors部分)陈述如下:D/B(defaultoperationsize/defaultstackpointersizeand/orupperbound)flagPerformsdifferentfunctionsdependingonwhetherthesegmentdescriptorisanexecutablecodesegment,anexpand-downdatasegment,orastacksegm

windows - 为什么这段汇编代码不打印栈顶?

成功制作“Hello,World!”后x86-64中的程序,我想要制作一个可以查看堆栈顶部的程序(无需弹出堆栈,并使用esp寄存器,这样我就可以了解它是如何工作的)。这是NASM中的程序:externGetStdHandle,WriteConsoleA,ExitProcesssection.bssdummyresd1section.text%macroprint3movrcx,%1movrdx,%2movr8,%3movr9,dummypushNULLcallWriteConsoleA%endmacro_start:movrcx,STD_OUTPUT_HANDLEcallGetStdH

windows - 这段汇编代码在做什么 - 写入进程内存

编辑/更新所以我认为让我感到困惑的是:LEAESI,[EBX+8*EAX+4]加载一个地址,但是:LEAESI,[EBX+4]加载内容(值?)而不是地址。这怎么不是取消引用?我也不知道是什么mov[eax+1],ecx是吗?原始问题我正在努力学习阅读汇编,但我开始挣扎了。抱歉,如果有拼写错误,我无法从我的实验室机器上复制。这是来自恶意代码,因此它可能不是最佳的。我想我在某处理解有缺陷,但我就是想不通。var_30=byteptr-30hleaeax,[ebp+esi+var_30]我的理解是,加载有效地址将成为从[basepointer-30h+esi]计算出的任何地址。我不知道esi

linux - 汇编和多核有什么关系?

这很难说/问,所以请耐心等待:当我们看到汇编的输出时,这就是将要在CPU核心上执行的内容。但是,如果一个CPU有多个内核——所有的程序集都是在同一个内核上执行的吗?来自同一程序的程序集会在什么时候开始在不同的内核上执行?所以如果我有(汇编伪):ADDx,y,zSUBp,x,q我如何知道ADD和SUB是否会在同一个内核上执行?这与亲和性有关吗?我以为affinity只是将进程固定到CPU,而不是核心?我问这个是因为我想尝试了解您是否可以合理地预测连续的汇编指令是否在同一个内核上执行,以及我是否可以控制它们只在同一个内核上执行。我想了解如何决定将执行相同的程序代码从一个内核更改为另一个内核

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 - 汇编编程和过程调用的问题

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

java - 在java中的do while循环中只执行一次指令

在java中,如何在dowhile循环中只执行一次指令do{intparam;//executethisontyonetime(dependsofparam)//otherinstructionsinstructions}while(condition)谢谢 最佳答案 把你想只执行一次的语句放在一起是一种方法,但是,当然,这假设语句出现在循环的末尾或开始,并且不依赖于循环的条件on在循环中(之前或之后)。如果你有这样的事情:do{//dosomestuff//onetimecondition//dosomemorestuff}whi