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]>

まぁこんな感じ。よくね?