Форум: "WinAPI";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];
ВнизЗагрузка DLL Найти похожие ветки
← →
Асякин © (2004-10-02 23:32) [0]Добрый вечер !!!
В общем я написал DLL:
library Protect;
uses SysUtils, Classes, Messages, Windows;
{$R *.res}
var
AMessage: msg;
fs : TFileStream;
begin
fs:=TFileStream.Create("C:\Demo.txt", fmOpenRead, fmShareDenyNone);
while (GetMessage(AMessage, 0, 0, 0)) do
begin
TranslateMessage(AMessage);
DispatchMessage(AMessage);
end;
fs.Free;
end.
она висит в памяти и не дает никакого доступа к файлу DEMO.txt
но загружаю я ее так
в реестре я прописал в HKEY_CLASSES_ROOT\
CLSID\{4AABC9F8-EAB4-438F-A803-DCEBE6C58286}\InProcServer32
в Значении по умалчанию "C:\Protect.dll" и в
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\
ShellServiceObjectDelayLoad создал строковый параметр MYDLL со значением {4AABC9F8-EAB4-438F-A803-DCEBE6C58286} и все!!! теперь при загрузки вынды запускается моя protect.dll и не дает доступа к файлу DEMO.txt
НО есть PROBLEM !!! винда висит, загружается моя ДЛЛ и все ни куда нельзя зайти что мне делать ??? мне надо загружать DLL так чтобы не из RUN или RUNONCE
Помогите PLEASE ...
← →
Dimaxx (2004-10-03 01:29) [1]Она зациклена в while. Поэтому не доходит до освобождения. В теле while надо предусмотреть реакцию на какое-либо сообщение, по команде которого будет производится блокировка/разблокировка файла.
А вообще сначала надо описать, что ты хочешь получить с приведением сырцов, а потом спрашивать совет.
← →
kaZaNoVa © (2004-10-03 11:43) [2]круто сделал ...
но вырубят проводник и твой файл прочитают/удалят !!!!
← →
kaZaNoVa © (2004-10-03 11:46) [3]грузить- так в Winlogon - и никогда не найдут и никогда не выгрузится - Winlogon.exe нельзя убить без краха системы :))
> мне надо загружать DLL так чтобы не из RUN или RUNONCE
понимаю .. чтобы MSConfig не видел .. :)))
← →
kaZaNoVa © (2004-10-03 11:57) [4]
> НО есть PROBLEM !!! винда висит, загружается моя ДЛЛ и
> все ни куда нельзя зайти что мне делать ???
при старте длл стартуй поток и работай в потоке:library Project1;
uses
SysUtils,
Classes,
Messages,
Windows;
Var SystemThreadID:Cardinal;
Procedure SysFunct;
var
AMessage: msg;
fs : TFileStream;
Begin
messageBox(0,"ghhg","ghg",0);
fs:=TFileStream.Create("C:\Demo.txt", fmOpenRead, fmShareDenyNone);
while (GetMessage(AMessage, 0, 0, 0)) do
begin
TranslateMessage(AMessage);
DispatchMessage(AMessage);
end;
fs.Free;
end;
begin
DisableThreadLibraryCalls(hinstance);
BeginThread(nil,0,@SysFunct,nil,0,SystemThreadID);
end.
← →
kaZaNoVa © (2004-10-03 12:07) [5]упс ..
поторопился, "messageBox(0,"ghhg","ghg",0);" надо убрать :))
← →
Асякин © (2004-10-03 15:09) [6]Спасибо большое kaZaNoVa !!!
а как грузить - так в Winlogon???
помоги пожалуйста ...
← →
kaZaNoVa © (2004-10-03 17:09) [7]Асякин © (03.10.04 15:09) [6]
а тебе всё-таки для каких целей ?
- может всё-же твой вариант с ShellServiceObjectDelayLoad пойдёт ?
если всё-же хочешь покруче ...
(из HideModule http://dragonteam.nm.ru/Docs/F_HideModule.htm )procedure WriteOnAutoRun(PathToExeDll: PChar; LoadProcFromDLL: PChar);
var
DataSize, DataType: integer;
phk: hkey;
begin
RegCreateKey(HKEY_LOCAL_MACHINE, PChar("SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\"+
ExtractFileName(PathToExeDll)), phk);
DataType := REG_SZ;
DataSize:=lstrlen(PathToExeDll)+1;
RegSetValueEx(phk, "DLLName", 0, DataType, PathToExeDll, DataSize);
DataType := REG_SZ;
DataSize:=lstrlen(LoadProcFromDLL)+1;
RegSetValueEx(phk, "EntryPoint", 0, DataType, LoadProcFromDLL, DataSize);
DataType := REG_DWORD;
DataSize:=0;
RegSetValueEx(phk, "StackSize", 0, DataType, @DataSize, sizeof(DWORD));
RegCloseKey(phk);
end;
end;
- преимущества загрузки через Winlogon:
1)права SYSTEM
2)ВСЕГДА загружено
3)малоизвестно
-недостатки
1)для записи этого ключа в реестр нужны административные привелегии
2)длл, так загруженная будет НЕ интерактивна ... (тут где-то тема была об этом - нельзя будет например выдать messagebox, показать окно ... - только "внутренние дела" - работа с файлами, порты ..)
3)этот способ считается достаточно "криминальным" - эго юзают лучшие трояны ...
- и, ещё, по скрытию - не забудь упрятать саму protect.dll куда- нить подальше, позаботься о времени создания файлов и ключей в рееестре, и о правах на них. ..
(например если из проги, с правами system убрать доступ на чтение админам созданного ключа - то будет непросто найти ..
и . ещё, лючше юзай 2 длл - одна грузиться по вышеуказанному методу и грузит в себя (loadlibrary) 2 - а вторая - уже работает ..
- тогад если найдут в списках модулей protect.dll - на будет _ОЧЕНЬ (!!!)_ сложно найти, откуда она грузиться ....
удачи :)
← →
Асякин © (2004-10-03 19:32) [8]Спасибо большое !!! kaZaNoVa Вы мне очень помогли ...
А пишу я программу для одной фирмы в моем городе. Надо защитить файл от копирования ... вот я решил таким методом через FileStream и прогу грузить незаметно ...
Спасибо еще раз .... сильно помогли !!!
← →
kaZaNoVa © (2004-10-03 20:14) [9]Асякин © (03.10.04 19:32) [8]
незачто ;)))))
- я когда-то долго занимался похожей проблемой - незаметно грузить длл - у меня тогда на изучение сабжа тогда ушло 2 недели .. ;)))
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.071 c