From 4fff6246325825a62d7d4094ec77cf95086ac1f3 Mon Sep 17 00:00:00 2001 From: jvazquez-r7 Date: Tue, 26 Mar 2013 01:08:31 +0100 Subject: [PATCH] added initial support for ELF misple --- .../src/elf/exe/elf_mipsle_template.s | 40 ++++++++++++++++++ data/templates/template_mipsle_linux.bin | Bin 0 -> 84 bytes lib/msf/util/exe.rb | 12 ++++++ 3 files changed, 52 insertions(+) create mode 100755 data/templates/src/elf/exe/elf_mipsle_template.s create mode 100644 data/templates/template_mipsle_linux.bin diff --git a/data/templates/src/elf/exe/elf_mipsle_template.s b/data/templates/src/elf/exe/elf_mipsle_template.s new file mode 100755 index 0000000000..fabe250cb5 --- /dev/null +++ b/data/templates/src/elf/exe/elf_mipsle_template.s @@ -0,0 +1,40 @@ +; build with: +; nasm elf_mipsle_template.s -f bin -o template_mipsle_linux.bin + +BITS 32 + +org 0x004006a0 + +ehdr: ; Elf32_Ehdr + db 0x7F, "ELF", 1, 1, 1, 0 ; e_ident + db 0, 0, 0, 0, 0, 0, 0, 0 ; + dw 2 ; e_type = ET_EXEC for an executable + dw 0x8 ; e_machine = MIPS + dd 1 ; e_version + dd _start ; e_entry + dd phdr - $$ ; e_phoff + dd 0 ; e_shoff + dd 0 ; e_flags + dw ehdrsize ; e_ehsize + dw phdrsize ; e_phentsize + dw 1 ; e_phnum + dw 0 ; e_shentsize + dw 0 ; e_shnum + dw 0 ; e_shstrndx + +ehdrsize equ $ - ehdr + +phdr: ; Elf32_Phdr + dd 1 ; p_type = PT_LOAD + dd 0 ; p_offset + dd $$ ; p_vaddr + dd $$ ; p_paddr + dd 0xDEADBEEF ; p_filesz + dd 0xDEADBEEF ; p_memsz + dd 7 ; p_flags = rwx + dd 0x1000 ; p_align + +phdrsize equ $ - phdr + +_start: + diff --git a/data/templates/template_mipsle_linux.bin b/data/templates/template_mipsle_linux.bin new file mode 100644 index 0000000000000000000000000000000000000000..4659fe53666ba7e4fb0b76292d5387720a00f6b6 GIT binary patch literal 84 zcmb<-^>JflWMqH=CI$`$5bq0{1A_@n5J;OaD1gO5LNL_}fNDVa{l2yLK$smQDZs!0 E08Kj!d;kCd literal 0 HcmV?d00001 diff --git a/lib/msf/util/exe.rb b/lib/msf/util/exe.rb index 33a41ca7c3..e187bb415c 100755 --- a/lib/msf/util/exe.rb +++ b/lib/msf/util/exe.rb @@ -120,6 +120,13 @@ require 'digest/sha1' end # XXX: Add PPC OS X and Linux here end + + if(arch.index(ARCH_MIPSLE)) + if(plat.index(Msf::Module::Platform::Linux)) + return to_linux_mipsle_elf(framework, code) + end + # XXX: Add remaining MIPSLE systems here + end nil end @@ -710,6 +717,11 @@ require 'digest/sha1' return elf end + def self.to_linux_mipsle_elf(framework, code, opts={}) + elf = to_exe_elf(framework, opts, "template_mipsle_linux.bin", code) + return elf + end + def self.to_exe_vba(exes='') exe = exes.unpack('C*') vba = ""