objdump和xxd之间的差异

时间:2016-12-19 17:25:04

标签: linux endianness objdump xxd

我试图在二进制文件中找到一个调用函数,所以我尝试了这个:

  1. 编译我的代码(在C中),
  2. 使用命令:mips-mti-linux-gnu-objdump -d myapp.elf> objdump.txt
  3. 我在objdump.txt文件中的功能:9d003350: 42000828 myfunction 0x1
  4. 现在,我想在内存中读取此函数时在myapp.bin中识别此函数。但是,我明白了:28080042

    我尝试使用命令:xxd -ps myapp.bin> xxd.txt 只需找到:28080042

    有可能吗?

1 个答案:

答案 0 :(得分:0)

这是endianness冲突。 $data = [ 'name' => html_escape($this->input->post('name'), 'email' => html_escape($this->input->post('email'), 'mobile' => html_escape($this->input->post('mobile'); ]; $this->form_validation->set_rules('mobile',Mobile','trim|required|numeric'); $this->form_validation->set_rules('name',name','trim|required'); $this->form_validation->set_rules('email',Email','trim|required|valid_email'); if ($this->form_validation->run() === false) { //print error }else { $this->db->insert('TABLE', $data); } objdump为您提供相同的字节,它们只是使用不同的字节序。

xxd

Actual bytes in order: 28 08 00 42 Big endian value: 28 08 00 42 Little endian value: 42 00 08 28 将按文件中存在的顺序打印出文件中的各个字节。

xxd -p正在拆解它,它知道这些字节属于4个组,并且它将它们解释为little-endian。

objdump可以使用xxd标志以小端顺序打印(默认分组为4个字节,使用-e标志来更改每个组的字节数) 。但是,这与-g标志不兼容,因为-p标志忽略任何分组。

-p可以使用objdump标记以big-endian顺序打印,但这会影响它报告的说明。