【转载】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
---备注---
mmap格式怎么打开% :表⽰当前⽂件中显⽰的所有⾏;
!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⽂件系统中包含进程的所有信息;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论