Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

[Assembler] Thread mit CreateRemoteThread injizieren

  Alt 15. Okt 2007, 23:11
Hey,

ich bin grade bisschen Assembler am lernen und wollte zum Spaß mal ein kleines Delphi Projekt, welches eine MessageBox im Notepad Prozess anzeigt nach ASM portieren.

Soweit meine Injection Funktion:
Code:
Inject PROC NEAR
   mov dwPid, eax
   invoke GetModuleHandle, 0
   mov hModule, eax
   mov edi, eax
   assume edi:ptr IMAGE_DOS_HEADER
   add edi, [edi].e_lfanew
   add edi, sizeof dword
   add edi, sizeof IMAGE_FILE_HEADER
   assume edi:ptr IMAGE_OPTIONAL_HEADER32 
   mov eax, [edi].SizeOfImage
   mov dwSize, eax
   assume edi:NOTHING
   invoke OpenProcess, PROCESS_ALL_ACCESS, FALSE, dwPid
   mov hProcess, eax
   invoke VirtualFreeEx, hProcess, hModule, 0, MEM_RELEASE
   invoke VirtualAllocEx, hProcess, hModule, dwSize, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE
   mov hNewModule, eax
   invoke WriteProcessMemory, hProcess, hNewModule, hModule, dwSize, addr dwBytesWritten
   invoke CreateRemoteThread, hProcess, 0, 0, addr RemoteThread, hModule, 0, addr dwTid
   Ret
Inject EndP
und hier die Funktion die injiziert wird:

Code:
RemoteThread PROC
   invoke MessageBox, 0, addr SE_DEBUG, addr SE_DEBUG, 64
   Ret
RemoteThread EndP
Es wird zwar injiziert, aber Notepad verabschiedet sich mit einer AV. Muss / kann man in Assembler auch die ImageBase setzen? Unter Delphi musste die ImageBase für diesen Zweck $13140000 betragen, sonst bekam ich auch eine AV beim Injizieren.

Vielen Dank
  Mit Zitat antworten Zitat