机器码转汇编
程序员文章站
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的数据手册,然后去解析这句话的意思。不过这样效率太低,我们可以通过如下方式分析。
- 先把机器码写到文件里
#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;
}
- 使用objdump进行反汇编
因为这段机器码是在x86机器上生成的,所以需要指定***-m i386:x86-64***
objdump -b binary -m i386:x86-64 -D 1.bin
上一篇: 利用循环求和
下一篇: 调试DLL卸载时的死锁