• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Запуск 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.
 
По идее в Ваших функциях нет ничего что могло бы повиснуть ... а логировать действия пробовали ? На чём конкретно повисает ? На каком действии ?
 
Логировать? Момент вызова процедуры?

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

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

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab