A super basic shellcode loader written in "OpenEdge Advanced Business Language", for when somehow the only method for code execution you found is through a niche business-oriented programming language.
This language offers a native construct to call functions exported from DLLs, so it is pretty trivial to run shellcode.
- Basic decoupling : memory protection and thread execution performed in different processes.
- The l33test form of IPC : the person running the program having to hardcode the target PID and address in the code.
- Zero (0) error handling.
- Zero (0) OPSEC: your shellcode is loaded unencrypted, base64-encoded, from a file directly on the filesystem.
- 64 bits only, for 32 bits just change all
INT64toUNSIGNED LONG, it should work.
- Edit
local.p, set the decoded shellcode size in bytes todwScSzand the path to the shellcode in the string below. - Edit
remote.p, set the decoded shellcode size in bytes todwScSz. - Run
local.p, it outputs a PID and a memory address. - Type the PID and address in
dwProcessIdandpRemoteAddressofremote.p(yes you have to type that long address manually, there's no copy there). - Run
remote.pin a second OpenEdge process. - Press any key in the
local.pwindow, your shellcode is running, congratulations.