fanybupt

日出而作,日入而息,凿井而饮,耕田而食,帝力于我何有哉?

导航

获取其他进程命令行参数

Posted on 2012-05-04 18:10  fanybupt  阅读(434)  评论(0)    收藏  举报
function GetSysFuncAddr(AFunc: Pointer): Integer;
begin
  asm
    mov eax, AFunc
    add eax, 2
    mov eax, [eax]
    mov eax, [eax]
    mov Result, eax
  end;
end;
 
procedure GetRemoteCommandLine(ABuf: PChar; APID: Integer);
var
         dwAddr, dwRead: DWORD;
  hProc: THandle;
begin
  dwAddr :=  GetSysFuncAddr(@GetCommandLine) + 7;
  dwAddr :=  $7dd75178 - dwAddr;
  dwAddr :=  $7dd70d2c - dwAddr;
  asm
    mov eax, dwAddr
    mov eax, [eax]
    add eax, 1
    mov eax, [eax]
    mov dwAddr, eax
  end;
  hProc := OpenProcess(PROCESS_VM_READ, False, APID);
  ReadProcessMemory(hProc, Pointer(dwAddr), @dwAddr, 4, dwRead);
  ReadProcessMemory(hProc, Pointer(dwAddr), ABuf, MAX_PATH, dwRead);
End;
 
procedure  test;
var
         buf: array [0..MAX_PATH] of Char;
begin
         GetRemoteCommandLine(@buf, 3556);
End;