XexGetProcedureAddress by name implemented.
This commit is contained in:
@@ -34,5 +34,10 @@ void* XKernelModule::GetProcAddressByOrdinal(uint16_t ordinal) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void* XKernelModule::GetProcAddressByName(const char* name) {
|
||||
XELOGE("GetProcAddressByName not implemented");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
} // namespace kernel
|
||||
} // namespace xe
|
||||
|
||||
@@ -24,6 +24,7 @@ class XKernelModule : public XModule {
|
||||
virtual ~XKernelModule();
|
||||
|
||||
virtual void* GetProcAddressByOrdinal(uint16_t ordinal);
|
||||
virtual void* GetProcAddressByName(const char* name);
|
||||
|
||||
protected:
|
||||
Emulator* emulator_;
|
||||
|
||||
@@ -27,6 +27,7 @@ class XModule : public XObject {
|
||||
const std::string& name() const { return name_; }
|
||||
|
||||
virtual void* GetProcAddressByOrdinal(uint16_t ordinal) = 0;
|
||||
virtual void* GetProcAddressByName(const char *name) = 0;
|
||||
virtual X_STATUS GetSection(const char* name, uint32_t* out_section_data,
|
||||
uint32_t* out_section_size);
|
||||
|
||||
|
||||
@@ -148,6 +148,17 @@ void* XUserModule::GetProcAddressByOrdinal(uint16_t ordinal) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void* XUserModule::GetProcAddressByName(const char* name) {
|
||||
PEExport export;
|
||||
int ret = xe_xex2_lookup_export(xex_, name, export);
|
||||
|
||||
// Failure.
|
||||
if (ret)
|
||||
return NULL;
|
||||
|
||||
return (void *)export.addr;
|
||||
}
|
||||
|
||||
X_STATUS XUserModule::GetSection(const char* name, uint32_t* out_section_data,
|
||||
uint32_t* out_section_size) {
|
||||
auto header = xe_xex2_get_header(xex_);
|
||||
|
||||
@@ -33,6 +33,7 @@ class XUserModule : public XModule {
|
||||
X_STATUS LoadFromMemory(const void* addr, const size_t length);
|
||||
|
||||
virtual void* GetProcAddressByOrdinal(uint16_t ordinal);
|
||||
virtual void* GetProcAddressByName(const char* name);
|
||||
virtual X_STATUS GetSection(const char* name, uint32_t* out_section_data,
|
||||
uint32_t* out_section_size);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user