Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Nachträglich Code in EXe einbauen

  Alt 22. Sep 2007, 20:23
Ja, das ist klar. Aber es muss ja compilierter Code sein. Ich kann doch keine Funktionsaufrufe im Klartext in die Exe schreiben und dann erwarten, dass diese ausgeführt werden.

Ich sehe gerade, er hat ja kompilierten Code in der AttacheProc. Aber warum macht er das so umständlich:
Delphi-Quellcode:
type
  TGetProcAddress = function(hModule:HMODULE;lpProcName:LPCSTR):Pointer;stdcall;
  TLoadLibrary = function(lpLibFileName:PChar):HMODULE;stdcall;
  TFreeLibrary = function(hLibModule:HMODULE):BOOL;stdcall;
  TExitProcess = procedure(uExitCode:UINT);stdcall;
  TGetModuleHandle = function(lpModuleName:PChar):HMODULE;stdcall;
  TGetMessage = function(var lpMsg:TMsg;hWnd:HWND;wMsgFilterMin,wMsgFilterMax:UINT):BOOL;stdcall;
  // ...;
  // ...;
Und
Delphi-Quellcode:
type
  PAttachData=^TAttachData;
  TAttachData=packed record
    hLibUser32: HMODULE;
    hLibGDI32: HMODULE;
    _GetProcAddress: TGetProcAddress;
    _LoadLibrary: TLoadLibrary;
    _FreeLibrary: TFreeLibrary;
    _ExitProcess:    TExitProcess;
    _GetModuleHandle:    TGetModuleHandle;
    // ...;
    // ...;
    szLibUser32:    array[0..6] of Char; //   "user32"
    szLibGDI32:       array[0..5] of Char; //   "gdi32"

    szLoadLibrary:    array[0..12] of Char; //   "LoadLibraryA"
    szFreeLibrary:    array[0..11] of Char; //   "FreeLibrary"
    szExitProcess:    array[0..11] of Char; //   "ExitProcess"
    szGetModuleHandle: array[0..16] of Char; //   "GetModuleHandleA"
    szlstrlen: array[0..8] of Char; // "lstrlenA"

    szGetMessage:    array[0..11] of Char; //   "GetMessageA"
    szTranslateMessage: array[0..16] of Char; //   "TranslateMessage"
    szDispatchMessage: array[0..16] of Char; //   "DispatchMessageA"
Könnte man nicht einfach eine Exe nehmen und diese an die original Exe hängen, den EntryPoint umbiegen? Allerdings wie ruft man dann den original EntryPoint auf?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat