Einzelnen Beitrag anzeigen

Neotracer64

Registriert seit: 27. Okt 2004
292 Beiträge
 
Delphi 7 Professional
 
#5

Re: Einen prozess in anderen Desktop befördern ohne switch!

  Alt 17. Jan 2006, 18:30
Patchen hat geklappt.
Ich hab jetzt nicht extra eine Section rangehängt, da noch genug platz in der code-Section war.

Hier der ASM-Code den ich direkt mit Ollydbg reingeschrieben habe.
Am OEP der Executable hab ich einen Jump auf 0140B8D0 gemacht. Und dort erstmal die Register gesichert.
Der Code von 0140B919 bis 0140B91C ist das, was ich am OEP überschrieben habe.
Ich gebe zu, dass ich etwas umstänlich war und 2x GetModuleHandle aufgreufen habe, aber ich habe es halt on-the-fly implementiert.

Wenn ihr es bei einem programm nachmachen wollt, müsst ihr natürlich die Adressen fixen
Delphi-Quellcode:
0140B8D0 > \60 PUSHAD
0140B8D1 . 9C PUSHFD
0140B8D2 . 68 25B94001 PUSH _patch.0140B925 ; /pModule = "user32.dll"
0140B8D7 . FF15 18C04001 CALL DWORD PTR DS:[<&KERNEL32.GetModuleHandleA>] ; \GetModuleHandleA
0140B8DD . 68 30B94001 PUSH _patch.0140B930 ; /ProcNameOrOrdinal = "CreateDesktopA"
0140B8E2 . 50 PUSH EAX ; |hModule
0140B8E3 . FF15 48C04001 CALL DWORD PTR DS:[<&KERNEL32.GetProcAddress>] ; \GetProcAddress
0140B8E9 . 6A 00 PUSH 0
0140B8EB . 68 00000010 PUSH 10000000
0140B8F0 . 6A 01 PUSH 1
0140B8F2 . 6A 00 PUSH 0
0140B8F4 . 6A 00 PUSH 0
0140B8F6 . 68 F03F5103 PUSH _patch.03513FF0
0140B8FB . FFD0 CALL EAX
0140B8FD . 50 PUSH EAX
0140B8FE . 68 25B94001 PUSH _patch.0140B925 ; /pModule = "user32.dll"
0140B903 . FF15 18C04001 CALL DWORD PTR DS:[<&KERNEL32.GetModuleHandleA>] ; \GetModuleHandleA
0140B909 . 68 3FB94001 PUSH _patch.0140B93F ; /ProcNameOrOrdinal = "SetThreadDesktop"
0140B90E . 50 PUSH EAX ; |hModule
0140B90F . FF15 48C04001 CALL DWORD PTR DS:[<&KERNEL32.GetProcAddress>] ; \GetProcAddress
0140B915 . FFD0 CALL EAX
0140B917 . 9D POPFD
0140B918 . 61 POPAD
0140B919 . 55 PUSH EBP
0140B91A . 8BEC MOV EBP,ESP
0140B91C . 6A FF PUSH -1
0140B91E .^ E9 F37EFFFF JMP _patch.01403816
0140B923 00 DB 00
0140B924 00 DB 00
0140B925 . 75 73 65 72 33 32>ASCII "user32.dll",0 ; user32.dll
0140B930 . 43 72 65 61 74 65>ASCII "CreateDesktopA",0 ; CreateDesktopA
0140B93F . 53 65 74 54 68 72>ASCII "SetThreadDesktop"
0140B94F . 00 ASCII 0
  Mit Zitat antworten Zitat