![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
LoadLibrary [D7, WinXP]
dll © (2008-06-04 13:08:00)разбирая унаследованный код, обнаружил, что прежний разработчик сравнивал результат LoadLibrary на то, что он больше 32. Если типа меньше, то не загружена.
Скажите, это вообще правомочно или нет?
DiamondShark (2008-06-04 20:02:00) [41]
> dll (04.06.08 19:33) [7]
Ну, продолжай гадать на кофейной гуще, вместо того, чтобы система сама тебе сказала, что не так.
dll (2008-06-04 19:33:00) [42]Возвращаемый адрес, конечно, не проверяем.
на 99 машинах в одной и той же длл процедура есть, а на сотой вдруг нет?
длл туда попадают вместе с инсталлятором.
DiamondShark (2008-06-04 18:35:00) [43]
> выполняем getprocaddress'ы
Возвращаемый адрес, конечно, не проверяем.
> что же может блокировать загрузку?
Инопланетяне.
hModule := LoadLibrary(...);
Win32Check(hModule <> 0);
pProc := GetProcAddress(hModule, ...);
Win32Check(pProc <> nil);
И сразу увидишь, кто.
dll (2008-06-04 17:23:00) [44]да вроде нет. это какой-то локальный глюк. в сотне других мест этот же самый код работает. длл пробовал класть везде откуда они могут быть загружены.
из вредоносного по только нод32 стоит (у меня тоже).
что же может блокировать загрузку?
Игорь Шевченко (2008-06-04 17:12:00) [45]
> в результате при обращении к импортированным функциям получаем
> av.
Может неправильно обращаешься ?
dll (2008-06-04 14:23:00) [46]в общем почему спросил-то.
столкнулся с ситуацией, когда в программе используется динамический импорт функций из библиотек. При установке на машину клиента все работает, за исключением функционала, вынесенного в dll.
а при просмотре кода обнаружилось нечто подобное:
загружаем либу №1, если результат меньше 32 выходим
выполняем getprocaddress'ы
загружаем либу №2, если результат меньше 32 выходим
выполняем getprocaddress'ы
в результате при обращении к импортированным функциям получаем av.
Anatoly Podgoretsky (2008-06-04 14:14:00) [47]> dll (04.06.2008 13:08:00) [0]
Правомочно, но неправильно. сравнение на 32 относится к Windows 3.1
guav (2008-06-04 13:22:00) [48]С 32 вообще-то сравнивают результат ShellExecute.
Но ошибки при сравнении с 32 результата LoadLibrary нет. Т.к. HMODULE это адрес или NULL, единственное возможное значение меньшее 32 это 0, оно как раз свидетельствует об ошибке.