二进制文件分析工具
<h2>二进制分析</h2>
<p><code>ltrace</code> 库调用跟踪器</p>
<p><code>hexdump</code> 可用 <code>hexdump -C xxx</code> 查看文件二进制内容</p>
<p><code>objdump</code> 可用 <code>objdump -d xxx</code> 查看汇编内容</p>
<p><code>gdb</code> 调试</p>
<p><code>nm</code> 列出文件中的符号:</p>
<pre><code class="language-c">A :符号的值是绝对值,不会被更改
B或b :未被初始化的全局数据,放在.bss段
D或d :已经初始化的全局数据
G或g :指被初始化的数据,特指 small objects
I :另一个符号的间接参考
N :debugging 符号
p :位于堆栈展开部分
R或r :属于只读存储区
S或s :指为初始化的全局数据,特指 small objects
T或t :代码段的数据,.test段
U :符号未定义
W或w :符号为弱符号,当系统有定义符号时,使用定义符号,当系统未定义符号且定义了弱符号时,使用弱符号。
? :unknown 符号</code></pre>
<h2>用到</h2>
<pre><code class="language-sh"># 查看调试信息
readelf -w xxx.bin
# 查看 elf 文件分布信息(两种都一样)
objdump -h xxx.bin
readelf -S xxx.bin</code></pre>