Аналогично еслибы просто использовал GetProcAddress --- Сообщение объединено, 18 ноя 2019 --- Да, дров внедряет длл, и она работает, юзает функции двигла, работает мой кастомный функционал.
значит вас ждет отладчик и медитацыя. там тупой разбор PE-формата. Это не может не работать, если всё загружено по канонам
Ладно, все спасибо за отзывчивость, с моим уровнем знаний это не по силам. Пойду напишу автору дрова, чтобы дал понять что не так.
sanny, Тут сплошной неадекват, спроси в комерсе. А есчо лучше где то на форумах где нюбьё тусуется(они шарят в скриптах), тут низкоуровневое всё и не удивительно что начался батхёрт.
если без вашей внедряемой длл всё норм работает, то это не с дровом что то не так, а с вашим внедрением и с вашей длл
Вы не поняли, я внедряю одну и ту же длл, весь функционал в одной длл. Я внедряю длл внутри которой функция GetDllExport, которая ищет экспорт внедряемой дллки. Если внедрить эту длл от юзера (длл отображается в списках модулей и т.д.) или подтянуть ее через LoadLibrary - все работает (находит экспортную функцию). А если внедрить длл с помощью дрова (длл не видно в списке моделей, скорее и от РЕВ она скрыта) - весь функционал работает, но экспортную функцию не находит.
збс. опять ничего непонятно. зачем длл искать адреса своих же функций внутри себя? даже неважно экспортируемые они или нет. вы же пишете её и можете эти адреса напрямую заносить в любую переменную в коде и вообще делать с ними всё, что угодно.
Смотрите первый пост: "в с++ я баран" я не знаю как получить адрес своих функций. функция GetDllExport - хукнутая, мне в void* Result нужно передать то что возвращает GetProcAddress, могу ли я туда передать свою функцию? если да, то как?
GetDllExport - да, в другом модуле, но у меня есть ее сурсы, так что я хукнул ее и в нужный мне момент не возвращаю управление а выполняю свой код (такой же как и в другом модуле но с поправками, т.к. GetProcAddress не канает (как в оригинале)). Собствено GetProcAddress должен вернуть мою же экспортную функцию, но раз уж у меня есть эта функция могу ли влепить ее вместо GetProcAddress? как?
Гуд. В этот хук вы можете передать адрес, он же HMODULE вашей загруженной либы, который возвращает драйвер или что у вас там?
А зачем вообще GetProcAddress? Просто возвращайте указатель на внутреннюю функцию (имя функции без скобок).
так он и передаётся же в глобальной переменной шоле Код (C): if( ![U]DllHandle[/U] ) { if( Checked && !ParseParam(appCmdLine(),TEXT("nobind")) ) appErrorf( LocalizeError(TEXT("NotDll"),TEXT("Core")), GetName(), ExportName ); Result = NULL; } else #endif { #if __STATIC_LINK Result = FindNative( (TCHAR*) ExportName ); #else Result = appGetDllExport([U] DllHandle[/U], ExportName ); #endif
в функции CORE_API void* appGetDllExport( void* DllHandle, const TCHAR* ProcName ) нужно #else return (void*)GetProcAddress( (HMODULE)DllHandle, TCHAR_TO_ANSI(ProcName) ); заменить на самописную функцию --- Сообщение объединено, 18 ноя 2019 --- там же вся первая страница в ссылках на самописные коды GetProcAddress