欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

机器码转汇编

程序员文章站 2022-07-15 14:22:06
...

有时候,我们在分析问题的时候,能得到的只有机器码,例如

0f 11 01 4c 03 c1 48 83 c1 10 48 83 e1 f0 4c 2b c1 4d

要分析这段代码,可以找intel的数据手册,然后去解析这句话的意思。不过这样效率太低,我们可以通过如下方式分析。

  1. 先把机器码写到文件里
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>

int main(void)
{
    char bin_data[] = {0x0f, 0x11, 0x01, 0x4c, 0x03, 0xc1, 0x48, 0x83, 0xc1, 0x10, 
                        0x48, 0x83, 0xe1, 0xf0, 0x4c, 0x2b, 0xc1, 0x4d};
    int fd = open("1.bin", O_RDWR | O_CREAT);
    if(fd < 0) {
        printf("error opening file\n");
        return 0;
    }
    
    write(fd, bin_data, 18);
    close(fd);
    return 0;
}
  1. 使用objdump进行反汇编
    因为这段机器码是在x86机器上生成的,所以需要指定***-m i386:x86-64***
objdump -b binary -m i386:x86-64  -D 1.bin

机器码转汇编

相关标签: problem fix linux