Не могу получить экспортную функцию

Тема в разделе "WASM.WIN32", создана пользователем sanny, 17 ноя 2019.

  1. sanny

    sanny Member

    Публикаций:
    0
    Регистрация:
    28 сен 2018
    Сообщения:
    42
    Аналогично еслибы просто использовал GetProcAddress
    --- Сообщение объединено, 18 ноя 2019 ---
    Да, дров внедряет длл, и она работает, юзает функции двигла, работает мой кастомный функционал.
     

    Вложения:

    • 7b2efd2535.png
      7b2efd2535.png
      Размер файла:
      7,1 КБ
      Просмотров:
      360
    • 7b2efd2535.png
      7b2efd2535.png
      Размер файла:
      7,1 КБ
      Просмотров:
      348
  2. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    1.191
    Адрес:
    подполье
    значит вас ждет отладчик и медитацыя. там тупой разбор PE-формата. Это не может не работать, если всё загружено по канонам
     
    sanny нравится это.
  3. sanny

    sanny Member

    Публикаций:
    0
    Регистрация:
    28 сен 2018
    Сообщения:
    42
    Ладно, все спасибо за отзывчивость, с моим уровнем знаний это не по силам. Пойду напишу автору дрова, чтобы дал понять что не так.
     
  4. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    sanny,

    Тут сплошной неадекват, спроси в комерсе. А есчо лучше где то на форумах где нюбьё тусуется(они шарят в скриптах), тут низкоуровневое всё и не удивительно что начался батхёрт.
     
  5. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    1.191
    Адрес:
    подполье
    если без вашей внедряемой длл всё норм работает, то это не с дровом что то не так, а с вашим внедрением и с вашей длл
     
  6. sanny

    sanny Member

    Публикаций:
    0
    Регистрация:
    28 сен 2018
    Сообщения:
    42
    Вы не поняли, я внедряю одну и ту же длл, весь функционал в одной длл. Я внедряю длл внутри которой функция GetDllExport, которая ищет экспорт внедряемой дллки. Если внедрить эту длл от юзера (длл отображается в списках модулей и т.д.) или подтянуть ее через LoadLibrary - все работает (находит экспортную функцию). А если внедрить длл с помощью дрова (длл не видно в списке моделей, скорее и от РЕВ она скрыта) - весь функционал работает, но экспортную функцию не находит.
     
  7. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    1.191
    Адрес:
    подполье
    збс. опять ничего непонятно. зачем длл искать адреса своих же функций внутри себя? даже неважно экспортируемые они или нет. вы же пишете её и можете эти адреса напрямую заносить в любую переменную в коде и вообще делать с ними всё, что угодно.
     
  8. sanny

    sanny Member

    Публикаций:
    0
    Регистрация:
    28 сен 2018
    Сообщения:
    42
    Смотрите первый пост: "в с++ я баран" :) я не знаю как получить адрес своих функций. функция GetDllExport - хукнутая, мне в void* Result нужно передать то что возвращает GetProcAddress, могу ли я туда передать свою функцию? если да, то как?
     
  9. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.208
    GetDllExport в другом модуле? Не в вашей длл?

    С++ тут ни при чем кстати.
     
  10. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    1.191
    Адрес:
    подполье
    кстати, да. чем хукнута GetDllExport? Где код, который обрабатывает перехват?
     
  11. sanny

    sanny Member

    Публикаций:
    0
    Регистрация:
    28 сен 2018
    Сообщения:
    42
    GetDllExport - да, в другом модуле, но у меня есть ее сурсы, так что я хукнул ее и в нужный мне момент не возвращаю управление а выполняю свой код (такой же как и в другом модуле но с поправками, т.к. GetProcAddress не канает (как в оригинале)). Собствено GetProcAddress должен вернуть мою же экспортную функцию, но раз уж у меня есть эта функция могу ли влепить ее вместо GetProcAddress? как?
     
  12. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.208
    Гуд. В этот хук вы можете передать адрес, он же HMODULE вашей загруженной либы, который возвращает драйвер или что у вас там?
     
  13. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    А зачем вообще GetProcAddress? Просто возвращайте указатель на внутреннюю функцию (имя функции без скобок).
     
  14. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    1.191
    Адрес:
    подполье
    так он и передаётся же в глобальной переменной шоле
    Код (C):
    1.  if( ![U]DllHandle[/U] )
    2.     {
    3.         if( Checked && !ParseParam(appCmdLine(),TEXT("nobind")) )
    4.             appErrorf( LocalizeError(TEXT("NotDll"),TEXT("Core")), GetName(), ExportName );
    5.         Result = NULL;
    6.     }
    7.     else
    8.     #endif
    9.     {
    10.         #if __STATIC_LINK
    11.         Result = FindNative( (TCHAR*) ExportName );
    12.         #else
    13.         Result = appGetDllExport([U] DllHandle[/U], ExportName );
    14.         #endif
     
  15. sanny

    sanny Member

    Публикаций:
    0
    Регистрация:
    28 сен 2018
    Сообщения:
    42
    Это не поможет.
     
  16. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.208
    Вы можете это сделать или нет?
     
  17. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    1.191
    Адрес:
    подполье
    да он и делает это
     
  18. sanny

    sanny Member

    Публикаций:
    0
    Регистрация:
    28 сен 2018
    Сообщения:
    42
    Thetrik, Так? Rusult = void* а функция у меня void я чет вообще туплю, как кастануть?
     

    Вложения:

    • f3aeda58be.png
      f3aeda58be.png
      Размер файла:
      38,8 КБ
      Просмотров:
      354
  19. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    1.191
    Адрес:
    подполье
    в функции CORE_API void* appGetDllExport( void* DllHandle, const TCHAR* ProcName )
    нужно
    #else
    return (void*)GetProcAddress( (HMODULE)DllHandle, TCHAR_TO_ANSI(ProcName) );
    заменить на самописную функцию
    --- Сообщение объединено, 18 ноя 2019 ---
    там же вся первая страница в ссылках на самописные коды GetProcAddress
     
  20. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    Без &, имя функции без скобок уже возвращает указатель.