我正在写一个GetProcAddress函数的模拟。当查看导出表时,我在 advapi32.dll 中看到了这样的导出,例如:
.text:4C362BAA aEventregister db 'EventRegister',0 ; DATA XREF: .text:off_4C35FE10o
.text:4C362BB8 ; Exported entry 1290. EventRegister
.text:4C362BB8 public EventRegister
.text:4C362BB8 EventRegister db 'ntdll.EtwEventRegister', 0
所以它就像一个重定向到 ntdll 函数。如何处理这些条目以及如何检测它们是否导致另一个库调用?
目前我只是按名称查找函数序号并获取其地址,但对于像这样的导出地址是无效的(地址内有垃圾代码)。
我是否需要只读取ntdll.EtwEventRegister序号地址处的字符串,将其按点分割并获取 dll/函数名称?
如果是这种情况,我如何检测导出地址只是带有此 dll/函数名称的字符串?我需要以某种方式检查那里是否存在有效字符串,应该有其他方式,例如某些标志等。