diff options
Diffstat (limited to 'plugins/warp/api/warpcore.h')
| -rw-r--r-- | plugins/warp/api/warpcore.h | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/plugins/warp/api/warpcore.h b/plugins/warp/api/warpcore.h new file mode 100644 index 00000000..d12c6b98 --- /dev/null +++ b/plugins/warp/api/warpcore.h @@ -0,0 +1,143 @@ +#pragma once + +#ifndef BN_TYPE_PARSER +#ifdef __cplusplus +#include <cstdint> +#include <cstddef> +#include <cstdlib> +#else +#include <stdbool.h> +#include <stdint.h> +#include <stddef.h> +#include <stdlib.h> +#endif +#endif + +#ifdef __GNUC__ + #ifdef WARP_LIBRARY + #define WARP_FFI_API __attribute__((visibility("default"))) + #else // WARP_LIBRARY + #define WARP_FFI_API + #endif // WARP_LIBRARY +#else // __GNUC__ + #ifdef _MSC_VER + #ifndef DEMO_VERSION + #ifdef WARP_LIBRARY + #define WARP_FFI_API __declspec(dllexport) + #else // WARP_LIBRARY + #define WARP_FFI_API __declspec(dllimport) + #endif // WARP_LIBRARY + #else + #define WARP_FFI_API + #endif + #else // _MSC_VER + #define WARP_FFI_API + #endif // _MSC_VER +#endif // __GNUC__C + +#ifdef __cplusplus +extern "C" +{ +#endif + + typedef struct BNArchitecture BNArchitecture; + typedef struct BNBinaryView BNBinaryView; + typedef struct BNPlatform BNPlatform; + typedef struct BNBasicBlock BNBasicBlock; + typedef struct BNLowLevelILFunction BNLowLevelILFunction; + typedef struct BNFunction BNFunction; + typedef struct BNSymbol BNSymbol; + typedef struct BNType BNType; + + struct BNWARPUUID + { + uint8_t uuid[16]; + }; + + struct BNWARPFunctionComment + { + char* text; + int64_t offset; + }; + + char* BNWARPUUIDGetString(const BNWARPUUID* uuid); + bool BNWARPUUIDEqual(const BNWARPUUID* a, const BNWARPUUID* b); + void BNWARPFreeUUIDList(BNWARPUUID* uuids, size_t count); + + typedef BNWARPUUID BNWARPSource; + typedef BNWARPUUID BNWARPBasicBlockGUID; + typedef BNWARPUUID BNWARPConstraintGUID; + typedef BNWARPUUID BNWARPFunctionGUID; + typedef BNWARPUUID BNWARPTypeGUID; + + typedef struct BNWARPTarget BNWARPTarget; + typedef struct BNWARPContainer BNWARPContainer; + typedef struct BNWARPFunction BNWARPFunction; + typedef struct BNWARPConstraint BNWARPConstraint; + + struct BNWARPConstraint + { + BNWARPConstraintGUID guid; + int64_t offset; + }; + + WARP_FFI_API void BNWARPRunMatcher(BNBinaryView* view); + + WARP_FFI_API bool BNWARPGetBasicBlockGUID(BNBasicBlock* basicBlock, BNWARPBasicBlockGUID* result); + WARP_FFI_API bool BNWARPGetAnalysisFunctionGUID(BNFunction* analysisFunction, BNWARPFunctionGUID* result); + WARP_FFI_API bool BNWARPIsLiftedInstructionVariant(BNLowLevelILFunction* liftedFunction, size_t idx); + WARP_FFI_API bool BNWARPIsLiftedInstructionBlacklisted(BNLowLevelILFunction* liftedFunction, size_t idx); + + WARP_FFI_API BNWARPFunction* BNWARPGetFunction(BNFunction* analysisFunction); + WARP_FFI_API BNWARPFunction* BNWARPGetMatchedFunction(BNFunction* analysisFunction); + WARP_FFI_API BNWARPContainer** BNWARPGetContainers(size_t* count); + + WARP_FFI_API char* BNWARPContainerGetName(BNWARPContainer* container); + + WARP_FFI_API BNWARPSource* BNWARPContainerGetSources(BNWARPContainer* container, size_t* count); + WARP_FFI_API bool BNWARPContainerAddSource(BNWARPContainer* container, const char* sourcePath, BNWARPSource* result); + WARP_FFI_API bool BNWARPContainerCommitSource(BNWARPContainer* container, const BNWARPSource* source); + WARP_FFI_API bool BNWARPContainerIsSourceUncommitted(BNWARPContainer* container, const BNWARPSource* source); + WARP_FFI_API bool BNWARPContainerIsSourceWritable(BNWARPContainer* container, const BNWARPSource* source); + WARP_FFI_API char* BNWARPContainerGetSourcePath(BNWARPContainer* container, const BNWARPSource* source); + + WARP_FFI_API bool BNWARPContainerAddFunctions(BNWARPContainer* container, const BNWARPTarget* target, const BNWARPSource* source, BNWARPFunction** functions, size_t count); + WARP_FFI_API bool BNWARPContainerAddTypes(BNBinaryView* view, BNWARPContainer* container, const BNWARPSource* source, BNType** types, size_t count); + + WARP_FFI_API bool BNWARPContainerRemoveFunctions(BNWARPContainer* container, const BNWARPTarget* target, const BNWARPSource* source, BNWARPFunction** functions, size_t count); + WARP_FFI_API bool BNWARPContainerRemoveTypes(BNWARPContainer* container, const BNWARPSource* source, BNWARPTypeGUID* types, size_t count); + + WARP_FFI_API BNWARPSource* BNWARPContainerGetSourcesWithFunctionGUID(BNWARPContainer* container, const BNWARPTarget* target, const BNWARPFunctionGUID* guid, size_t* count); + WARP_FFI_API BNWARPSource* BNWARPContainerGetSourcesWithTypeGUID(BNWARPContainer* container, const BNWARPTypeGUID* guid, size_t* count); + WARP_FFI_API BNWARPFunction** BNWARPContainerGetFunctionsWithGUID(BNWARPContainer* container, const BNWARPTarget* target, const BNWARPSource* source, const BNWARPFunctionGUID* guid, size_t* count); + WARP_FFI_API BNType* BNWARPContainerGetTypeWithGUID(BNArchitecture* arch, BNWARPContainer* container, const BNWARPSource* source, const BNWARPTypeGUID* guid); + WARP_FFI_API BNWARPTypeGUID* BNWARPContainerGetTypeGUIDsWithName(BNWARPContainer* container, const BNWARPSource* source, const char* name, size_t* count); + + WARP_FFI_API BNWARPContainer* BNWARPNewContainerReference(BNWARPContainer* container); + WARP_FFI_API void BNWARPFreeContainerReference(BNWARPContainer* container); + WARP_FFI_API void BNWARPFreeContainerList(BNWARPContainer** containers, size_t count); + + WARP_FFI_API void BNWARPFunctionApply(BNWARPFunction* function, BNFunction* analysisFunction); + WARP_FFI_API BNWARPFunctionGUID BNWARPFunctionGetGUID(BNWARPFunction* function); + WARP_FFI_API BNSymbol* BNWARPFunctionGetSymbol(BNWARPFunction* function, BNFunction* analysisFunction); + WARP_FFI_API char* BNWARPFunctionGetSymbolName(BNWARPFunction* function); + WARP_FFI_API BNType* BNWARPFunctionGetType(BNWARPFunction* function, BNFunction* analysisFunction); + WARP_FFI_API BNWARPConstraint* BNWARPFunctionGetConstraints(BNWARPFunction* function, size_t* count); + WARP_FFI_API BNWARPFunctionComment* BNWARPFunctionGetComments(BNWARPFunction* function, size_t* count); + WARP_FFI_API bool BNWARPFunctionsEqual(BNWARPFunction* functionA, BNWARPFunction* functionB); + + WARP_FFI_API void BNWARPFreeFunctionCommentList(BNWARPFunctionComment* comments, size_t count); + WARP_FFI_API void BNWARPFreeConstraintList(BNWARPConstraint* constraints, size_t count); + + WARP_FFI_API BNWARPFunction* BNWARPNewFunctionReference(BNWARPFunction* function); + WARP_FFI_API void BNWARPFreeFunctionReference(BNWARPFunction* function); + WARP_FFI_API void BNWARPFreeFunctionList(BNWARPFunction** functions, size_t count); + + WARP_FFI_API BNWARPTarget* BNWARPGetTarget(BNPlatform* platform); + + WARP_FFI_API BNWARPTarget* BNWARPNewTargetReference(BNWARPTarget* target); + WARP_FFI_API void BNWARPFreeTargetReference(BNWARPTarget* target); + +#ifdef __cplusplus +} +#endif |
