Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to write and execute PURE machine code manually without containers like EXE or ELF?

Tags:

machine-code

I just need a hello world demo to see how machine code actually works.

Though windows' EXE and linux' ELF is near machine code,but it's not PURE

How can I write/execute PURE machine code?

like image 959
compiler Avatar asked Mar 11 '11 01:03

compiler


People also ask

Can you write machine code directly?

While it is possible to write programs directly in machine code, managing individual bits and calculating numerical addresses and constants manually is tedious and error-prone.

How can we execute the machine language?

Machine code or machine language is a set of instructions executed directly by a computer's central processing unit (CPU). Each instruction performs a very specific task, such as a load, a jump, or an ALU operation on a unit of data in a CPU register or memory.

What is pure machine code?

Pure Machine Code. Compilers may generate code for a particular machine, not assuming any operating system or library routines. This is “pure code” because it includes nothing beyond the instruction set.


1 Answers

You can write in PURE machine code manually WITHOUT ASSEMBLY

Linux/ELF: https://github.com/XlogicX/m2elf. This is still a work in progress, I just started working on this yesterday.

Source file for "Hello World" would look like this:

b8    21 0a 00 00   #moving "!\n" into eax a3    0c 10 00 06   #moving eax into first memory location b8    6f 72 6c 64   #moving "orld" into eax a3    08 10 00 06   #moving eax into next memory location b8    6f 2c 20 57   #moving "o, W" into eax a3    04 10 00 06   #moving eax into next memory location b8    48 65 6c 6c   #moving "Hell" into eax a3    00 10 00 06   #moving eax into next memory location b9    00 10 00 06   #moving pointer to start of memory location into ecx ba    10 00 00 00   #moving string size into edx bb    01 00 00 00   #moving "stdout" number to ebx b8    04 00 00 00   #moving "print out" syscall number to eax cd    80            #calling the linux kernel to execute our print to stdout b8    01 00 00 00   #moving "sys_exit" call number to eax cd    80            #executing it via linux sys_call 

WIN/MZ/PE:

shellcode2exe.py (takes asciihex shellcode and creates a legit MZ PE exe file) script location:

https://web.archive.org/web/20140725045200/http://zeltser.com/reverse-malware/shellcode2exe.py.txt

dependency:

https://github.com/radare/toys/tree/master/InlineEgg

extract

python setup.py build     sudo python setup.py install 
like image 193
XlogicX Avatar answered Sep 21 '22 09:09

XlogicX