1- use std:: io:: Write ;
2- use std:: num:: ParseIntError ;
3- use std:: sync:: atomic;
41use crate :: emu:: Emu ;
52use crate :: peb:: peb32;
63use crate :: peb:: peb64;
@@ -9,12 +6,15 @@ use crate::structures;
96use crate :: to32;
107use crate :: winapi:: winapi32;
118use crate :: winapi:: winapi64;
9+ use std:: io:: Write ;
10+ use std:: num:: ParseIntError ;
11+ use std:: sync:: atomic;
1212
1313// if the user types "r2 0x123" will execute radare2
14- use std :: process :: { Command , Stdio } ;
14+ use crate :: maps :: mem64 :: Permission ;
1515use std:: fs;
1616use std:: io;
17- use crate :: maps :: mem64 :: Permission ;
17+ use std :: process :: { Command , Stdio } ;
1818
1919pub struct Console { }
2020
@@ -164,22 +164,25 @@ impl Console {
164164 }
165165
166166 pub fn spawn_radare2 ( addr : u64 , emu : & mut Emu ) {
167-
168167 let mem = match emu. maps . get_mem_by_addr ( addr) {
169168 Some ( m) => m,
170169 None => {
171170 log:: info!( "address not found on any map" ) ;
172- return
171+ return ;
173172 }
174173 } ;
175174
176175 let tmpfile = format ! ( "/tmp/{}.r2" , mem. get_name( ) ) ;
177176 mem. save_all ( & tmpfile) ;
178177
179- let base = format ! ( "0x{:x}" , mem. get_base( ) ) ;
180- let seek = format ! ( "0x{:x}" , addr) ;
178+ let base = format ! ( "0x{:x}" , mem. get_base( ) ) ;
179+ let seek = format ! ( "0x{:x}" , addr) ;
181180 let bits;
182- if emu. cfg . is_64bits { bits = "64" } else { bits = "32" }
181+ if emu. cfg . is_64bits {
182+ bits = "64"
183+ } else {
184+ bits = "32"
185+ }
183186 let precmd = format ! ( "dr rax={}?; dr rbx={}?; dr rcx={}?; dr rdx={}?; dr rsi={}?;
184187 dr rdi={}?; dr rbp={}?; dr rsp={}?; dr rip={}?; dr r8={}?
185188 dr r9={}?; dr r10={}?; dr r11={}?; dr r12={}?; dr r13={}?;
@@ -190,30 +193,25 @@ impl Console {
190193 emu. regs( ) . r11, emu. regs( ) . r12, emu. regs( ) . r13, emu. regs( ) . r14,
191194 emu. regs( ) . r15) ;
192195 let r2args = vec ! [
193- "-n" ,
194- "-a" , "x86" ,
195- "-b" , & bits,
196- "-m" , & base,
197- "-s" , & seek,
198- "-c" , & precmd,
199- & tmpfile
196+ "-n" , "-a" , "x86" , "-b" , & bits, "-m" , & base, "-s" , & seek, "-c" , & precmd, & tmpfile,
200197 ] ;
201198
202199 log:: info!( "spawning radare2 software." ) ;
203-
200+
204201 match Command :: new ( "radare2" )
205202 . args ( & r2args)
206203 . stdin ( Stdio :: inherit ( ) )
207204 . stdout ( Stdio :: inherit ( ) )
208205 . stderr ( Stdio :: inherit ( ) )
209- . spawn ( ) {
210- Ok ( mut child) => {
211- let _ = child. wait ( ) ;
212- }
213- Err ( e) => {
214- log:: error!( "Install radare first! {}" , e) ;
215- return
216- }
206+ . spawn ( )
207+ {
208+ Ok ( mut child) => {
209+ let _ = child. wait ( ) ;
210+ }
211+ Err ( e) => {
212+ log:: error!( "Install radare first! {}" , e) ;
213+ return ;
214+ }
217215 }
218216
219217 if let Err ( e) = fs:: remove_file ( & tmpfile) {
@@ -223,7 +221,6 @@ impl Console {
223221 }
224222 }
225223
226-
227224 pub fn spawn_console ( emu : & mut Emu ) {
228225 if !emu. cfg . console_enabled {
229226 return ;
@@ -579,7 +576,10 @@ impl Console {
579576 }
580577 } ;
581578
582- let mem = emu. maps . get_mem_by_addr ( addr) . expect ( "address not found on any map" ) ;
579+ let mem = emu
580+ . maps
581+ . get_mem_by_addr ( addr)
582+ . expect ( "address not found on any map" ) ;
583583 if emu. cfg . is_64bits {
584584 log:: info!(
585585 "map: {} 0x{:x}-0x{:x} ({})" ,
@@ -1034,14 +1034,13 @@ impl Console {
10341034 if parts. len ( ) >= 2 {
10351035 emu. maps . print_maps_keyword ( & parts[ 1 ] ) ;
10361036 }
1037-
10381037 } else if cmd. starts_with ( "r2 " ) {
1039- let parts: Vec < & str > = cmd. split_whitespace ( ) . collect ( ) ;
1040- if parts. len ( ) >= 2 {
1041- if let Ok ( addr) = u64:: from_str_radix ( parts[ 1 ] . trim_start_matches ( "0x" ) , 16 ) {
1042-
1038+ let parts: Vec < & str > = cmd. split_whitespace ( ) . collect ( ) ;
1039+ if parts. len ( ) >= 2 {
1040+ if let Ok ( addr) =
1041+ u64:: from_str_radix ( parts[ 1 ] . trim_start_matches ( "0x" ) , 16 )
1042+ {
10431043 Console :: spawn_radare2 ( addr, emu) ;
1044-
10451044 } else {
10461045 println ! ( "wrong hexa parameter" ) ;
10471046 }
@@ -1053,11 +1052,10 @@ impl Console {
10531052 }
10541053 }
10551054 } // match commands
1056-
1055+
10571056 if emu. cfg . command . is_some ( ) {
10581057 std:: process:: exit ( 1 ) ;
10591058 }
1060-
10611059 } // end loop
10621060 } // end commands function
10631061}
0 commit comments