From 3c7bf5bf45eeae532e1bb74032d393af640408cf Mon Sep 17 00:00:00 2001 From: amaloteaux <> Date: Wed, 6 Apr 2011 18:57:40 +0000 Subject: [PATCH] tool/metasm-shell : add option to select different architectures git-svn-id: file:///home/svn/framework3/trunk@12253 4d416f70-5f16-0410-b530-b9f4589650da --- tools/metasm_shell.rb | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/tools/metasm_shell.rb b/tools/metasm_shell.rb index 959164e4b5..194cccf844 100755 --- a/tools/metasm_shell.rb +++ b/tools/metasm_shell.rb @@ -20,9 +20,33 @@ require 'rex' require 'rex/ui' require 'metasm' +#PowerPC, seems broken for now in metasm +#@Arch = ['Ia32','MIPS','PowerPC','ARM','X86_64'] +@Arch = ['Ia32','MIPS','ARM','X86_64'] + +def usage + $stderr.puts("\nUsage: #{$0} \n" + $args.usage) + exit +end + +$args = Rex::Parser::Arguments.new( + "-a" => [ true, "The architecture to encode as (#{@Arch.sort.collect{|a| a + ', ' }.join.gsub(/\, $/,'')})"], + "-h" => [ false, "Display this help information" ]) + +$args.parse(ARGV) { |opt, idx, val| + case opt + when "-a" + usage unless @Arch.include?(val) + String.class_eval("@@cpu = Metasm::#{val}.new") + when "-h" + usage + else + usage + end +} class String - @@cpu = Metasm::Ia32.new + @@cpu ||= Metasm::Ia32.new class << self def cpu() @@cpu end def cpu=(c) @@cpu=c end