您的当前位置:首页正文

【转载】ELF文件-逆向工具

2022-08-07 来源:独旅网
【转载】ELF⽂件-逆向⼯具

本篇为转载,原链接如下:

主要是做⼀个个⼈的资料收集,以后可以快速找到。Ps.如果不喜欢被我转载,可以联系我删掉,谢谢!

1、ELF⽂件内容解析

readelf : 可解析ELF⽂件的所有内容;strings : 查看ELF⽂件中的字符串;file : 查看ELF⽂件的信息;

nm : 查看ELF⽂件中的符号信息;ldd : 查看ELF⽂件所依赖的库⽂件;

2、objdump

⽤于对ELF⽂件进⾏反汇编;

objdump -d ;反汇编部分可执⾏的⼆进制代码;objdump -D ;反汇编全部的可执⾏的⼆进制代码;

objdump -S ;尽量把可执⾏的⼆进制代码反汇编成源码;3、hexdump

以⼗六进制格式查看ELF格式的⼆进制可执⾏⽂件的内容;hexdump -C elf_file_name

4、od

以指定的进制格式查看ELF格式的⼆进制可执⾏⽂件的内容;默认是⼋进制;od -t x4 ;-t指定格式化的字节单元单位;

;x4-每4个字节为⼀个单元格式化成⼗六进制, ;x2-每2个字节为⼀个单元格式化成⼗六进制, ;x1-以1个字节为⼀个单元格式化成⼗六进制;-t x2 等价于 -x

-A选项指定进制格式:x-⼗六进制, d-⼗进制,o-⼋进制;

如果使⽤-t指定了⼗六进制格式,则-A选项就不是必须的了;

5、xxd

以⼗六进制格式查看ELF格式的⼆进制可执⾏⽂件的内容;xxd ;以⼩写的⼗六进制格式显⽰;xxd -u ;以⼤写的⼗六进制格式显⽰;

xxd -s +10 ;以ELF⽂件头处的第1个字节为参照,从第10个字节处开始显⽰;xxd -s -10 ;以ELF⽂件尾处的第1个字节为参照,从第10个字节处开始显⽰;

6、编辑ELF⽂件

使⽤vi/vim与命令xxd配合完成;

STEP1:使⽤vi/vim以⼆进制模式打开ELF⽂件; vi -b binary_file vim -b binary_file

STEP2:在vi/vim的命令模式下输⼊如下内容,把⼆进制内容转换成16进制格式显⽰: :%!xxd -u

STEP3:按照vi/vim正常的编辑⽅法来修改以⼗六进制格式显⽰的⼆进制内容;

STEP4:编辑完成之后,在vi/vim的命令模式下输⼊以下内容,把⼗六进制格式显⽰的内容转换回原始的⼆进制格式: :%!xxd -r

STEP5:在vi/vim的命令模式下输⼊以下内容,保存⼆进制格式的ELF⽂件: :wq---备注---% :表⽰当前⽂件中显⽰的所有⾏;!xxd:表⽰执⾏外部命令xxd;

格式\"%!xxd\"表⽰把当前⽂件中的所有⾏传递给外部命令xxd;

7、动态调试⼯具

ltrace : 跟踪ELF⽂件或进程对库函数的调⽤(library_function_call);strace: 跟踪ELF⽂件或进程对系统调⽤的调⽤(system_call);

gdb : 对⼀个程序进⾏调试;使⽤gcc编译该程序时需加上选项-g,让编译器增加⼀些调试信息;strip : 删除程序中的调试信息;这些调试信息是编译该程序时,gcc编译器的-g选项添加的;splint : 查看⼀个程序中对未赋值变量的引⽤、未使⽤的函数参数,等情况;(静态检测)lsof : 查看⼀个进程打开的⽂件;

fuser : 查看正在访问指定的file、filesystem或socket的所有进程的信息;即:查看都有哪些进程正在访问指定的file、filesystem或socket;

如果没有找到任何进程,fuser返回⾮零值;如果找到⾄少⼀个进程,则fuser返回0;

-k:该选项会向所有这些进程发送SIGKILL信号,以kill掉所有正在访问指定file、filesystem或socket的所有进程; -i:在kill掉fuser命令找到的这些进程之前进⾏必要的提⽰信息;

fuser命令显⽰的是pid,并且在每个pid后⾯附加⼀个字母,⽤以表⽰访问⽅式: c: 以⽬录⽅式访问;

e: 以可执⾏⽂件⽅式访问;

f: 以打开⽂件⽅式访问,默认不显⽰; F: 以写的⽅式打开⽂件进⾏访问; r: 以root⽬录的⽅式访问;

m: 以mmap⽂件或共享库的⽅式访问;/proc : proc⽂件系统中包含进程的所有信息;

因篇幅问题不能全部显示,请点此查看更多更全内容