DIA findSymbolByVA возвращает ноль

Я пытаюсь использовать DIA SDK разрешить некоторые адреса, которые я сохраняю в некотором контейнере, используя _penter и, кажется, работает для стандартных функций (в выводе я вижу много станд материал), но ничего из моего приложения (которое в данном случае является собственным модулем node.js).

Чтобы получить адрес вызывающей функции, я использую это в _penter:

    mov     ecx, [esp + 0Ch]
push    ecx

И позже для разрешения сохраненных адресов, которые я использую:

auto processHandle = GetCurrentProcess();
HMODULE moduleHandles[1024] = {nullptr};
DWORD bytesUsed;

if (EnumProcessModules( processHandle,
moduleHandles,
sizeof(moduleHandles),
&bytesUsed)) {
for (auto i = 0u; i < (bytesUsed / sizeof(HMODULE)); i++) {
MODULEINFO moduleInfo = {0};

if (GetModuleInformation(   processHandle,
moduleHandles[i],
&moduleInfo,
sizeof(MODULEINFO))) {
auto loadAddress    = (DWORD)(moduleInfo.lpBaseOfDll);
auto endAddress     = loadAddress + moduleInfo.SizeOfImage;

if (loadAddress <= address && address <= endAddress) {
wchar_t moduleName[MAX_PATH] = {};

if (GetModuleFileNameExW(   processHandle,
moduleHandles[i],
moduleName,
MAX_PATH)) {
CComPtr<IDiaDataSource> diaSource;
auto result = diaSource.CoCreateInstance(   CLSID_DiaSource,
nullptr,
CLSCTX_INPROC_SERVER);

if (SUCCEEDED(result)) {
if (SUCCEEDED(diaSource->loadDataForExe(moduleName,
nullptr,
nullptr))) {
CComPtr<IDiaSession> mPtrSession;

if (SUCCEEDED( diaSource->openSession(&mPtrSession))) {
result = mPtrSession->put_loadAddress(reinterpret_cast<ULONGLONG>(moduleHandles[i]));

if (SUCCEEDED(result)) {
IDiaSymbol* pFunc = nullptr;

if (SUCCEEDED( mPtrSession->findSymbolByVA( address,
SymTagFunction,
&pFunc))) {
// do stuff here
}
}
}
}
}
}
}
}
}
}

Для не стандартных символов кажется, что SUCCEEDED (mPtrSession-> findSymbolByVA ()) проверка прошла, но возвращенный IDiaSymbol имеет значение null.

Для компиляции я использую мошенничать который в свою очередь использует cl.exe и для флагов компиляции я использую / MP / MTd / EHsc / GR / Gh / DUNICODE / DNOMINMAX / ДОПОЛНИТЕЛЬНО: НЕТ

Я что-то здесь не так делаю?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]