Подскажите что делаю не так, но не получается подргужать х64 длл через этот ключ реестра. Проверялось на вин7 х64.
Длл копирую в %SystemRoot%\system32\ в реестре ставлю [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows] "AppInit_DLLs"="c:\WINDOWS\system32\test_dll.dll" "LoadAppInit_DLLs"=dword:00000001
и эту на всякий "RequireSignedAppInit_DLLs "=dword:00000000
но не помогает, не подгружается длл к процесам.
для теста написана простая длл, при запуске просто выводит в дебаг (смотрим в DbgView) имя ехе, заргузившего длл (так же простеньки лоадер для подгрузки длл, чтоб видеть что длл то работает) залил на обменник --> Link <--
Tolkin Блин, точно те же ключи ) Видимо, пора спать. Попробуй перезагрузиться. Это взято из какой-то малвари, работает или нет конкретно на х64 - не могу сказать, не на чем проверить сейчас, на х86 работает.
----- Stuck to the plan, always think that we would stand up, never ran.
ARCHANGEL ;) точно спать пора. ребутился, не помогает.
на одном компе при копированиив папку system32 выдало 'the image file C:\windows\system32\test_dll.dll is valid, but for a machine type other than the current machine.'
Win7 Ultimate SP1 64, core i5. Какой тип машины она имеет ввиду, что не 64бит длл? или что 64 ноне под этот проц? Компилил в XE6 , там только один вид х64 дает. Да и сама по себе то длл работает, если подгружать лоадером то пишет в дебаг. ХЗ.
Теоретически может стоять ограничение на длину пути/файла. Копайте установленную проактивку и матчасть по требованиям к x64 dll, загружающемся таким способом.
Tolkin пишет: в х86 32-бит длл грузятся отлично Gideon Vi пишет: Теоретически может стоять ограничение на длину пути/файла
кстати есть http://msdn.microsoft.com/en-us/library/dd744762(v=VS.85).aspx, в котором кроме использования коротких имен и RequireSignedAppInit_DLLs больше ничего особенного. немного допускаю мысль, что дело может быть в последнем
Ранг: 145.8 (ветеран), 190thx Активность: 0.14↗0.36 Статус: Участник
Создано: 04 июля 2014 14:58 · Поправил: Alchemistry · Личное сообщение · #16
Tolkin
Собрать простую длл с внятным DllMain не судьба? Есть большое подозрение что твоя длл не грузится потому что в ней дофига rtl гавна от дельфи которое падает.
поправил:
чтобы не быть голословным как некоторые придурки из соседней темы про эмуляцию:
накатал длл
1)
Code:
BOOL WINAPI DllMain(
HINSTANCE hinstDLL,
DWORD fdwReason,
LPVOID lpvReserved
)
{
TCHAR fName[MAX_PATH];
GetModuleFileName(NULL, fName, MAX_PATH);
OutputDebugString(fName);
return FALSE;
}
3кб без всякого гавна
2) Положил ее в system32 (это ахтунг на самом деле) 3) Прописал ее в AppInitDlls с полным путем как требуется 4) LoadAppInit_DLLs установил в 1 5) RequreSigning не нужно вообще трогать, оно по дефолту на клиенте 7 выставлено в FALSE. 6) Запустил новые X64 процессы и вуаля http://i.imgur.com/ygFxu7Z.png
Так что фиксите свою длл и избавляйтесь от дельфе гавна.
Да хотя бы потому что если в процессе не будет user32.dll эта фигня не сработает. Если там в новых вендах конечно все коренным образом не перепахали. К тому же "Later versions of Windows will load only code-signed AppInit DLLs and will not include a registry key to disable this requirement."
Alchemistry пишет: Если там в новых вендах конечно все коренным образом не перепахали.
Win 8.1 x64 со всеми обновами - все работает. Да и зачем бежать впереди паровоза. Я, например, не хочу физически корежить файл, а хочу издеваться над ним в памяти (не нарушая подписи и т.п.) и все! И вопрос: А есть ли другие методы... Ну? Про глобальные хуки и еже с ними в курсе.
Alchemistry Ну зачем так грубо! Вы за легальное использование прог? Нахера тогда вы здесь околачиваетесь? Есть прога TeamViewer, если в курсе про такую (на рубороде есть тема), так я ее разрабов своими действиями вывел на цивилизованный путь программирования (подробности упущу, если надо скажу). Есть еще пара вариантов обуздать, но ваши варианты не прокатят.
Gideon Vi Согласен, так и делал. Но разрабы изловчились и теперь невозможно подгрузить библиотеки из папки программы и без цифровой подписи, только системные из system32.
Gideon Vi пишет: Собственно, что мешает грузить лоадером и делать тоже самое, что и dll. Я так и сделал в своем случае, добавление в импорт к любому файлу проги палилось, глобальный перехват вот чет не вышел - обошелся лоадером.
Подскажите заодно уж про CreateProcessNotify. Есть прога которая может запускаться под сервисом и просто автономно. Если запускаю автономно, то CreateProcessNotify отрабатывается нормально, а из под сервиса не хочет. Дело в правах? Как заставить?