Steps needed to build the POSIX meterpreter from scratch -------------------------------------------------------- 1) Build bionic libc you will need "jam" package for compiling. # cd external/source/meterpreter/source/bionic/libc # ARCH=x86 TOP=${PWD} jam ... lots of output ... # cd out/x86/ # sh make.sh .. makes dynamic library ... you now have a libbionic.so, copy to source/bionic/compiled/libc.so 2) Build bionic libm # cd external/source/meterpreter/source/bionic/libm # make -f msfMakefile ... lots of output ... you now have a libm.so, copy to source/bionic/compiled/ 3) Build bionic libdl # cd external/source/meterpreter/source/bionic/libdl # make copy libdl.so to source/bionic/compiled 4) Build openssl download openssl 0.9.8o Edit the Configure file. Locate "linux-elf line, duplicate it, s/-elf/-msf/, s/-ldl//, on the duplicate. # ./Configure threads no-zlib no-krb5 386 --prefix=/tmp/out linux-msf no-dlfcn shared ... # LIBC=/path/to/bionic/libc # LIBM=/path/to/bionic/libm # COMPILED=/path/to/bionic/compiled # make CC="gcc -I ${LIBC}/include -I ${LIBC}/kernel/common/linux/ -I ${LIBC}/kernel/common/ -I ${LIBC}/arch-x86/include/ -I ${LIBC}/kernel/arch-x86/ -I${LIBC}/private -fPIC -DPIC -nostdinc -nostdlib -Dwchar_t='char' -fno-builtin -D_SIZE_T_DECLARED -DElf_Size='u_int32_t' -I${LIBM}/include -L${COMPILED} -D_BYTE_ORDER=_LITTLE_ENDIAN -lc" depend clean all ... lots of compiling ... # cp libssl.so ${COMPILED} # cp libcrypto.so ${COMPILED} 5) Compile the common/support library code # cd external/source/meterpreter/workspace/common # make .. copy libsupport.so to source/bionic/compiled .. 6) Build the metsrv_main binary # cd external/source/meterpreter/workspace/metsrv # make You will need to generate a linker script, and set the location to 0x00040000. -Wl,-verbose >log , edit log for == == .. copy metsrv_main to source/bionic/compiled directory 7) Build the rtld binary (last step) # cd external/source/meterpreter/source/server/rtld # make test (make test will make msflinker, which you can use to test the meterpreter) 8) Compile the ext_server_stdapi # external/source/meterpreter/workspace/extensions/stdapi # make copy ext_server_stdapi.so to data/meterpreter/ext_server_stdai.lso <-- notice the .lso