【问题标题】:How to translate assembly code snippet into binary machine code snippet?如何将汇编代码片段转换为二进制机器代码片段?
【发布时间】:2014-01-24 19:17:45
【问题描述】:

是否可以将x86汇编代码sn-p(不是完整程序)自动翻译成对应的二进制机器码sn-p?

例如:

xor eax, eax
mov [ebx + 12], eax

进入:

31 c0
89 43 0c

我真的只需要相应的字节集。通常我必须查看一些指令集参考并手动翻译它,但我很确定有一些程序可以自动完成。

如果你知道这样的工具,请告诉我它的名字或分享一个链接。

【问题讨论】:

  • 这没什么意义,汇编器采用操作码助记符,就像你的第一个 sn-p。并产生字节。没有名为“Visual Studio assembler”的产品。
  • 好吧,抱歉,我的意思是生成的代码应该与 VS 可执行文件兼容(例如可以注入),但当然只有一种从汇编程序到机器代码的翻译。
  • dumppe.exe 你在找什么?使用我在this question 的回答中概述的方法? (我真的不想把这些都写出来,因为我可能跑题了)

标签: assembly x86


【解决方案1】:

我解决了我的问题。它适用于 Windows 平台,并使用 Visual Studio 附带的 ML64 汇编器。 我用这个模板创建了一个 template.asm 文件:

    .code

main proc
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop

; -------------------------------------------
; enter assembly code here
; -------------------------------------------

    mov [ebx + 12], eax
    xor eax, eax

; -------------------------------------------

    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
main endp

end

然后我编译它:

ml64 /c template.asm

知道nop 指令被翻译成0x90,我可以编写一个程序来搜索两个10 x 0x90 字节块之间的字节。

【讨论】:

    【解决方案2】:

    我知道两个主要的汇编程序:NASMMASM

    据我所知,汇编器有几种表示法变体,MASM 与 VS 语法更兼容。

    这些从汇编中生成机器代码。如果您想查看十六进制字节,请使用您喜欢的十六进制编辑器。

    到目前为止,我只在 Windows 下使用过 NASM,所以我无法告诉你关于 VS 集成的任何信息,但通常汇编器应该是你正在使用的工具。

    【讨论】:

    • 感谢您的帮助。您的答案并不完全是我想要的,但它启发了我自己使用汇编程序编译代码并添加一些代码标记(如我的答案中所述的 nop 指令)以轻松找到代码。谢谢!
    【解决方案3】:

    我也遇到过类似的情况。不过,我的解决方案只能与 gcc 工具链一起使用。

    假设您在 code.s 中有您的程序集,那么以下内容将起作用:

    $ gcc -c code.s && ld -o output.bin code.o --oformat=binary -Ttext=0 2>/dev/null && rm code.o
    

    在 output.bin 中,您将获得汇编指令。如果您希望它们采用十六进制格式,您可以执行以下操作(仅适用于 Linux 或具有 xxd 的系统):

    $ xxd -p output.bin
    

    【讨论】:

      【解决方案4】:

      您可以为此使用fasm。它可以将自包含的sn-ps汇编代码编译成二进制文件。很有用。

      【讨论】:

        猜你喜欢
        • 2014-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-09
        相关资源
        最近更新 更多