diff options
Diffstat (limited to 'bruiser')
-rw-r--r-- | bruiser/bruiser-extra.h | 2 | ||||
-rw-r--r-- | bruiser/bruiser.cpp | 12 | ||||
-rw-r--r-- | bruiser/bruiserffi.c | 19 | ||||
-rw-r--r-- | bruiser/compile_commands.json | 175 | ||||
-rw-r--r-- | bruiser/executioner.h | 12 | ||||
-rw-r--r-- | bruiser/lua-scripts/demo1.lua | 15 | ||||
-rw-r--r-- | bruiser/lua-scripts/xobj.lua | 127 |
7 files changed, 171 insertions, 191 deletions
diff --git a/bruiser/bruiser-extra.h b/bruiser/bruiser-extra.h index ac02451..b834345 100644 --- a/bruiser/bruiser-extra.h +++ b/bruiser/bruiser-extra.h @@ -34,6 +34,7 @@ struct SigNames char *SigName; }; +#if 0 std::vector<SigNames> SignalNames = { {SIGHUP, (char*)"SIGHUP"}, @@ -67,6 +68,7 @@ std::vector<SigNames> SignalNames = {SIGWINCH, (char*)"SIGWINCH"}, {SIGIO, (char*)"SIGIO"} }; +#endif std::vector<std::string> BRUISR_COMMANDS = { diff --git a/bruiser/bruiser.cpp b/bruiser/bruiser.cpp index a052b64..e75b173 100644 --- a/bruiser/bruiser.cpp +++ b/bruiser/bruiser.cpp @@ -1066,7 +1066,7 @@ class LiveActionListArrays : public ASTFrontendAction class LuaWrapper { public: - LuaWrapper(ClangTool &__CT, Executioner& __EX) : CT(__CT), executioner(__EX) {} + LuaWrapper(ClangTool &__CT, Executioner& __EX, XGlobals __XG) : CT(__CT), executioner(__EX), xglobals(__XG) {} /*print out the history*/ int BruiserLuaHistory(lua_State* __ls) @@ -1396,12 +1396,15 @@ class LuaWrapper } int BruiserLuaXObjAllocGlobal(lua_State* __ls) { - int nuamrgs = lua_gettop(__ls); + int numargs = lua_gettop(__ls); + if (numargs != 2) {PRINT_WITH_COLOR_LB(RED, "expected exactly two args. did not get that.");} std::string glob_name = lua_tostring(__ls , 1); size_t size = lua_tointeger(__ls, 2); + xglobals.reserve(size); return 0; } - int BruiserLuaXObjAllocAllGlobals(lua_State* __ls) {return 0;} + + int BruiserLuaXObjAllocAllGlobals(lua_State* __ls) {} /*read the m0 report*/ int BruiserLuaM0(lua_State* __ls) @@ -1913,6 +1916,7 @@ class LuaWrapper private: ClangTool CT; Executioner executioner; + XGlobals xglobals; }; /**********************************************************************************************************************/ /**********************************************************************************************************************/ @@ -1958,7 +1962,7 @@ int main(int argc, const char **argv) { } /*initialize the LuaWrapper class so we can register and run them from lua.*/ - LuaWrapper LW(Tool, executioner); + LuaWrapper LW(Tool, executioner, xglobals); /*linenoise init*/ linenoiseSetCompletionCallback(bruiser::ShellCompletion); diff --git a/bruiser/bruiserffi.c b/bruiser/bruiserffi.c index 454e3d7..f43f7ec 100644 --- a/bruiser/bruiserffi.c +++ b/bruiser/bruiserffi.c @@ -26,6 +26,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.* #include <stdint.h> #include <stdio.h> #include <string.h> +#include <capstone/capstone.h> #include "bruiserffi.h" /**********************************************************************************************************************/ #define VOIDIFY(X) (void*)X @@ -36,15 +37,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.* X ffi_reinterpret_##X(void* result) {return (X)result;} #define X_LIST_GEN \ - X(uint8_t, "uint8_t")\ - X(uint16_t, "uint8_t")\ - X(uint32_t, "uint8_t")\ - X(uint64_t, "uint8_t")\ - X(int8_t, "uint8_t")\ - X(int16_t, "uint8_t")\ - X(int32_t, "uint8_t")\ - X(int64_t, "uint8_t")\ - X(uintptr_t, "uint8_t")\ + X(uint8_t, "for uint8_t")\ + X(uint16_t, "for uint16_t")\ + X(uint32_t, "for uint32_t")\ + X(uint64_t, "for uint64_t")\ + X(int8_t, "for int8_t")\ + X(int16_t, "for int16_t")\ + X(int32_t, "for int32_t")\ + X(int64_t, "for int64_t")\ + X(uintptr_t, "for pointers")\ #define X(X1,X2) REINTERPRET_GENERATOR(X1) X_LIST_GEN diff --git a/bruiser/compile_commands.json b/bruiser/compile_commands.json index e72faee..48605af 100644 --- a/bruiser/compile_commands.json +++ b/bruiser/compile_commands.json @@ -28,180 +28,5 @@ "command": "cc -c -o bruiserffi.o bruiserffi.c", "directory": "/home/bloodstalker/devi/hell2/bruiser", "file": "/home/bloodstalker/devi/hell2/bruiser/bruiserffi.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o lapi.o lapi.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/lapi.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o lcode.o lcode.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/lcode.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o lctype.o lctype.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/lctype.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o ldebug.o ldebug.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/ldebug.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o ldo.o ldo.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/ldo.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o ldump.o ldump.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/ldump.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o lfunc.o lfunc.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/lfunc.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o lgc.o lgc.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/lgc.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o llex.o llex.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/llex.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o lmem.o lmem.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/lmem.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o lobject.o lobject.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/lobject.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o lopcodes.o lopcodes.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/lopcodes.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o lparser.o lparser.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/lparser.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o lstate.o lstate.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/lstate.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o lstring.o lstring.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/lstring.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o ltable.o ltable.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/ltable.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o ltm.o ltm.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/ltm.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o lundump.o lundump.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/lundump.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o lvm.o lvm.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/lvm.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o lzio.o lzio.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/lzio.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o lauxlib.o lauxlib.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/lauxlib.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o lbaselib.o lbaselib.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/lbaselib.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o lbitlib.o lbitlib.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/lbitlib.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o lcorolib.o lcorolib.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/lcorolib.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o ldblib.o ldblib.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/ldblib.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o liolib.o liolib.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/liolib.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o lmathlib.o lmathlib.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/lmathlib.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o loslib.o loslib.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/loslib.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o lstrlib.o lstrlib.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/lstrlib.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o ltablib.o ltablib.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/ltablib.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o lutf8lib.o lutf8lib.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/lutf8lib.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o loadlib.o loadlib.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/loadlib.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o linit.o linit.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/linit.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o lua.o lua.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/lua.c" - }, - { - "command": "cc -c -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -o luac.o luac.c", - "directory": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src", - "file": "/home/bloodstalker/devi/hell2/bruiser/lua-5.3.4/src/luac.c" } ]
\ No newline at end of file diff --git a/bruiser/executioner.h b/bruiser/executioner.h index 4793915..3fe0fac 100644 --- a/bruiser/executioner.h +++ b/bruiser/executioner.h @@ -332,7 +332,17 @@ class Arguary { class XGlobals { public: XGlobals() {} - ~XGlobals() {} + ~XGlobals() { + for (auto &iter : globals) free(iter.first); + } + + void reserve(size_t size) { + globals.push_back(std::make_pair(malloc(size), size)); + } + + void* getAddressByIndex(int index) { + } + private: std::list<std::pair<void*, size_t>> globals; }; diff --git a/bruiser/lua-scripts/demo1.lua b/bruiser/lua-scripts/demo1.lua index 5ef6bd2..2e9cd56 100644 --- a/bruiser/lua-scripts/demo1.lua +++ b/bruiser/lua-scripts/demo1.lua @@ -15,6 +15,16 @@ elf_file = "../bfd/test/test.so" --elf_file = "../bfd/test/test" +function getGlobalTable() + local return_table = {} + local names = objload("elf_get_obj_names", elf_file, "symbol_list") + local sizes = objload("elf_get_obj_sizes", elf_file, "symbol_list") + for i=1,#names,1 do + return_table[names[i]] = sizes[i] + end + return return_table +end + function printObjNames() local c = objload("elf_get_obj_names", elf_file, "symbol_list") for k,v in ipairs(c) do @@ -191,12 +201,13 @@ function main() print("xcall returned:",a) if tostring(a) ~= tostring(666.666) then print("test failed") end + a=xcall(1,{"string"},"string","passthrough", {"i live!"}) + print("xcall returned:",a) + --a=xcall(4,{"sint32", "sint32", "sint32", "sint32"},"sint32",5, {10,20,30,40}) --print("xcall returned:",a) --if a ~= 100 then print("test failed") end - a=xcall(1,{"string"},"string","passthrough", {"i live!"}) - print("xcall returned:",a) end main() diff --git a/bruiser/lua-scripts/xobj.lua b/bruiser/lua-scripts/xobj.lua new file mode 100644 index 0000000..b69f0e5 --- /dev/null +++ b/bruiser/lua-scripts/xobj.lua @@ -0,0 +1,127 @@ +------------------------------------------------Project Mutator----------------------------------------------- +--Copyright (C) 2018 Farzad Sadeghi + +--This program is free software; you can redistribute it and/or +--modify it under the terms of the GNU General Public License +--as published by the Free Software Foundation; either version 2 +--of the License, or (at your option) any later version. + +--This program is distributed in the hope that it will be useful, +--but WITHOUT ANY WARRANTY; without even the implied warranty of +--MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +--GNU General Public License for more details. + +--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.*/ +-------------------------------------------------------------------------------------------------------------- +function getSO(so_path) + elf_file = so_path +end + +function getGlobalTable() + local return_table = {} + local names = objload("elf_get_obj_names", elf_file, "symbol_list") + local sizes = objload("elf_get_obj_sizes", elf_file, "symbol_list") + for i=1,#names,1 do + return_table[names[i]] = sizes[i] + end + return return_table +end + +function printObjNames() + local c = objload("elf_get_obj_names", elf_file, "symbol_list") + for k,v in ipairs(c) do + print(k,v) + end +end + +function printObjSizes() + local c = objload("elf_get_obj_sizes", elf_file, "symbol_list") + for k,v in ipairs(c) do + print(k,v) + end +end + +function printFuncNames() + local c = objload("elf_get_func_names", elf_file, "symbol_list") + for k,v in ipairs(c) do + print(k,v) + end +end + +function printFuncCode() + local c = objload("elf_get_func_code", elf_file, "code_list") + for k,v in ipairs(c) do + print(k,v) + if #v ~= 0 then + for k1,v1 in ipairs(v) do + io.write(string.format('%02x', v1), " ") + end + io.write("\n") + end + end +end + +function findMain() + local c = objload("elf_get_func_names", elf_file, "symbol_list") + for k,v in ipairs(c) do + if v == "'main'" then + io.write("main index is".." "..k.."\n") + return k + end + end +end + +function codeTables() + local return_table = {} + local func_name_table = objload("elf_get_func_names", elf_file, "symbol_list") + local code_table = objload("elf_get_func_code", elf_file, "code_list") + for i=1,#func_name_table,1 do + return_table[func_name_table[i]] = code_table[i] + end + return return_table +end + +function codeTableByName(name) + local return_table = {} + local func_name_table = objload("elf_get_func_names", elf_file, "symbol_list") + local code_table = objload("elf_get_func_code", elf_file, "code_list") + for k,v in ipairs(func_name_table) do + if v == name then + for k1, v1 in ipairs(code_table[k]) do + table.insert(return_table, string.format('%02x', v1)) + end + return return_table + end + end + return nil +end + +function codeTableByName_number(name) + local return_table = {} + local func_name_table = objload("elf_get_func_names", elf_file, "symbol_list") + local code_table = objload("elf_get_func_code", elf_file, "code_list") + for k,v in ipairs(func_name_table) do + if v == name then + for k1, v1 in ipairs(code_table[k]) do + table.insert(return_table, v1) + end + return return_table + end + end + return nil +end + +function printFuncSizes() + local func_name_table = objload("elf_get_func_names", elf_file, "symbol_list") + local code_table = objload("elf_get_func_code", elf_file, "code_list") + local counter = 1 + print("function sizes:") + for k, v in ipairs(code_table) do + print("code size for "..func_name_table[counter].." is".." "..#v) + counter = counter + 1 + end +end +-------------------------------------------------------------------------------------------------------------- + |