本篇为转载,原链接如下:
主要是做⼀个个⼈的资料收集,以后可以快速找到。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⽂件系统中包含进程的所有信息;
因篇幅问题不能全部显示,请点此查看更多更全内容