r2stelftools
stelftoolsが便利なのでradare2でも使えるようにした
stelftoolsが便利。詳細については各論文を読んだりリポジトリを観てほしい。
何が便利かと言うと、静的にリンクされたライブラリ関数を特定してくれる。
公式でGhidraとIDAのプラグインが用意されているが、自分はradare2でも使いたかったので適当なスクリプトを書いて使えるようにした。
radare2での関数名の変更
afn func_name @addr
で適用できる。
実際のスクリプト
リポジトリはここ。
他にも雑多なマクロがまとめてある。
今回は久々にPythonを書いたので、fzfでいい感じにconfigを選べるようにして遊んだ。
マクロの記法はなんかバージョン上げると変わったりして辛いが、こんな感じ。
(stelftools; "#!pipe python3 /some/path/to/r2utils/r2stelftools/r2stelftools.py")
Usage
[0x00008190]> .(stelftools)
which toolchain?
> < 717/717
> fl-0.9.9_powerpc.json
bl-stable-2020.08-1_uclibc_aarch64.json
al-1.0.3_armv4eb.json
al-1.2.6_sh4.json
al-1.4.1_x86_64.json
al-1.2.1_armv7l.json
fl-0.9.7_mips.json
al-1.2.0_i686.json
br-2020.08.3_musl_ppc64.json
al-1.1.0_armv5l.json
al-1.0.0_powerpc.json
bl-stable-2020.02-1_musl_mips32.json
bl-stable-2020.02-2_uclibc_x86-core2.json
al-1.2.5_powerpc.json
bl-stable-2018.02-2_musl_x86-core2.json
ucli-pub-0.9.30.1_armv5l.json
al-1.1.1_i686.json
br-2020.08.3_musl_risc-v-64.json
al-1.2.8_sh4.json
al-1.2.5_i486.json
al-1.2.6_armv4l.json
al-1.3.0_i486.json
fl-0.9.8_i686.json
al-1.2.7_armv4l.json
al-1.1.0_sh4.json
bl-stable-2020.02-2_glibc_armv5-eabi.json
br-2020.08.3_musl_aarch64.json
al-1.2.5_i686.json
bl-stable-2021.11-1_musl_aarch64.json
al-1.0.0_armv4eb.json
al-1.0.2_armv4tl.json
al-1.2.9_sh4.json
bl-stable-2021.11-1_glibc_mips32.json
bl-stable-2017.05_musl_mips32el.json
al-1.2.2_armv5l.json
bl-stable-2020.02-1_glibc_armv6-eabihf.json
al-1.0.0_mips.json
bl-stable-2020.02-2_uclibc_armv7m.json
al-1.2.0_i586.json
al-1.4.3_m68k.json
bl-stable-2018.02-2_musl_mips32.json
bl-stable-2021.11-1_musl_mips32.json
al-1.4.2_m68k.json
bl-stable-2018.02-1_uclibc_aarch64.json
fl-0.9.9_armv4eb.json
al-1.2.2_mips64.json
bl-stable-2020.02-2_musl_x86-core2.json
al-1.4.4_mips64.json
al-1.4.5_i586.json
bl-stable-2020.02-2_uclibc_armv7-eabihf.json
al-1.4.4_mips.json
bl-stable-2018.02-2_musl_x86-i686.json
br-2020.08.3_glibc_ppc64.json
bl-stable-2020.02-2_glibc_x86-i686.json
ucli-pub-0.9.30.1_sh4.json
[0x00008190]> .(stelftools)
which toolchain?
al-1.2.6_armv4l.json selected!
0x8e54:fcntl64
0x8ea4:_Exit
0x8f50:__GI___errno_location
0x96f0:memset
0x9978:mempcpy
0x9990:raise
0x99a8:__sigismember
ERROR: Cannot find function at 0x000099a8
0x99cc:__sigaddset
0x99f0:__sigdelset
ERROR: Cannot find function at 0x000099f0
0x9aa8:_dl_aux_init
0x9af8:kill
ERROR: Cannot find function at 0x00009af8
0x9b50:fseek
0x9dec:__udivsi3
0x9ee4:__aeabi_uidivmod
ERROR: Cannot find function at 0x00009ee4
0x9efc:__div0
[0x00008190]>
まぁこんな感じ。よくね?
Comments