Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.11.17;
Скачать: [xml.tar.bz2];

Вниз

Как предотвратить загрузку Dll в определенный процесс   Найти похожие ветки 

 
vic_vm   (2003-09-20 16:05) [0]

Где-то встречал примерно такой метод предотвращения загрузки Dll в определенный процесс:
В DllMain на уведомление DLL_PROCESS_ATTACH определяем имя главного модуля процесса и если не хотим чтобы наша Dll загружалась возвращаем в значении функции FALSE.
Проблемма в том что в MFC DllMain это функция, а в Delphi это процедура. Как быть?


 
MBo   (2003-09-20 16:47) [1]

получилось так:

library DllPr;

uses
Windows, dialogs;

procedure A(var Param:Integer);
begin
Param:=Param+1;
end;

procedure DLLEntryPoint(dwReason: DWord);
var lproc: string;
l:integer;
begin
case dwReason of
DLL_PROCESS_ATTACH: begin
setlength(lproc,max_path);
l:=getmodulefilename(0,Pchar(lproc),max_path);
setlength(lproc,l);
ShowMessage("Attaching to process "+lproc);
if pos("Project2",lproc)>0 then
ExitCode:=1;
end;
DLL_PROCESS_DETACH: ;
end;
end;

exports
A;

begin
DllProc := @DLLEntryPoint;
DLLEntryPoint(DLL_PROCESS_ATTACH);
end.


 
vic_vm   (2003-09-21 13:53) [2]

2 MBo
Ну и что мы в итоге получим?
Запускаю Project2 из под делфей и все равно вижу
в списке модулей (View->Debug Windows->Modules) DllPr.dll
А если запускаю Project2 без делфей то он вообще не запускается.
Пишет "Ошибка при инициализации приложения (0x0000142). Для выхода нажмите кнопку OK"


 
vic_vm   (2003-09-21 14:02) [3]

Поправлюсь - этот код не работает в случае
ранего связывания
procedure A; external "DllPr.dll" name "A";

А при позднем связывании
LoadLibrary("DllPr.dll");
Все работает нормально.


 
Digitman   (2003-09-22 16:06) [4]


> vic_vm


тебе ж говорят : состояние переменной ExitCode, устанавливаемая тобой в хде иниц-ции DLL, известит ОС об успешной либо неуспешной инициализации библ-ки

ExitCode = 0 - иниц-я прошла успешно
ExitCode = 1 - иначе



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.11.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.008 c
7-56931
asJIura
2003-09-06 15:37
2003.11.17
Функция для получения серийного номера жесткого диска?


1-56567
Dimmu
2003-11-06 12:47
2003.11.17
Как сделать CheckListBox с несколькими галочками.


1-56578
SLesh
2003-11-06 10:26
2003.11.17
Date


3-56535
Yuri
2003-10-27 11:13
2003.11.17
Может ли это являться причиной ограничения записей?


6-56799
Morg
2003-09-20 11:51
2003.11.17
Ошибка с Stream





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский