diff --git a/scripts/menu.pl b/scripts/menu.pl index 4171858..9d898fe 100644 --- a/scripts/menu.pl +++ b/scripts/menu.pl @@ -352,11 +352,11 @@ my %handlers = ( } }, - '17. Run Build in GDB' => sub { + '20. Run Build in GDB' => sub { my @builds = grep { /linux/ } Util::find_subdirs($local_builds_dir); my @selected_builds = TUI::select_from_list( "Select Build to Run in GDB", 0, @builds ); - die "No experiment selected" unless @selected_builds; + die "No build selected" unless @selected_builds; my $selected_build = $selected_builds[0]; my $build_dir = "$local_builds_dir/$selected_build"; @@ -389,6 +389,73 @@ my %handlers = ( ); }, + '21. Run Objdump on Build' => sub { + my @builds = Util::find_subdirs($local_builds_dir); + my @selected_builds = + TUI::select_from_list( "Select Build to Objdump", 0, @builds ); + die "No build selected" unless @selected_builds; + my $selected_build = $selected_builds[0]; + + my $build_dir = "$local_builds_dir/$selected_build"; + system( + "objdump $build_dir/system.elf -D -M intel -S | bat --color never"); + }, + + '22. Run Wasm-Objdump on Build' => sub { + my @builds = Util::find_subdirs($local_builds_dir); + my @selected_builds = + TUI::select_from_list( "Select Build to Wasm-Objdump", 0, @builds ); + die "No build selected" unless @selected_builds; + my $selected_build = $selected_builds[0]; + + my $build_dir = "$local_builds_dir/$selected_build"; + system( + "wasm-objdump -d $build_dir/wasm_module.wasm | bat --color never"); + }, + + '23. Run Radare2 on Build' => sub { + my @builds = Util::find_subdirs($local_builds_dir); + my @selected_builds = + TUI::select_from_list( "Select Build to Objdump", 0, @builds ); + die "No build selected" unless @selected_builds; + my $selected_build = $selected_builds[0]; + + my $build_dir = "$local_builds_dir/$selected_build"; + say "Radare help:"; + say "s
- Seek to address"; + say "pd - Disassemble n instructions"; + say "pdf - Disassemble current function"; + say "pdf @ - Disassemble function"; + say "pdr - Disassemble recursively"; + say "V - Switch view"; + say "p - Switch print mode"; + say "P - Switch layout"; + system( + 'radare2', '-AA', + '-c', '"-s dbg.os_main"', + '-e', 'scr.color=3', + '-e', 'scr.scrollbar=0', + '-e', 'scr.responsive=true', + '-e', 'scr.interactive=true', + '-e', 'scr.utf8=true', + '-e', 'scr.utf8.curvy=true', + '-e', 'asm.syntax=intel', + '-e', 'asm.lines=false', + '-e', 'asm.xrefs=true', + '-e', 'asm.flags=true', + '-e', 'asm.comments=true', + '-e', 'asm.functions=true', + '-e', 'asm.var=true', + '-e', 'asm.cmt.right=true', + '-e', 'asm.dwarf=true', + '-e', 'asm.pseudo=false', + '-e', 'asm.describe=false', + '-e', 'bin.relocs.apply=true', + "$build_dir/system.elf", + + ); + }, + '95. Delete Builds' => sub { # Delete old build files