MS DIA / DbgHelp

Тема в разделе "WASM.RESEARCH", создана пользователем sn0w, 18 ноя 2020.

  1. sn0w

    sn0w Active Member

    Публикаций:
    0
    Регистрация:
    27 фев 2010
    Сообщения:
    956
    сижу втыкаю маны, но может у кого завалялся готовый сниппет -
    грубо говоря - имея определённый модуль от ms в своём ап, нужно грузануть к нему дебагинфу (глобальные символы, например), она к нему залинкована и лежит на дефолтном символьном серваке
    (msdl.microsoft.com/download/symbols)
    ну и грубо говоря - проитерировать все RVA.
    а ну и что юзается - ms dia или dbghelp - неважно
     
  2. sn0w

    sn0w Active Member

    Публикаций:
    0
    Регистрация:
    27 фев 2010
    Сообщения:
    956
    с DbgHelp разобрался, псевдокод такой:

    hProcess = GetCurrentProcess()
    SymSetOptions(SYMOPT_UNDNAME|SYMOPT_DEBUG)
    SymInitialize(hProcess, NULL(==_NT_SYMBOL_PATH), FALSE)
    rc = SymLoadModuleEx(hProcess, NULL, "c:\\windows\\notepad.exe", NULL, 0, 0, NULL, 0)
    SymEnumSymbols(hProcess, rc, "*!*", PsymEnumeratesymbolsCallback, NULL)

    ну и в колбак будет отстук по каждому найденому символу с поинтером на SYMBOL_INFO.
    незадача в том что тут надо чтобы с бинарём в одной папке валялись dbghelp.dll и symsrv.dll.
    ну или в папке венды шоб symsrv.dll лежал вместе с dbghelp.dll.
    и тут конешн косяк, ибо symsrv лежит в сдк и на голой венде его вроде нет,
    а он нужен чтоб какраз задовнлоадить нужный пдб.