aboutsummaryrefslogtreecommitdiff
path: root/core/script.h
diff options
context:
space:
mode:
authorjmpoep <OriginalEntryPoint@qq.com>2023-12-07 16:51:07 +0800
committerjmpoep <OriginalEntryPoint@qq.com>2023-12-07 16:51:07 +0800
commit28008a746a31abb7909dd86cb0cd413ac8943b0b (patch)
treea30b74b8cad548048c3c1551d652828ab76fa9bd /core/script.h
downloadvmprotect-3.5.1-master.tar
vmprotect-3.5.1-master.tar.gz
vmprotect-3.5.1-master.tar.bz2
vmprotect-3.5.1-master.zip
first commitHEADmaster
Diffstat (limited to 'core/script.h')
-rw-r--r--core/script.h1734
1 files changed, 1734 insertions, 0 deletions
diff --git a/core/script.h b/core/script.h
new file mode 100644
index 0000000..c118524
--- /dev/null
+++ b/core/script.h
@@ -0,0 +1,1734 @@
+#ifndef SCRIPT_H
+#define SCRIPT_H
+
+#include "../third-party/lua/lua.hpp"
+#include "../third-party/libffi/ffi.h"
+
+#ifndef VMP_GNU
+#ifdef _WIN64
+#if NDEBUG
+#pragma comment(lib, "../third-party/libffi/libffi64.lib")
+#else
+#pragma comment(lib, "../third-party/libffi/libffi64d.lib")
+#endif // NDEBUG
+#else
+#if NDEBUG
+#pragma comment(lib, "../third-party/libffi/libffi32.lib")
+#else
+#pragma comment(lib, "../third-party/libffi/libffi32d.lib")
+#endif // NDEBUG
+#endif // _WIN64
+#endif // VMP_GNU
+
+class Core;
+
+class Script : public IObject
+{
+public:
+ Script(Core *owner);
+ ~Script();
+ void clear() { text_.clear(); }
+ std::string text() const { return text_; }
+ bool need_compile() const { return need_compile_; }
+ void set_text(const std::string &text) { text_ = text; }
+ void set_need_compile(bool need_compile);
+ void DoBeforeCompilation();
+ void DoAfterCompilation();
+ void DoBeforeSaveFile();
+ void DoAfterSaveFile();
+ void DoBeforePackFile();
+ static Core *core() { return core_; }
+ bool Compile();
+ bool LoadFromFile(const std::string &file_name);
+private:
+ void ExecuteFunction(const std::string &func_name);
+ void close();
+ void ShowError();
+ static Core *core_;
+ lua_State *state_;
+ std::string text_;
+ bool need_compile_;
+};
+
+class Uint64Binder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "uint64"; }
+private:
+ static int add(lua_State *L);
+ static int sub(lua_State *L);
+ static int mul(lua_State *L);
+ static int div(lua_State *L);
+ static int mod(lua_State *L);
+ static int pow(lua_State *L);
+ static int unm(lua_State *L);
+ static int eq(lua_State *L);
+ static int lt(lua_State *L);
+ static int le(lua_State *L);
+ static int _new(lua_State *L);
+ static int tostring(lua_State *L);
+};
+
+class FFILibrary : public IObject
+{
+public:
+ FFILibrary(const std::string &name);
+ ~FFILibrary();
+ void close();
+ HMODULE value() const { return value_; }
+ std::string name() const { return name_; }
+private:
+ HMODULE value_;
+ std::string name_;
+};
+
+class FFIFunction : public IObject
+{
+public:
+ FFIFunction(HMODULE module, const std::string &name);
+ void *value() const { return value_; }
+ std::string name() const { return name_; }
+ int ret() const { return ret_; }
+ void set_ret(int ret) { ret_ = ret; }
+ void set_abi(int abi) { abi_ = abi; }
+ void add_param(int param) { params_.push_back(param); }
+ ffi_status Prepare();
+ void Call(void *ret, void **args);
+ std::vector<int> params() const { return params_; }
+private:
+ std::string name_;
+ void *value_;
+ int ret_;
+ int abi_;
+ std::vector<int> params_;
+ ffi_cif cif_;
+ ffi_type *ffi_ret_;
+ std::vector<ffi_type *> ffi_params_;
+};
+
+class FFILibraryBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "FFILibrary"; }
+private:
+ static int tostring(lua_State *state);
+ static int close(lua_State *state);
+ static int gc(lua_State *state);
+ static int get_function(lua_State *state);
+ static int address(lua_State *state);
+};
+
+class FFIFunctionBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "FFIFunction"; }
+private:
+ static int tostring(lua_State *state);
+ static int gc(lua_State *state);
+ static int address(lua_State *state);
+ static int call(lua_State *state);
+};
+
+class OperandTypeBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *enum_name() { return "OperandType"; }
+};
+
+class OperandSizeBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *enum_name() { return "OperandSize"; }
+};
+
+class ObjectTypeBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *enum_name() { return "ObjectType"; }
+};
+
+class CommandOptionBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *enum_name() { return "CommandOption"; }
+};
+
+class FoldersBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "Folders"; }
+private:
+ static int count(lua_State *state);
+ static int item(lua_State *state);
+ static int add(lua_State *state);
+ static int clear(lua_State *state);
+};
+
+class FolderBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "Folder"; }
+private:
+ static int count(lua_State *state);
+ static int item(lua_State *state);
+ static int add(lua_State *state);
+ static int clear(lua_State *state);
+ static int name(lua_State *state);
+ static int destroy(lua_State *state);
+};
+
+class PEFileBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "PEFile"; }
+private:
+ static int name(lua_State *state);
+ static int format(lua_State *state);
+ static int size(lua_State *state);
+ static int seek(lua_State *state);
+ static int tell(lua_State *state);
+ static int write(lua_State *state);
+ static int count(lua_State *state);
+ static int item(lua_State *state);
+ static int flush(lua_State *state);
+ static int read(lua_State *state);
+};
+
+class PEArchitectureBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "PEArchitecture"; }
+private:
+ static int segments(lua_State *state);
+ static int sections(lua_State *state);
+ static int name(lua_State *state);
+ static int file(lua_State *state);
+ static int entry_point(lua_State *state);
+ static int image_base(lua_State *state);
+ static int cpu_address_size(lua_State *state);
+ static int dll_characteristics(lua_State *state);
+ static int size(lua_State *state);
+ static int functions(lua_State *state);
+ static int directories(lua_State *state);
+ static int imports(lua_State *state);
+ static int exports(lua_State *state);
+ static int resources(lua_State *state);
+ static int fixups(lua_State *state);
+ static int map_functions(lua_State *state);
+ static int folders(lua_State *state);
+ static int address_seek(lua_State *state);
+ static int seek(lua_State *state);
+ static int tell(lua_State *state);
+ static int write(lua_State *state);
+ static int read(lua_State *state);
+};
+
+class PESegmentsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "PESegments"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int GetItemByAddress(lua_State *state);
+ static int GetItemByName(lua_State *state);
+};
+
+class PESegmentBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "PESegment"; }
+private:
+ static int size(lua_State *state);
+ static int address(lua_State *state);
+ static int name(lua_State *state);
+ static int set_name(lua_State *state);
+ static int physical_offset(lua_State *state);
+ static int physical_size(lua_State *state);
+ static int flags(lua_State *state);
+ static int excluded_from_packing(lua_State *state);
+ static int destroy(lua_State *state);
+};
+
+class PESectionsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "PESections"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int GetItemByAddress(lua_State *state);
+};
+
+class PESectionBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "PESection"; }
+private:
+ static int size(lua_State *state);
+ static int address(lua_State *state);
+ static int name(lua_State *state);
+ static int offset(lua_State *state);
+ static int segment(lua_State *state);
+};
+
+class PEDirectoriesBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "PEDirectories"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int GetItemByType(lua_State *state);
+};
+
+class PEDirectoryBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "PEDirectory"; }
+private:
+ static int size(lua_State *state);
+ static int address(lua_State *state);
+ static int name(lua_State *state);
+ static int type(lua_State *state);
+ static int set_size(lua_State *state);
+ static int set_address(lua_State *state);
+ static int clear(lua_State *state);
+};
+
+class PEFormatBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *enum_name() { return "PE"; }
+};
+
+class PEImportsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "PEImports"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int GetItemByName(lua_State *state);
+};
+
+class PEImportBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "PEImport"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int name(lua_State *state);
+ static int is_sdk(lua_State *state);
+ static int set_name(lua_State *state);
+};
+
+class PEImportFunctionBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "PEImportFunction"; }
+private:
+ static int address(lua_State *state);
+ static int name(lua_State *state);
+ static int type(lua_State *state);
+};
+
+class APITypeBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *enum_name() { return "APIType"; }
+};
+
+class PEExportsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "PEExports"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int clear(lua_State *state);
+ static int Delete(lua_State *state);
+ static int name(lua_State *state);
+ static int set_name(lua_State *state);
+ static int GetItemByAddress(lua_State *state);
+ static int GetItemByName(lua_State *state);
+};
+
+class PEExportBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "PEExport"; }
+private:
+ static int address(lua_State *state);
+ static int name(lua_State *state);
+ static int set_name(lua_State *state);
+ static int ordinal(lua_State *state);
+ static int forwarded_name(lua_State *state);
+ static int destroy(lua_State *state);
+};
+
+class PEResourcesBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "PEResources"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int clear(lua_State *state);
+ static int GetItemByName(lua_State *state);
+ static int GetItemByType(lua_State *state);
+};
+
+class PEResourceBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "PEResource"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int clear(lua_State *state);
+ static int address(lua_State *state);
+ static int size(lua_State *state);
+ static int name(lua_State *state);
+ static int type(lua_State *state);
+ static int is_directory(lua_State *state);
+ static int destroy(lua_State *state);
+ static int GetItemByName(lua_State *state);
+ static int excluded_from_packing(lua_State *state);
+ static int set_excluded_from_packing(lua_State *state);
+};
+
+class PEFixupsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "PEFixups"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int IndexOf(lua_State *state);
+ static int GetItemByAddress(lua_State *state);
+};
+
+class PEFixupBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "PEFixup"; }
+private:
+ static int address(lua_State *state);
+ static int set_deleted(lua_State *state);
+};
+
+class MacFileBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "MacFile"; }
+private:
+ static int name(lua_State *state);
+ static int format(lua_State *state);
+ static int size(lua_State *state);
+ static int seek(lua_State *state);
+ static int tell(lua_State *state);
+ static int write(lua_State *state);
+ static int count(lua_State *state);
+ static int item(lua_State *state);
+ static int flush(lua_State *state);
+ static int read(lua_State *state);
+};
+
+class MacArchitectureBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "MacArchitecture"; }
+private:
+ static int segments(lua_State *state);
+ static int sections(lua_State *state);
+ static int name(lua_State *state);
+ static int file(lua_State *state);
+ static int entry_point(lua_State *state);
+ static int image_base(lua_State *state);
+ static int cpu_address_size(lua_State *state);
+ static int size(lua_State *state);
+ static int functions(lua_State *state);
+ static int commands(lua_State *state);
+ static int symbols(lua_State *state);
+ static int imports(lua_State *state);
+ static int exports(lua_State *state);
+ static int fixups(lua_State *state);
+ static int map_functions(lua_State *state);
+ static int folders(lua_State *state);
+ static int address_seek(lua_State *state);
+ static int seek(lua_State *state);
+ static int tell(lua_State *state);
+ static int write(lua_State *state);
+ static int read(lua_State *state);
+};
+
+class MacSegmentsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "MacSegments"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int GetItemByAddress(lua_State *state);
+};
+
+class MacSegmentBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "MacSegment"; }
+private:
+ static int size(lua_State *state);
+ static int address(lua_State *state);
+ static int name(lua_State *state);
+ static int physical_offset(lua_State *state);
+ static int physical_size(lua_State *state);
+ static int flags(lua_State *state);
+ static int excluded_from_packing(lua_State *state);
+};
+
+class MacSectionsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "MacSections"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int GetItemByAddress(lua_State *state);
+};
+
+class MacSectionBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "MacSection"; }
+private:
+ static int size(lua_State *state);
+ static int address(lua_State *state);
+ static int name(lua_State *state);
+ static int offset(lua_State *state);
+ static int segment(lua_State *state);
+ static int destroy(lua_State *state);
+};
+
+class MacCommandsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "MacCommands"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int GetItemByType(lua_State *state);
+};
+
+class MacCommandBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "MacCommand"; }
+private:
+ static int size(lua_State *state);
+ static int address(lua_State *state);
+ static int name(lua_State *state);
+ static int type(lua_State *state);
+};
+
+class MacFormatBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *enum_name() { return "MachO"; }
+};
+
+class MacSymbolsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "MacSymbols"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+};
+
+class MacSymbolBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "MacSymbol"; }
+private:
+ static int value(lua_State *state);
+ static int name(lua_State *state);
+ static int sect(lua_State *state);
+ static int desc(lua_State *state);
+};
+
+class MacImportsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "MacImports"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int GetItemByName(lua_State *state);
+};
+
+class MacImportBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "MacImport"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int name(lua_State *state);
+ static int is_sdk(lua_State *state);
+ static int set_name(lua_State *state);
+};
+
+class MacImportFunctionBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "MacImportFunction"; }
+private:
+ static int address(lua_State *state);
+ static int name(lua_State *state);
+ static int type(lua_State *state);
+};
+
+class MacFixupsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "MacFixups"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int IndexOf(lua_State *state);
+ static int GetItemByAddress(lua_State *state);
+};
+
+class MacFixupBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "MacFixup"; }
+private:
+ static int address(lua_State *state);
+ static int set_deleted(lua_State *state);
+};
+
+class MacExportsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "MacExports"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int clear(lua_State *state);
+ static int Delete(lua_State *state);
+ static int name(lua_State *state);
+ static int set_name(lua_State *state);
+ static int GetItemByAddress(lua_State *state);
+ static int GetItemByName(lua_State *state);
+};
+
+class MacExportBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "MacExport"; }
+private:
+ static int address(lua_State *state);
+ static int name(lua_State *state);
+ static int forwarded_name(lua_State *state);
+ static int destroy(lua_State *state);
+};
+
+class ELFFileBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "ELFFile"; }
+private:
+ static int name(lua_State *state);
+ static int format(lua_State *state);
+ static int size(lua_State *state);
+ static int seek(lua_State *state);
+ static int tell(lua_State *state);
+ static int write(lua_State *state);
+ static int count(lua_State *state);
+ static int item(lua_State *state);
+ static int flush(lua_State *state);
+ static int read(lua_State *state);
+};
+
+class ELFArchitectureBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "ELFArchitecture"; }
+private:
+ static int segments(lua_State *state);
+ static int sections(lua_State *state);
+ static int name(lua_State *state);
+ static int file(lua_State *state);
+ static int entry_point(lua_State *state);
+ static int image_base(lua_State *state);
+ static int cpu_address_size(lua_State *state);
+ static int size(lua_State *state);
+ static int functions(lua_State *state);
+ static int directories(lua_State *state);
+ static int imports(lua_State *state);
+ static int exports(lua_State *state);
+ static int fixups(lua_State *state);
+ static int map_functions(lua_State *state);
+ static int folders(lua_State *state);
+ static int address_seek(lua_State *state);
+ static int seek(lua_State *state);
+ static int tell(lua_State *state);
+ static int write(lua_State *state);
+ static int read(lua_State *state);
+};
+
+class ELFFormatBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *enum_name() { return "ELF"; }
+};
+
+class ELFSegmentsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "ELFSegments"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int GetItemByAddress(lua_State *state);
+};
+
+class ELFSegmentBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "ELFSegment"; }
+private:
+ static int size(lua_State *state);
+ static int address(lua_State *state);
+ static int name(lua_State *state);
+ static int physical_offset(lua_State *state);
+ static int physical_size(lua_State *state);
+ static int flags(lua_State *state);
+ static int excluded_from_packing(lua_State *state);
+};
+
+class ELFSectionsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "ELFSections"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int GetItemByAddress(lua_State *state);
+};
+
+class ELFSectionBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "ELFSection"; }
+private:
+ static int size(lua_State *state);
+ static int address(lua_State *state);
+ static int name(lua_State *state);
+ static int offset(lua_State *state);
+ static int segment(lua_State *state);
+};
+
+class ELFDirectoriesBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "ELFDirectories"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int GetItemByType(lua_State *state);
+};
+
+class ELFDirectoryBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "ELFDirectory"; }
+private:
+ static int size(lua_State *state);
+ static int address(lua_State *state);
+ static int name(lua_State *state);
+ static int type(lua_State *state);
+};
+
+class ELFImportsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "ELFImports"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int GetItemByName(lua_State *state);
+};
+
+class ELFImportBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "ELFImport"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int name(lua_State *state);
+ static int is_sdk(lua_State *state);
+};
+
+class ELFImportFunctionBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "ELFImportFunction"; }
+private:
+ static int address(lua_State *state);
+ static int name(lua_State *state);
+ static int type(lua_State *state);
+};
+
+class ELFExportsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "ELFExports"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int clear(lua_State *state);
+ static int Delete(lua_State *state);
+ static int name(lua_State *state);
+ static int GetItemByAddress(lua_State *state);
+ static int GetItemByName(lua_State *state);
+};
+
+class ELFExportBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "ELFExport"; }
+private:
+ static int address(lua_State *state);
+ static int name(lua_State *state);
+ static int ordinal(lua_State *state);
+ static int forwarded_name(lua_State *state);
+ static int destroy(lua_State *state);
+};
+
+class ELFFixupsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "ELFFixups"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int IndexOf(lua_State *state);
+ static int GetItemByAddress(lua_State *state);
+};
+
+class ELFFixupBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "ELFFixup"; }
+private:
+ static int address(lua_State *state);
+ static int set_deleted(lua_State *state);
+};
+
+class NETArchitectureBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "NETArchitecture"; }
+private:
+ static int segments(lua_State *state);
+ static int sections(lua_State *state);
+ static int name(lua_State *state);
+ static int file(lua_State *state);
+ static int entry_point(lua_State *state);
+ static int image_base(lua_State *state);
+ static int cpu_address_size(lua_State *state);
+ static int size(lua_State *state);
+ static int functions(lua_State *state);
+ static int streams(lua_State *state);
+ static int imports(lua_State *state);
+ static int exports(lua_State *state);
+ static int map_functions(lua_State *state);
+ static int folders(lua_State *state);
+ static int address_seek(lua_State *state);
+ static int seek(lua_State *state);
+ static int tell(lua_State *state);
+ static int write(lua_State *state);
+ static int read(lua_State *state);
+};
+
+class NETFormatBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *enum_name() { return "NET"; }
+};
+
+class ILStream;
+class ILToken;
+
+class NETMetaDataBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "NETMetaData"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int heap(lua_State *state);
+ static void push_stream(lua_State *state, ILStream *stream);
+ static int table(lua_State *state);
+};
+
+class NETStreamBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "NETStream"; }
+private:
+ static int size(lua_State *state);
+ static int address(lua_State *state);
+ static int name(lua_State *state);
+};
+
+class NETHeapBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "NETHeap"; }
+private:
+ static int size(lua_State *state);
+ static int address(lua_State *state);
+ static int name(lua_State *state);
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int GetItemByType(lua_State *state);
+};
+
+class TokenTypeBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *enum_name() { return "TokenType"; }
+};
+
+class NETTableBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "NETTable"; }
+private:
+ static int type(lua_State *state);
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+};
+
+class NETTokenTypeBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *enum_name() { return "TokenType"; }
+};
+
+class NETTokenBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "NETToken"; }
+private:
+ static int id(lua_State *state);
+ static int type(lua_State *state);
+ static int value(lua_State *state);
+ static int can_rename(lua_State *state);
+ static int set_can_rename(lua_State *state);
+};
+
+class NETMethodsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "NETMethods"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+};
+
+class NETFieldsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "NETFields"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+};
+
+class NETTypeDefBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "NETTypeDef"; }
+private:
+ static int id(lua_State *state);
+ static int type(lua_State *state);
+ static int value(lua_State *state);
+ static int name_space(lua_State *state);
+ static int name(lua_State *state);
+ static int full_name(lua_State *state);
+ static int flags(lua_State *state);
+ static int declaring_type(lua_State *state);
+ static int base_type(lua_State *state);
+ static int method_list(lua_State *state);
+ static int field_list(lua_State *state);
+ static int set_namespace(lua_State *state);
+ static int set_name(lua_State *state);
+};
+
+class NETTypeRefBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "NETTypeRef"; }
+private:
+ static int id(lua_State *state);
+ static int type(lua_State *state);
+ static int value(lua_State *state);
+ static int name_space(lua_State *state);
+ static int name(lua_State *state);
+ static int full_name(lua_State *state);
+ static int resolution_scope(lua_State *state);
+};
+
+class NETAssemblyRefBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "NETAssemblyRef"; }
+private:
+ static int id(lua_State *state);
+ static int type(lua_State *state);
+ static int value(lua_State *state);
+ static int name(lua_State *state);
+ static int full_name(lua_State *state);
+};
+
+class NETParamsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "NETParams"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+};
+
+class NETMethodDefBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "NETMethodDef"; }
+private:
+ static int id(lua_State *state);
+ static int type(lua_State *state);
+ static int value(lua_State *state);
+ static int name(lua_State *state);
+ static int full_name(lua_State *state);
+ static int address(lua_State *state);
+ static int flags(lua_State *state);
+ static int impl_flags(lua_State *state);
+ static int parent(lua_State *state);
+ static int param_list(lua_State *state);
+ static int set_name(lua_State *state);
+};
+
+class NETFieldBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "NETField"; }
+private:
+ static int id(lua_State *state);
+ static int type(lua_State *state);
+ static int value(lua_State *state);
+ static int name(lua_State *state);
+ static int flags(lua_State *state);
+ static int declaring_type(lua_State *state);
+ static int set_name(lua_State *state);
+};
+
+class NETParamBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "NETParam"; }
+private:
+ static int id(lua_State *state);
+ static int type(lua_State *state);
+ static int value(lua_State *state);
+ static int name(lua_State *state);
+ static int parent(lua_State *state);
+ static int flags(lua_State *state);
+ static int set_name(lua_State *state);
+};
+
+class NETCustomAttributeBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "NETCustomAttribute"; }
+private:
+ static int id(lua_State *state);
+ static int type(lua_State *state);
+ static int value(lua_State *state);
+ static int parent(lua_State *state);
+ static int ref_type(lua_State *state);
+};
+
+class NETMemberRefBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "NETMemberRef"; }
+private:
+ static int id(lua_State *state);
+ static int type(lua_State *state);
+ static int value(lua_State *state);
+ static int declaring_type(lua_State *state);
+ static int name(lua_State *state);
+};
+
+class NETUserStringBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "NETUserString"; }
+private:
+ static int id(lua_State *state);
+ static int type(lua_State *state);
+ static int value(lua_State *state);
+ static int name(lua_State *state);
+};
+
+class NETImportBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "NETImport"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int name(lua_State *state);
+ static int is_sdk(lua_State *state);
+};
+
+class NETImportFunctionBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "NETImportFunction"; }
+private:
+ static int address(lua_State *state);
+ static int name(lua_State *state);
+ static int type(lua_State *state);
+};
+
+class NETImportsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "NETImports"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+};
+
+class NETExportsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "NETExports"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int clear(lua_State *state);
+ static int GetItemByAddress(lua_State *state);
+ static int GetItemByName(lua_State *state);
+};
+
+class NETExportBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "NETExport"; }
+private:
+ static int address(lua_State *state);
+ static int name(lua_State *state);
+};
+
+class ILFunctionsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "ILFunctions"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int clear(lua_State *state);
+ static int Delete(lua_State *state);
+ static int GetItemByAddress(lua_State *state);
+ static int GetItemByName(lua_State *state);
+ static int AddByAddress(lua_State *state);
+};
+
+class ILFunctionBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "ILFunction"; }
+private:
+ static int address(lua_State *state);
+ static int name(lua_State *state);
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int type(lua_State *state);
+ static int compilation_type(lua_State *state);
+ static int set_compilation_type(lua_State *state);
+ static int lock_to_key(lua_State *state);
+ static int set_lock_to_key(lua_State *state);
+ static int need_compile(lua_State *state);
+ static int set_need_compile(lua_State *state);
+ static int links(lua_State *state);
+ static int GetItemByAddress(lua_State *state);
+ static int IndexOf(lua_State *state);
+ static int destroy(lua_State *state);
+ static int info(lua_State *state);
+ static int ranges(lua_State *state);
+ static int x_proc(lua_State *state);
+ static int folder(lua_State *state);
+ static int set_folder(lua_State *state);
+};
+
+class ILCommandBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "ILCommand"; }
+private:
+ static int address(lua_State *state);
+ static int type(lua_State *state);
+ static int text(lua_State *state);
+ static int size(lua_State *state);
+ static int dump(lua_State *state);
+ static int link(lua_State *state);
+ static int operand_value(lua_State *state);
+ static int options(lua_State *state);
+ static int alignment(lua_State *state);
+ static int token_reference(lua_State *state);
+};
+
+class ILCommandTypeBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *enum_name() { return "ILCommandType"; }
+};
+
+class MapFunctionsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "MapFunctions"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int GetItemByAddress(lua_State *state);
+ static int GetItemByName(lua_State *state);
+};
+
+class MapFunctionBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "MapFunction"; }
+private:
+ static int address(lua_State *state);
+ static int size(lua_State *state);
+ static int name(lua_State *state);
+ static int type(lua_State *state);
+ static int references(lua_State *state);
+};
+
+class ReferencesBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "References"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int clear(lua_State *state);
+ static int Delete(lua_State *state);
+};
+
+class ReferenceBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "Reference"; }
+private:
+ static int address(lua_State *state);
+ static int operand_address(lua_State *state);
+ static int tag(lua_State *state);
+};
+
+class IntelFunctionsBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "IntelFunctions"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int clear(lua_State *state);
+ static int Delete(lua_State *state);
+ static int GetItemByAddress(lua_State *state);
+ static int GetItemByName(lua_State *state);
+ static int AddByAddress(lua_State *state);
+};
+
+class IntelFunctionBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "IntelFunction"; }
+private:
+ static int address(lua_State *state);
+ static int name(lua_State *state);
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int type(lua_State *state);
+ static int compilation_type(lua_State *state);
+ static int set_compilation_type(lua_State *state);
+ static int lock_to_key(lua_State *state);
+ static int set_lock_to_key(lua_State *state);
+ static int need_compile(lua_State *state);
+ static int set_need_compile(lua_State *state);
+ static int links(lua_State *state);
+ static int GetItemByAddress(lua_State *state);
+ static int IndexOf(lua_State *state);
+ static int destroy(lua_State *state);
+ static int info(lua_State *state);
+ static int ranges(lua_State *state);
+ static int x_proc(lua_State *state);
+ static int folder(lua_State *state);
+ static int set_folder(lua_State *state);
+};
+
+class CompilationTypeBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *enum_name() { return "CompilationType"; }
+};
+
+class CommandLinksBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "CommandLinks"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+};
+
+class AddressRangeBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "AddressRange"; }
+private:
+ static int begin(lua_State *state);
+ static int end(lua_State *state);
+ static int begin_entry(lua_State *state);
+ static int end_entry(lua_State *state);
+ static int size_entry(lua_State *state);
+};
+
+class UnwindOpcodesBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "UnwindOpcodes"; }
+private:
+ static int count(lua_State *state);
+ static int item(lua_State *state);
+};
+
+class FunctionInfoBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "FunctionInfo"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int begin(lua_State *state);
+ static int end(lua_State *state);
+ static int base_type(lua_State *state);
+ static int base_value(lua_State *state);
+ static int prolog_size(lua_State *state);
+ static int frame_registr(lua_State *state);
+ static int entry(lua_State *state);
+ static int unwind_opcodes(lua_State *state);
+ static int data_entry(lua_State *state);
+};
+
+class FunctionInfoListBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "FunctionInfoList"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int IndexOf(lua_State *state);
+};
+
+class IntelCommandBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "IntelCommand"; }
+private:
+ static int address(lua_State *state);
+ static int type(lua_State *state);
+ static int text(lua_State *state);
+ static int size(lua_State *state);
+ static int dump(lua_State *state);
+ static int link(lua_State *state);
+ static int flags(lua_State *state);
+ static int base_segment(lua_State *state);
+ static int operand(lua_State *state);
+ static int preffix(lua_State *state);
+ static int options(lua_State *state);
+ static int alignment(lua_State *state);
+ static int set_dump(lua_State *state);
+};
+
+class IntelOperandBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "IntelOperand"; }
+private:
+ static int type(lua_State *state);
+ static int size(lua_State *state);
+ static int registr(lua_State *state);
+ static int base_registr(lua_State *state);
+ static int scale(lua_State *state);
+ static int value(lua_State *state);
+ static int address_size(lua_State *state);
+ static int value_size(lua_State *state);
+ static int fixup(lua_State *state);
+ static int is_large_value(lua_State *state);
+};
+
+class IntelCommandTypeBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *enum_name() { return "IntelCommandType"; }
+};
+
+class IntelSegmentBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *enum_name() { return "IntelSegment"; }
+};
+
+class IntelFlagBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *enum_name() { return "IntelFlag"; }
+};
+
+class IntelRegistrBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *enum_name() { return "IntelRegistr"; }
+};
+
+class CommandLinkBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "CommandLink"; }
+private:
+ static int to_address(lua_State *state);
+ static int type(lua_State *state);
+ static int from(lua_State *state);
+ static int parent(lua_State *state);
+ static int operand(lua_State *state);
+ static int sub_value(lua_State *state);
+ static int base_function_info(lua_State *state);
+};
+
+class LinkTypeBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *enum_name() { return "LinkType"; }
+};
+
+class CoreBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "Core"; }
+private:
+ static int extract_file_path(lua_State *state);
+ static int extract_file_name(lua_State *state);
+ static int extract_file_ext(lua_State *state);
+ static int expand_environment_variables(lua_State *state);
+ static int set_environment_variable(lua_State *state);
+ static int command_line(lua_State *state);
+
+ static int input_file(lua_State *state);
+ static int input_file_name(lua_State *state);
+ static int output_file(lua_State *state);
+ static int output_file_name(lua_State *state);
+ static int set_output_file_name(lua_State *state);
+ static int project_file_name(lua_State *state);
+ static int instance(lua_State* state);
+ static int watermarks(lua_State *state);
+ static int watermark_name(lua_State *state);
+ static int set_watermark_name(lua_State *state);
+ static int options(lua_State *state);
+ static int set_options(lua_State *state);
+ static int vm_section_name(lua_State *state);
+ static int set_vm_section_name(lua_State *state);
+ static int save_project(lua_State *state);
+ static int input_architecture(lua_State *state);
+ static int output_architecture(lua_State *state);
+#ifdef ULTIMATE
+ static int licenses(lua_State *state);
+ static int files(lua_State *state);
+#endif
+};
+
+class ProjectOptionBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *enum_name() { return "ProjectOption"; }
+};
+
+#ifdef ULTIMATE
+
+class LicensesBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "Licenses"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int clear(lua_State *state);
+ static int Delete(lua_State *state);
+ static int public_exp(lua_State *state);
+ static int private_exp(lua_State *state);
+ static int modulus(lua_State *state);
+ static int key_length(lua_State *state);
+ static int hash(lua_State *state);
+ static int GetLicenseBySerialNumber(lua_State *state);
+ static int import_license(lua_State *state);
+};
+
+class LicenseInfoBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "LicenseInfo"; }
+private:
+ static int flags(lua_State *state);
+ static int customer_name(lua_State *state);
+ static int customer_email(lua_State *state);
+ static int expire_date(lua_State *state);
+ static int hwid(lua_State *state);
+ static int running_time_limit(lua_State *state);
+ static int max_build_date(lua_State *state);
+ static int user_data(lua_State *state);
+};
+
+class LicenseBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "License"; }
+private:
+ static int date(lua_State *state);
+ static int customer_name(lua_State *state);
+ static int customer_email(lua_State *state);
+ static int order_ref(lua_State *state);
+ static int comments(lua_State *state);
+ static int serial_number(lua_State *state);
+ static int blocked(lua_State *state);
+ static int set_blocked(lua_State *state);
+ static int info(lua_State *state);
+};
+
+class FileFoldersBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "FileFolders"; }
+private:
+ static int count(lua_State *state);
+ static int item(lua_State *state);
+ static int add(lua_State *state);
+ static int clear(lua_State *state);
+};
+
+class FileFolderBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "FileFolder"; }
+private:
+ static int count(lua_State *state);
+ static int item(lua_State *state);
+ static int add(lua_State *state);
+ static int clear(lua_State *state);
+ static int name(lua_State *state);
+ static int destroy(lua_State *state);
+};
+
+class FilesBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "Files"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int clear(lua_State *state);
+ static int folders(lua_State *state);
+ static int Delete(lua_State *state);
+};
+
+class FileActionTypeBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *enum_name() { return "FileActionType"; }
+};
+
+class FileBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "File"; }
+private:
+ static int name(lua_State *state);
+ static int file_name(lua_State *state);
+ static int action(lua_State *state);
+ static int folder(lua_State *state);
+ static int set_name(lua_State *state);
+ static int set_file_name(lua_State *state);
+ static int set_action(lua_State *state);
+};
+
+#endif
+
+class WatermarksBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "Watermarks"; }
+private:
+ static int item(lua_State *state);
+ static int count(lua_State *state);
+ static int clear(lua_State *state);
+ static int Delete(lua_State *state);
+ static int GetItemByName(lua_State *state);
+ static int add(lua_State *state);
+};
+
+class WatermarkBinder
+{
+public:
+ static void Register(lua_State *state);
+ static const char *class_name() { return "Watermark"; }
+private:
+ static int name(lua_State *state);
+ static int value(lua_State *state);
+ static int blocked(lua_State *state);
+ static int set_blocked(lua_State *state);
+};
+
+#endif \ No newline at end of file