Note that there are some explanatory texts on larger screens.

plurals
  1. POCreate Process and Dump its Memory to String
    primarykey
    data
    text
    <p>I have executed a process using CreateProcess, but I want to dump the memory area allocated to the process how to do that?</p> <p>my code so far is:</p> <pre><code>function ExecuteAndDumpProcess(FileName: String): String; var BytesRead : DWORD; BufferSize : Integer; begin flag:=0; idh := pointer(LoadLibraryEx(PChar(FileName),0,DONT_RESOLVE_DLL_REFERENCES)); inh := pointer(dword(idh)+idh^._lfanew); EP := pointer(inh^.OptionalHeader.ImageBase + inh^.OptionalHeader.AddressOfEntryPoint); GetStartupInfo(si); if CreateProcess(pChar(FileName),nil,nil,nil,FALSE,DEBUG_PROCESS+DEBUG_ONLY_THIS_PROCESS,nil,nil,si,pi) then While TRUE do begin WaitForDebugEvent(DBEvent, 100000); if DBEvent.dwDebugEventCode = EXIT_PROCESS_DEBUG_EVENT then Begin Exit; End; if dbevent.dwDebugEventCode = CREATE_PROCESS_DEBUG_EVENT then Begin End; If dbevent.dwDebugEventCode = EXCEPTION_DEBUG_EVENT then Begin // if (DBEvent.Exception.ExceptionRecord.ExceptionCode = EXCEPTION_BREAKPOINT) and (flag = 1) then Begin BufferSize:= (1024 * 1024) * 4; SetLength(Result, BufferSize); ReadProcessMemory(pi.hProcess, Pointer(dword(EP)-15), @Result[0], BufferSize, BytesRead); FreeLibrary(dword(idh)); CloseHandle(pi.hProcess); CloseHandle(pi.hThread); //ContinueDebugEvent(DBEvent.dwProcessId,DBEvent.dwThreadId,DBG_TERMINATE_THREAD); // ContinueDebugEvent(DBEvent.dwProcessId,DBEvent.dwThreadId,DBG_TERMINATE_PROCESS); // ContinueDebugEvent(DBEvent.dwProcessId,DBEvent.dwThreadId,DBG_CONTROL_BREAK); TerminateProcess(pi.hProcess, 0); Exit; End; if (DBEvent.Exception.ExceptionRecord.ExceptionCode = EXCEPTION_BREAKPOINT) and (flag=0) then begin inc(flag); end; ContinueDebugEvent(DBEvent.dwProcessId,DBEvent.dwThreadId,DBG_CONTINUE); end; ContinueDebugEvent(DBEvent.dwProcessId,DBEvent.dwThreadId,DBG_EXCEPTION_NOT_HANDLED); end; end; </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload