@@ -485,7 +485,7 @@ impl Emu {
485485 //let map_name = self.filename_to_mapname(filename);
486486 //self.cfg.filename = map_name;
487487
488- if Elf32 :: is_elf32 ( filename) {
488+ if Elf32 :: is_elf32 ( filename) && ! self . cfg . shellcode {
489489 self . linux = true ;
490490 self . cfg . is_64bits = false ;
491491
@@ -497,13 +497,13 @@ impl Emu {
497497 let stack = self . alloc ( "stack" , stack_sz, Permission :: READ_WRITE ) ;
498498 self . regs_mut ( ) . rsp = stack + ( stack_sz / 2 ) ;
499499 //unimplemented!("elf32 is not supported for now");
500- } else if Elf64 :: is_elf64 ( filename) {
500+ } else if Elf64 :: is_elf64 ( filename) && ! self . cfg . shellcode {
501501 self . linux = true ;
502502 self . cfg . is_64bits = true ;
503503 self . maps . clear ( ) ;
504504
505505 let base = self . load_elf64 ( filename) ;
506- } else if !self . cfg . is_64bits && PE32 :: is_pe32 ( filename) {
506+ } else if !self . cfg . is_64bits && PE32 :: is_pe32 ( filename) && ! self . cfg . shellcode {
507507 log:: info!( "PE32 header detected." ) ;
508508 let clear_registers = false ; // TODO: this needs to be more dynamic, like if we have a register set via args or not
509509 let clear_flags = false ; // TODO: this needs to be more dynamic, like if we have a flag set via args or not
@@ -521,7 +521,7 @@ impl Emu {
521521 }*/
522522
523523 self . regs_mut ( ) . rip = ep;
524- } else if self . cfg . is_64bits && PE64 :: is_pe64 ( filename) {
524+ } else if self . cfg . is_64bits && PE64 :: is_pe64 ( filename) && ! self . cfg . shellcode {
525525 log:: info!( "PE64 header detected." ) ;
526526 let clear_registers = false ; // TODO: this needs to be more dynamic, like if we have a register set via args or not
527527 let clear_flags = false ; // TODO: this needs to be more dynamic, like if we have a flag set via args or not
0 commit comments