From 886cf65360c9efcc73632cad725d6fe6db4dcf5e Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Fri, 2 Mar 2018 02:00:12 +0330 Subject: some fixes for the jump table lua module --- bruiser/asm.sh | 5 ++++ bruiser/asmrewriter.c | 60 +++++++++++++++++++++++++++++++++-------------- bruiser/asmrewriter.h | 41 ++++++++++---------------------- bruiser/bruiser.cpp | 1 + bruiser/bruisercapstone.h | 2 +- bruiser/makefile | 2 +- 6 files changed, 63 insertions(+), 48 deletions(-) create mode 100755 bruiser/asm.sh (limited to 'bruiser') diff --git a/bruiser/asm.sh b/bruiser/asm.sh new file mode 100755 index 0000000..e45f022 --- /dev/null +++ b/bruiser/asm.sh @@ -0,0 +1,5 @@ +#!/bin/bash +cd $(dirname $0) +clang ./asmrewriter.c -llua -o asmrewriter +./asmrewriter || exit 1 +rm ./asmrewriter diff --git a/bruiser/asmrewriter.c b/bruiser/asmrewriter.c index 2bfdcf1..b677a1d 100644 --- a/bruiser/asmrewriter.c +++ b/bruiser/asmrewriter.c @@ -19,7 +19,9 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.*/ /**********************************************************************************************************************/ -#include "./lua-5.3.4/src/lua.hpp" +#include "./lua-5.3.4/src/lua.h" +#include "./lua-5.3.4/src/lauxlib.h" +#include "./lua-5.3.4/src/lualib.h" #include "./bruisercapstone.h" #include "./asmrewriter.h" @@ -27,38 +29,38 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.* /**********************************************************************************************************************/ static JMP_S_T* convert_jmpt(lua_State* __ls, int index) { JMP_S_T* dummy = (JMP_S_T*)lua_touserdata(__ls, index); - if (dummy == NULL) luaL_typerror(__ls, index, dummy); + //if (dummy == NULL) luaL_typerror(__ls, index, dummy); return dummy; } static JMP_S_T* check_jmpt(lua_State* __ls, int index) { JMP_S_T* dummy; luaL_checktype(__ls, index, LUA_TUSERDATA); - dummy = (JMP_S_T*)luaL_checkudata(__ls, index, JMP_S_T); - if (dummy == NULL) luaL_typerror(__ls, index, dummy); + dummy = (JMP_S_T*)luaL_checkudata(__ls, index, "jmp_s_t"); + //if (dummy == NULL) luaL_typerror(__ls, index, dummy); return dummy; } static JMP_S_T* push_jmpt(lua_State* __ls) { JMP_S_T* dummy = (JMP_S_T*)lua_newuserdata(__ls, sizeof(JMP_S_T)); - luaL_getmetatable(__ls, JMP_S_T); + luaL_getmetatable(__ls, "jmp_s_t"); lua_setmetatable(__ls, -2); return dummy; } static int new_jmpt(lua_State* __ls) { - JMP_T jmp_t = luaL_optint(__ls, 1, 0); - uint64_t location = luaL_optint(__ls, 2, 0); - uint8_t size = luaL_optint(__ls, 3, 0); + JMP_T jmp_t = luaL_optinteger(__ls, 1, 0); + uint64_t location = luaL_optinteger(__ls, 2, 0); + uint8_t size = luaL_optinteger(__ls, 3, 0); // // // - uint64_t address = luaL_optint(__ls, 7, 0); - uint64_t address_y = luaL_optint(__ls, 8, 0); - uint64_t address_n = luaL_optint(__ls, 9, 0); - unsigned char y = luaL_optint(__ls, 10, 0); - unsigned char n = luaL_optint(__ls, 11, 0); - unsigned char z = luaL_optint(__ls, 12, 0); + uint64_t address = luaL_optinteger(__ls, 7, 0); + uint64_t address_y = luaL_optinteger(__ls, 8, 0); + uint64_t address_n = luaL_optinteger(__ls, 9, 0); + unsigned char y = luaL_optinteger(__ls, 10, 0); + unsigned char n = luaL_optinteger(__ls, 11, 0); + unsigned char z = luaL_optinteger(__ls, 12, 0); JMP_S_T* dummy = push_jmpt(__ls); dummy->type = jmp_t; dummy->location = location; @@ -96,7 +98,7 @@ static int jmpt_custom(lua_State* __ls) { #define SET_GENERATOR(X) \ static int jmpt_set_##X(lua_State* __ls) {\ JMP_S_T* dummy = check_jmpt(__ls,1);\ - dummy->type = luaL_checkint(__ls, 2);\ + dummy->type = luaL_checkinteger(__ls, 2);\ lua_settop(__ls, 1);\ return 1;\ } @@ -124,10 +126,32 @@ static int jmpt_set_next_n(lua_State* __ls) {} static int jmpt_gc(lua_State* __ls) {} +static const luaL_Reg jmpt_methods[] = { + {"new", new_jmpt}, + {"set_type", jmpt_set_type}, + {"set_location", jmpt_set_location}, + {"set_size", jmpt_set_size}, + {"set_address", jmpt_set_address}, + {"set_address_y", jmpt_set_address_y}, + {"set_address_n", jmpt_set_address_n}, + {"set_next", jmpt_set_next}, + {"set_next_y", jmpt_set_next_y}, + {"set_next_n", jmpt_set_next_n}, + {"set_y", jmpt_set_y}, + {"set_n", jmpt_set_n}, + {"set_z", jmpt_set_z}, + {0,0} +}; + +static const luaL_Reg jmpt_meta[] = { + {"__gc", jmpt_gc}, + {0, 0} +}; + int jmpt_register(lua_State* __ls) { - luaL_openlib(__ls, JMP_S_T, jmpt_methods, 0); - luaL_newmetatable(__ls, JMP_S_T); - luaL_openlib(__ls, 0, jmpt_meta, 0); + luaL_newlib(__ls, jmpt_methods); + luaL_newmetatable(__ls, "jmp_s_t"); + luaL_newlib(__ls, jmpt_meta); lua_pushliteral(__ls, "__index"); lua_pushvalue(__ls, -3); lua_rawset(__ls, -3); diff --git a/bruiser/asmrewriter.h b/bruiser/asmrewriter.h index ce28dcd..048b6ec 100644 --- a/bruiser/asmrewriter.h +++ b/bruiser/asmrewriter.h @@ -1,5 +1,4 @@ - /***************************************************Project Mutator****************************************************/ /*first line intentionally left blank.*/ /*bruiser's lua asmrewriter implementation for jump tables*/ @@ -19,7 +18,12 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.*/ /**********************************************************************************************************************/ -#include "./lua-5.3.4/src/lua.hpp" +#ifdef __cplusplus +extern "C" { +#endif +#include "./lua-5.3.4/src/lua.h" +#include "./lua-5.3.4/src/lauxlib.h" +#include "./lua-5.3.4/src/lualib.h" #include "./bruisercapstone.h" #include @@ -53,36 +57,17 @@ X_LIST_GEN #undef X_LIST_GEN #undef SET_GENERATOR -static int jmpt_set_next(lua_State* __ls) {} -static int jmpt_set_next_y(lua_State* __ls) {} -static int jmpt_set_next_n(lua_State* __ls) {} +static int jmpt_set_next(lua_State* __ls); +static int jmpt_set_next_y(lua_State* __ls); +static int jmpt_set_next_n(lua_State* __ls); -static const luaL_reg jmpt_methods[] = { - {"new", new_jmpt}, - {"set_type", jmpt_set_type}, - {"set_location", jmpt_set_location}, - {"set_size", jmpt_set_size}, - {"set_address", jmpt_set_address}, - {"set_address_y", jmpt_set_address_y}, - {"set_address_n", jmpt_set_address_n}, - {"set_next", jmpt_set_next}, - {"set_next_y", jmpt_set_next_y}, - {"set_next_n", jmpt_set_next_n}, - {"set_y", jmpt_set_y}, - {"set_n", jmpt_set_n}, - {"set_z", jmpt_set_z}, - {0,0} -}; +static int jmpt_gc(lua_State* __ls); -static int jmpt_gc(lua_State* __ls) {} +int jmpt_register(lua_State* __ls); -static const luaL_reg jmpt_meta[] = { - {"__gc", jmpt_gc}, - {0, 0} +#endif +#ifdef __cplusplus } - -int jmpt_register(lua_State* __ls) { - #endif /**********************************************************************************************************************/ /*last line intentionally left blank.*/ diff --git a/bruiser/bruiser.cpp b/bruiser/bruiser.cpp index e6a3520..6056da8 100644 --- a/bruiser/bruiser.cpp +++ b/bruiser/bruiser.cpp @@ -29,6 +29,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.* #include "executioner.h" #include "bruiserffi.h" #include "bruisercapstone.h" +#include "asmrewriter.h" /*standard headers*/ #include #include diff --git a/bruiser/bruisercapstone.h b/bruiser/bruisercapstone.h index d10db70..13ed37f 100644 --- a/bruiser/bruisercapstone.h +++ b/bruiser/bruisercapstone.h @@ -46,7 +46,7 @@ struct jmp_s_t { bool y; bool n; bool z; -}; +}jmp_s_t; #define JMP_S_T struct jmp_s_t JMP_S_T* iter_next(JMP_S_T* arg); JMP_S_T* iter_next_y(JMP_S_T* arg); diff --git a/bruiser/makefile b/bruiser/makefile index a50faf4..b429ae7 100644 --- a/bruiser/makefile +++ b/bruiser/makefile @@ -50,7 +50,7 @@ $(LIB_LUA_JIT): $(MAKE) -C LuaJIT @echo "building with jit" -$(BRUISER): $(BRUISER).o ../mutator_aux.o ../tinyxml2/tinyxml2.o linenoise.o CompletionHints.o mutagen.o ORCmutation.o bruiserffi.o bruisercapstone.o $(LIB_LUA) +$(BRUISER): $(BRUISER).o ../mutator_aux.o ../tinyxml2/tinyxml2.o linenoise.o CompletionHints.o mutagen.o ORCmutation.o bruiserffi.o bruisercapstone.o asmrewriter.o $(LIB_LUA) $(CXX) $^ $(LD_FLAGS) -o $@ clean: -- cgit v1.2.3