Есть программа,которая грузит длл.Из длл необходимо вызывать функции программы, которая загрузила длл.Единственное что приходит на ум:в длл определяем указатели на функции.В программе после GetProcAddress вызываем функцию через которую передаем указатели на функции а в длл присваиваем их указателям.Это хорошее регшение?
KingT Хорошее решение создавать именованные переменные или функции, возвращающие ссылки на эти переменные, ибо блегчает хак(позволяет просто захватывать функции, подменять данные и пр., без дизасма).
А что такое именованные переменные?Мне ничего хакать не надо,просто в обычной программе понадобилась такая фишка.
экспорт по сути заключается в сопоставлении именам указателей, которые привязаны к данному модулю. но указатель может указывать как на функцию, так и на переменную. под "именованными переменными" здесь понимаются указатели в списке экспорта, указывающие на секцию данных, по которым могут храниться значения переменных под "именованными функциями" понимается указатели в списке экспорта, указывающие на секцию кода, по которым может быть осуществлена передача управления (вызов функции). Код (Text): format PE GUI 5.0 DLL entry start section '.text' code readable executable start: mov al, [esp+8] and al, 3 jnz @f mov eax, [esp+4] mov [hInstance], eax @@: xor eax, eax inc eax ret 12 GetModuleInstance: mov eax, [hInstance] ret section '.data' data readable writeable hInstance dd 0 section '.exp' export data readable writeable export 'dll export',\ GetModuleInstance, 'это именованная функция',\ hInstance, 'это именованная переменная' section '.fix' fixups data readable discardable что-то вроде этого