我一直在将一个可执行文件转换成一些NASM shellcode(对于Windows来说,如果它是相关的)但是我遇到了"错误:解析器:指令预期"错误来自rep指令的所有地方.
label_0000641:
lea edi,[esp+0x164]
label_0000648:
rep movs DWORD es:[edi],DWORD ds:[esi]
label_000064a:
and DWORD [esp+0x168],0x0
Run Code Online (Sandbox Code Playgroud)
是否有一些特殊的nasm语法?我犯了一个愚蠢的错误吗?我不知道如何修复这些错误,并且非常想要一些指导.
(我正在用nasm -f bin编译-o out.bin test.asm)
谢谢.
NASM不接受 rep movs DWORD es:[edi],DWORD ds:[esi]
根据设计,NASM选择不记住您声明的变量类型.虽然MASM会在看到
var dw 0你将var声明为一个字大小变量时记住,然后能够填写指令大小的模糊性mov var,2,NASM会故意记住符号变量,除非它开始,所以你必须明确地编码mov word [var],2.出于这个原因,NASM不支持
LODS,MOVS,STOS,SCAS,CMPS,INS,或OUTS说明,但仅支持形式,如LODSB,MOVSW和SCASD,其中明确指定字符串的组件的尺寸被操纵.
因此,使用的代码是 rep movsd
| 归档时间: |
|
| 查看次数: |
1558 次 |
| 最近记录: |