• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Запуск dll

  • Автор темы Zdvig
  • Дата начала
Статус
Закрыто для дальнейших ответов.
Z

Zdvig

Пишу простенькую программу в виде dll, для записи времени включения и выключения компьютера.
Запускать dll нужно без участия дополнительных программ, кроме самой winlogon.exe (winXP). Для этого используется
автозагрузка dll через реестр: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\

Dll запускается, делает запись, но не выгружается из памяти. Это пол беды. Но при попытки выключения, перезагрузки
или смене пользователя ничего не происходит. Dll как бы не дает разрешение на выход из системы. Как это можно исправить или подправить?

Код программы:
Код:
library suser64;

uses
SysUtils,
windows;

var
S,WD,FileLog:String;
F:System.Text;
aw : Array[0..MAX_PATH] of char;


Procedure GetFP; stdcall;   //определение системной папки System32
begin
GetSystemDirectory(aw, sizeof(aw));
WD:=(StrPas(aw));
FileLog:=WD+'\suser.log';
end;

Procedure SaveFileLogon; stdcall; //сохранение лога при входе в систему (Событие "logon" в разделе реестра выше)
begin
GetFP;
S := FormatDateTime('( dddd d mmmm yyyy г. - hh:mm:ss )', Now);
System.Assign(F,FileLog);
If FileExists(FileLog) = false Then Rewrite(F);
Append(F);
WriteLn(F,'Вход: '+S);
System.Close(F);
end;

Procedure SaveFileLogoff; stdcall; //сохранение лога при выходе из системы (Событие "logoff" в разделе реестра выше)
begin
GetFP;
S := FormatDateTime('( dddd d mmmm yyyy г. - hh:mm:ss )', Now);
System.Assign(F,FileLog);
If FileExists(FileLog) = false Then Rewrite(F);
Append(F);
WriteLn(F,'Выход: '+S);
System.Close(F);
end;


exports SaveFileLogon,
   SaveFileLogoff;

begin

end.
 
B

Barmutik

По идее в Ваших функциях нет ничего что могло бы повиснуть ... а логировать действия пробовали ? На чём конкретно повисает ? На каком действии ?
 
G

Guest

Логировать? Момент вызова процедуры?

Кстати программу запускали, полностью в действии?
 
B

Barmutik

Да .. на каком конкретно месте подвисает ?

Программу не запускал ...
 
G

Guest

Все, разобрался :) Спасибо программерам
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!