diff options
| author | KyleMiles <krm504@nyu.edu> | 2022-01-27 22:43:28 -0500 |
|---|---|---|
| committer | KyleMiles <krm504@nyu.edu> | 2022-01-28 00:24:06 -0500 |
| commit | 6812c973c9fa9b4ad642ab81856c05f87bd6fcc4 (patch) | |
| tree | dace4156d03148bcaf02df138ab4e0d93e61bc6f /examples/llil_parser/src/llil_parser.cpp | |
| parent | 519c9db22367f2659d1a54599fab47e6313be06e (diff) | |
Format All Files
Diffstat (limited to 'examples/llil_parser/src/llil_parser.cpp')
| -rw-r--r-- | examples/llil_parser/src/llil_parser.cpp | 240 |
1 files changed, 120 insertions, 120 deletions
diff --git a/examples/llil_parser/src/llil_parser.cpp b/examples/llil_parser/src/llil_parser.cpp index b7c96c22..d700e7ce 100644 --- a/examples/llil_parser/src/llil_parser.cpp +++ b/examples/llil_parser/src/llil_parser.cpp @@ -9,16 +9,16 @@ using namespace std; #ifndef _WIN32 -#include <libgen.h> -#include <dlfcn.h> + #include <libgen.h> + #include <dlfcn.h> static string GetPluginsDirectory() { Dl_info info; - if (!dladdr((void *)BNGetBundledPluginDirectory, &info)) + if (!dladdr((void*)BNGetBundledPluginDirectory, &info)) return NULL; stringstream ss; - ss << dirname((char *)info.dli_fname) << "/plugins/"; + ss << dirname((char*)info.dli_fname) << "/plugins/"; return ss.str(); } #else @@ -45,99 +45,99 @@ static void PrintOperation(BNLowLevelILOperation operation) switch (operation) { - ENUM_PRINTER(LLIL_NOP) - ENUM_PRINTER(LLIL_SET_REG) - ENUM_PRINTER(LLIL_SET_REG_SPLIT) - ENUM_PRINTER(LLIL_SET_FLAG) - ENUM_PRINTER(LLIL_LOAD) - ENUM_PRINTER(LLIL_STORE) - ENUM_PRINTER(LLIL_PUSH) - ENUM_PRINTER(LLIL_POP) - ENUM_PRINTER(LLIL_REG) - ENUM_PRINTER(LLIL_CONST) - ENUM_PRINTER(LLIL_CONST_PTR) - ENUM_PRINTER(LLIL_EXTERN_PTR) - ENUM_PRINTER(LLIL_FLAG) - ENUM_PRINTER(LLIL_FLAG_BIT) - ENUM_PRINTER(LLIL_ADD) - ENUM_PRINTER(LLIL_ADC) - ENUM_PRINTER(LLIL_SUB) - ENUM_PRINTER(LLIL_SBB) - ENUM_PRINTER(LLIL_AND) - ENUM_PRINTER(LLIL_OR) - ENUM_PRINTER(LLIL_XOR) - ENUM_PRINTER(LLIL_LSL) - ENUM_PRINTER(LLIL_LSR) - ENUM_PRINTER(LLIL_ASR) - ENUM_PRINTER(LLIL_ROL) - ENUM_PRINTER(LLIL_RLC) - ENUM_PRINTER(LLIL_ROR) - ENUM_PRINTER(LLIL_RRC) - ENUM_PRINTER(LLIL_MUL) - ENUM_PRINTER(LLIL_MULU_DP) - ENUM_PRINTER(LLIL_MULS_DP) - ENUM_PRINTER(LLIL_DIVU) - ENUM_PRINTER(LLIL_DIVU_DP) - ENUM_PRINTER(LLIL_DIVS) - ENUM_PRINTER(LLIL_DIVS_DP) - ENUM_PRINTER(LLIL_MODU) - ENUM_PRINTER(LLIL_MODU_DP) - ENUM_PRINTER(LLIL_MODS) - ENUM_PRINTER(LLIL_MODS_DP) - ENUM_PRINTER(LLIL_NEG) - ENUM_PRINTER(LLIL_NOT) - ENUM_PRINTER(LLIL_SX) - ENUM_PRINTER(LLIL_ZX) - ENUM_PRINTER(LLIL_LOW_PART) - ENUM_PRINTER(LLIL_JUMP) - ENUM_PRINTER(LLIL_JUMP_TO) - ENUM_PRINTER(LLIL_CALL) - ENUM_PRINTER(LLIL_CALL_STACK_ADJUST) - ENUM_PRINTER(LLIL_TAILCALL) - ENUM_PRINTER(LLIL_RET) - ENUM_PRINTER(LLIL_NORET) - ENUM_PRINTER(LLIL_IF) - ENUM_PRINTER(LLIL_GOTO) - ENUM_PRINTER(LLIL_FLAG_COND) - ENUM_PRINTER(LLIL_CMP_E) - ENUM_PRINTER(LLIL_CMP_NE) - ENUM_PRINTER(LLIL_CMP_SLT) - ENUM_PRINTER(LLIL_CMP_ULT) - ENUM_PRINTER(LLIL_CMP_SLE) - ENUM_PRINTER(LLIL_CMP_ULE) - ENUM_PRINTER(LLIL_CMP_SGE) - ENUM_PRINTER(LLIL_CMP_UGE) - ENUM_PRINTER(LLIL_CMP_SGT) - ENUM_PRINTER(LLIL_CMP_UGT) - ENUM_PRINTER(LLIL_TEST_BIT) - ENUM_PRINTER(LLIL_BOOL_TO_INT) - ENUM_PRINTER(LLIL_ADD_OVERFLOW) - ENUM_PRINTER(LLIL_SYSCALL) - ENUM_PRINTER(LLIL_BP) - ENUM_PRINTER(LLIL_TRAP) - ENUM_PRINTER(LLIL_UNDEF) - ENUM_PRINTER(LLIL_UNIMPL) - ENUM_PRINTER(LLIL_UNIMPL_MEM) - ENUM_PRINTER(LLIL_SET_REG_SSA) - ENUM_PRINTER(LLIL_SET_REG_SSA_PARTIAL) - ENUM_PRINTER(LLIL_SET_REG_SPLIT_SSA) - ENUM_PRINTER(LLIL_REG_SPLIT_DEST_SSA) - ENUM_PRINTER(LLIL_REG_SSA) - ENUM_PRINTER(LLIL_REG_SSA_PARTIAL) - ENUM_PRINTER(LLIL_SET_FLAG_SSA) - ENUM_PRINTER(LLIL_FLAG_SSA) - ENUM_PRINTER(LLIL_FLAG_BIT_SSA) - ENUM_PRINTER(LLIL_CALL_SSA) - ENUM_PRINTER(LLIL_SYSCALL_SSA) - ENUM_PRINTER(LLIL_TAILCALL_SSA) - ENUM_PRINTER(LLIL_CALL_PARAM) - ENUM_PRINTER(LLIL_CALL_STACK_SSA) - ENUM_PRINTER(LLIL_CALL_OUTPUT_SSA) - ENUM_PRINTER(LLIL_LOAD_SSA) - ENUM_PRINTER(LLIL_STORE_SSA) - ENUM_PRINTER(LLIL_REG_PHI) - ENUM_PRINTER(LLIL_FLAG_PHI) - ENUM_PRINTER(LLIL_MEM_PHI) + ENUM_PRINTER(LLIL_NOP) + ENUM_PRINTER(LLIL_SET_REG) + ENUM_PRINTER(LLIL_SET_REG_SPLIT) + ENUM_PRINTER(LLIL_SET_FLAG) + ENUM_PRINTER(LLIL_LOAD) + ENUM_PRINTER(LLIL_STORE) + ENUM_PRINTER(LLIL_PUSH) + ENUM_PRINTER(LLIL_POP) + ENUM_PRINTER(LLIL_REG) + ENUM_PRINTER(LLIL_CONST) + ENUM_PRINTER(LLIL_CONST_PTR) + ENUM_PRINTER(LLIL_EXTERN_PTR) + ENUM_PRINTER(LLIL_FLAG) + ENUM_PRINTER(LLIL_FLAG_BIT) + ENUM_PRINTER(LLIL_ADD) + ENUM_PRINTER(LLIL_ADC) + ENUM_PRINTER(LLIL_SUB) + ENUM_PRINTER(LLIL_SBB) + ENUM_PRINTER(LLIL_AND) + ENUM_PRINTER(LLIL_OR) + ENUM_PRINTER(LLIL_XOR) + ENUM_PRINTER(LLIL_LSL) + ENUM_PRINTER(LLIL_LSR) + ENUM_PRINTER(LLIL_ASR) + ENUM_PRINTER(LLIL_ROL) + ENUM_PRINTER(LLIL_RLC) + ENUM_PRINTER(LLIL_ROR) + ENUM_PRINTER(LLIL_RRC) + ENUM_PRINTER(LLIL_MUL) + ENUM_PRINTER(LLIL_MULU_DP) + ENUM_PRINTER(LLIL_MULS_DP) + ENUM_PRINTER(LLIL_DIVU) + ENUM_PRINTER(LLIL_DIVU_DP) + ENUM_PRINTER(LLIL_DIVS) + ENUM_PRINTER(LLIL_DIVS_DP) + ENUM_PRINTER(LLIL_MODU) + ENUM_PRINTER(LLIL_MODU_DP) + ENUM_PRINTER(LLIL_MODS) + ENUM_PRINTER(LLIL_MODS_DP) + ENUM_PRINTER(LLIL_NEG) + ENUM_PRINTER(LLIL_NOT) + ENUM_PRINTER(LLIL_SX) + ENUM_PRINTER(LLIL_ZX) + ENUM_PRINTER(LLIL_LOW_PART) + ENUM_PRINTER(LLIL_JUMP) + ENUM_PRINTER(LLIL_JUMP_TO) + ENUM_PRINTER(LLIL_CALL) + ENUM_PRINTER(LLIL_CALL_STACK_ADJUST) + ENUM_PRINTER(LLIL_TAILCALL) + ENUM_PRINTER(LLIL_RET) + ENUM_PRINTER(LLIL_NORET) + ENUM_PRINTER(LLIL_IF) + ENUM_PRINTER(LLIL_GOTO) + ENUM_PRINTER(LLIL_FLAG_COND) + ENUM_PRINTER(LLIL_CMP_E) + ENUM_PRINTER(LLIL_CMP_NE) + ENUM_PRINTER(LLIL_CMP_SLT) + ENUM_PRINTER(LLIL_CMP_ULT) + ENUM_PRINTER(LLIL_CMP_SLE) + ENUM_PRINTER(LLIL_CMP_ULE) + ENUM_PRINTER(LLIL_CMP_SGE) + ENUM_PRINTER(LLIL_CMP_UGE) + ENUM_PRINTER(LLIL_CMP_SGT) + ENUM_PRINTER(LLIL_CMP_UGT) + ENUM_PRINTER(LLIL_TEST_BIT) + ENUM_PRINTER(LLIL_BOOL_TO_INT) + ENUM_PRINTER(LLIL_ADD_OVERFLOW) + ENUM_PRINTER(LLIL_SYSCALL) + ENUM_PRINTER(LLIL_BP) + ENUM_PRINTER(LLIL_TRAP) + ENUM_PRINTER(LLIL_UNDEF) + ENUM_PRINTER(LLIL_UNIMPL) + ENUM_PRINTER(LLIL_UNIMPL_MEM) + ENUM_PRINTER(LLIL_SET_REG_SSA) + ENUM_PRINTER(LLIL_SET_REG_SSA_PARTIAL) + ENUM_PRINTER(LLIL_SET_REG_SPLIT_SSA) + ENUM_PRINTER(LLIL_REG_SPLIT_DEST_SSA) + ENUM_PRINTER(LLIL_REG_SSA) + ENUM_PRINTER(LLIL_REG_SSA_PARTIAL) + ENUM_PRINTER(LLIL_SET_FLAG_SSA) + ENUM_PRINTER(LLIL_FLAG_SSA) + ENUM_PRINTER(LLIL_FLAG_BIT_SSA) + ENUM_PRINTER(LLIL_CALL_SSA) + ENUM_PRINTER(LLIL_SYSCALL_SSA) + ENUM_PRINTER(LLIL_TAILCALL_SSA) + ENUM_PRINTER(LLIL_CALL_PARAM) + ENUM_PRINTER(LLIL_CALL_STACK_SSA) + ENUM_PRINTER(LLIL_CALL_OUTPUT_SSA) + ENUM_PRINTER(LLIL_LOAD_SSA) + ENUM_PRINTER(LLIL_STORE_SSA) + ENUM_PRINTER(LLIL_REG_PHI) + ENUM_PRINTER(LLIL_FLAG_PHI) + ENUM_PRINTER(LLIL_MEM_PHI) default: printf("<invalid operation %" PRId32 ">", operation); break; @@ -149,20 +149,20 @@ static void PrintFlagCondition(BNLowLevelILFlagCondition cond) { switch (cond) { - ENUM_PRINTER(LLFC_E) - ENUM_PRINTER(LLFC_NE) - ENUM_PRINTER(LLFC_SLT) - ENUM_PRINTER(LLFC_ULT) - ENUM_PRINTER(LLFC_SLE) - ENUM_PRINTER(LLFC_ULE) - ENUM_PRINTER(LLFC_SGE) - ENUM_PRINTER(LLFC_UGE) - ENUM_PRINTER(LLFC_SGT) - ENUM_PRINTER(LLFC_UGT) - ENUM_PRINTER(LLFC_NEG) - ENUM_PRINTER(LLFC_POS) - ENUM_PRINTER(LLFC_O) - ENUM_PRINTER(LLFC_NO) + ENUM_PRINTER(LLFC_E) + ENUM_PRINTER(LLFC_NE) + ENUM_PRINTER(LLFC_SLT) + ENUM_PRINTER(LLFC_ULT) + ENUM_PRINTER(LLFC_SLE) + ENUM_PRINTER(LLFC_ULE) + ENUM_PRINTER(LLFC_SGE) + ENUM_PRINTER(LLFC_UGE) + ENUM_PRINTER(LLFC_SGT) + ENUM_PRINTER(LLFC_UGT) + ENUM_PRINTER(LLFC_NEG) + ENUM_PRINTER(LLFC_POS) + ENUM_PRINTER(LLFC_O) + ENUM_PRINTER(LLFC_NO) default: printf("<invalid condition>"); break; @@ -300,7 +300,7 @@ static void PrintILExpr(const LowLevelILInstruction& instr, size_t indent) } -int main(int argc, char *argv[]) +int main(int argc, char* argv[]) { if (argc != 2) { @@ -365,7 +365,7 @@ int main(int argc, char *argv[]) vector<InstructionTextToken> tokens; il->GetInstructionText(func, func->GetArchitecture(), instrIndex, tokens); printf(" %" PRIdPTR " @ 0x%" PRIx64 " ", instrIndex, instr.address); - for (auto& token: tokens) + for (auto& token : tokens) printf("%s", token.text.c_str()); printf("\n"); @@ -380,11 +380,11 @@ int main(int argc, char *argv[]) case LLIL_CONST_PTR: case LLIL_EXTERN_PTR: printf(" Found constant 0x%" PRIx64 "\n", expr.GetConstant()); - return false; // Done parsing this + return false; // Done parsing this default: break; } - return true; // Parse any subexpressions + return true; // Parse any subexpressions }); // Example of using the templated accessors for efficiently parsing load instructions @@ -395,20 +395,20 @@ int main(int argc, char *argv[]) if (expr.GetSourceExpr<LLIL_LOAD>().operation == LLIL_CONST_PTR) { printf(" Loading from address 0x%" PRIx64 "\n", - expr.GetSourceExpr<LLIL_LOAD>().GetConstant<LLIL_CONST_PTR>()); - return false; // Done parsing this + expr.GetSourceExpr<LLIL_LOAD>().GetConstant<LLIL_CONST_PTR>()); + return false; // Done parsing this } else if (expr.GetSourceExpr<LLIL_LOAD>().operation == LLIL_EXTERN_PTR) { printf(" Loading from address 0x%" PRIx64 "\n", - expr.GetSourceExpr<LLIL_LOAD>().GetConstant<LLIL_EXTERN_PTR>()); - return false; // Done parsing this + expr.GetSourceExpr<LLIL_LOAD>().GetConstant<LLIL_EXTERN_PTR>()); + return false; // Done parsing this } break; default: break; } - return true; // Parse any subexpressions + return true; // Parse any subexpressions }); } } |
