Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi CreateProcess importieren / API Hooks umgehen (https://www.delphipraxis.net/87500-createprocess-importieren-api-hooks-umgehen.html)

Zacherl 1. Mär 2007 14:59


CreateProcess importieren / API Hooks umgehen
 
Hi,

ich will die CreateProcess API dynamisch in mein Programm einbinden. Dazu verwende ich:

Delphi-Quellcode:
function CreateProcess(lpApplicationName: PChar; lpCommandLine: PChar;
  const lpProcessAttributes, lpThreadAttributes: PSecurityAttributes;
  bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer;
  lpCurrentDirectory: PChar; const lpStartupInfo: TStartupInfo;
  out lpProcessInformation: TProcessInformation): BOOL; stdcall;
var
  pCreateProcess: function(lpApplicationName: PChar; lpCommandLine: PChar;
  const lpProcessAttributes, lpThreadAttributes: PSecurityAttributes;
  bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer;
  lpCurrentDirectory: PChar; const lpStartupInfo: TStartupInfo;
  out lpProcessInformation: TProcessInformation): BOOL; stdcall;
begin
  pCreateProcess := GetRealProcAddress(GetModuleHandle('kernel32'), 'CreateProcess');
  Result := pCreateProcess(lpApplicationName, lpCommandLine, lpProcessAttributes,
                           lpThreadAttributes, bInheritHandles, dwCreationFlags,
                           lpEnvironment, lpCurrentDirectory, lpStartupInfo,
                           lpProcessInformation);
end;
Leider kommt nun nach dem Start des Programmes sofort die Meldung, dass ein Fehler verursacht wurde und das Programm beendet wird.

Woran kann das liegen?

PS: GetRealProcAddress ermittelt nur die "ursprüngliche" Adresse der API, somit werden Userlevel API Hooks nicht gecallt.

sirius 1. Mär 2007 15:01

Re: CreateProcess dynamisch importieren
 
kernel32.dll

Zacherl 1. Mär 2007 15:07

Re: CreateProcess dynamisch importieren
 
Geht leider auch nicht .. es müssen die Parameter Datentypen sein, die nicht stimmen =/

Win32.API 1. Mär 2007 15:17

Re: CreateProcess dynamisch importieren
 
@pCreateProcess := GetRealProcAddress(GetModuleHandle('kernel32.dll') , 'CreateProcessA');

turboPASCAL 1. Mär 2007 15:22

Re: CreateProcess dynamisch importieren
 
Zwischenfrage, warum möchtest du denn CreateProcess dynamisch implementieren?
Diese ist doch in der Unit Windows enthalen.

Zacherl 1. Mär 2007 15:24

Re: CreateProcess dynamisch importieren
 
Argh das A hat gefehlt :wall: Danke ..

@TurboPascal: Ich möchte die API Hooks umgehen, deshalb ..

Win32.API 1. Mär 2007 15:27

Re: CreateProcess dynamisch importieren
 
Das A und noch viel wichtiger das "@" ... Du solltest pointer _immer_ auf nil pruefen .

Zacherl 1. Mär 2007 15:55

Re: CreateProcess dynamisch importieren
 
Ja, hab ich schon eingebaut ..

brechi 1. Mär 2007 16:20

Re: CreateProcess dynamisch importieren
 
Damit umgehst du vielleicht 10% der API hooks, mehr aber auch nicht...

Zacherl 1. Mär 2007 16:20

Re: CreateProcess dynamisch importieren
 
Die API Hooks werden komplett umgangen .. nur die Kernel Hooks nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:44 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz