diff --git a/parser-library/CMakeLists.txt b/parser-library/CMakeLists.txt index 575191c..3d33544 100644 --- a/parser-library/CMakeLists.txt +++ b/parser-library/CMakeLists.txt @@ -1,2 +1,3 @@ add_library(parser-library + buffer.cpp parse.cpp) diff --git a/parser-library/buffer.cpp b/parser-library/buffer.cpp new file mode 100644 index 0000000..8d88f47 --- /dev/null +++ b/parser-library/buffer.cpp @@ -0,0 +1,15 @@ +#include "parse.h" + +using namespace boost; + +bool readByte(bounded_buffer *b, ::uint32_t offset, ::uint8_t &out) { + return false; +} + +bool readWord(bounded_buffer *b, ::uint32_t offset, ::uint16_t &out) { + return false; +} + +bool readDword(bounded_buffer *b, ::uint32_t offset, ::uint32_t &out) { + return false; +} diff --git a/parser-library/parse.h b/parser-library/parse.h index e1d6eac..a3d0463 100644 --- a/parser-library/parse.h +++ b/parser-library/parse.h @@ -7,6 +7,15 @@ typedef boost::uint32_t RVA; +typedef struct _bounded_buffer { + boost::uint8_t *bufBegin; + boost::uint32_t bufLen; +} bounded_buffer; + +bool readByte(bounded_buffer *b, boost::uint32_t offset, boost::uint8_t &out); +bool readWord(bounded_buffer *b, boost::uint32_t offset, boost::uint16_t &out); +bool readDword(bounded_buffer *b, boost::uint32_t offset, boost::uint32_t &out); + typedef struct _parsed_pe { std::string originalFilePath; } parsed_pe; @@ -29,4 +38,8 @@ void IterRelocs(parsed_pe *pe, iterReloc cb, void *cbd); typedef void (*iterRVA)(void *, RVA); void IterExpRVA(parsed_pe *pe, iterRVA cb, void *cbd); +//iterate over sections +typedef void (*iterSec)(void *, RVA secBase, std::string &, bounded_buffer *b); +void IterSec(parsed_pe *pe, iterSec cb, void *cbd); + #endif