Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.16;
Скачать: CL | DM;

Вниз

CommandLine...in ReadProcessMemory???   Найти похожие ветки 

 
Cj ©   (2007-07-18 04:37) [0]

Вотв ArtMoney короче нашел адрес указатель на текст командной строки любово процесса. отсеивал и нашел окончательное решение.
Сделал две функции которые берут ком-строку процесса:

function GetProcessCommandLineInSP1(PID:integer):string;// тестил у себя на SP1 в XP Professional
var
  h:cardinal;
  j:cardinal;
  b:byte;
  r:cardinal;
  path:string;
  adr:cardinal;
begin
 h := openprocess(Process_VM_READ, false, pid);//открываю процесс на чтение
 ReadProcessMemory(h,ptr($77c4c7a8){адрес-указатель на текст в процесах 4 байтное значение},@adr,4,r);
 for j:=0  to 255 do
 begin
      ReadProcessMemory(h,ptr(adr+j),@b,1,r);//считываю текст 1-байтные значения
      case b of
      32..126,192..255:path:=path+chr(b);//читаю толко буквы и знаки//но все равно мусор есть.
      end;
 end;
 result:=path;
closehandle(h);//закрываю проц.
end;
function GetProcessCommandLineInSP2(PID:integer):string;// тестил у брата на SP2 в XP Professional, тк первая функ-я вадает у него совсем другое
var
  h:cardinal;
  j:cardinal;
  b:byte;
  r:cardinal;
  path:string;
  adr:cardinal;
begin
 h := openprocess(Process_VM_READ, false, pid);//открываю процесс на чтение
 ReadProcessMemory(h,ptr($77c4c7a8){адрес-указатель на текст в процесах 4 байтное значение},@adr,4,r);
 for j:=0  to 255 do
 begin
      ReadProcessMemory(h,ptr(adr+j),@b,1,r);//считываю текст 1-байтные значения
      case b of
      32..126,192..255:path:=path+chr(b);//читаю толко буквы и знаки//но все равно мусор есть.
      end;
 end;
 result:=path;
closehandle(h);//закрываю проц.
end;


сначала то я сделал для своего: у меня SP1 а у брата это выдавало фигню, ну в общем нашел адреса к-строки и у него, и вот у меня вопрос: эти адреса зависят от Servica Pack-ов или они у каждого разные, протестите плиз функции и скажите получилось, или нет.
И еще: если все-таки для каждого компа адреса разные, то их тоже можно как нибудь найти, только вот как?-если есть идеи, скажите.


 
Rocki   (2007-07-18 07:18) [1]

у меня на СП2 работает, только впереди какие-то закорючки


 
Сергей М. ©   (2007-07-18 08:14) [2]


> $77c4c7a8){адрес-указатель на текст в процесах 4 байтное
> значение}


Кулибин)


 
Сергей М. ©   (2007-07-18 08:28) [3]


> Cj


http://rsdn.ru/Forum/message/18652.flat.aspx


 
Cj ©   (2007-07-18 16:19) [4]

спасибо, почитал. В принципе я делал 2-м неполным способом. Получается здесь Указатель адреса указателя, вот как


 
Сергей М. ©   (2007-07-18 17:00) [5]


> Cj ©   (18.07.07 16:19) [4]


Кулибин ты и есть кулибин)


 
SLoW.AlfaMoon.Com   (2007-07-18 17:27) [6]

я же тебе давал код! в вопросе про openprocess или гдето еще. код у меня дома, завтра могу принести если не забуду)


 
Cj ©   (2007-07-18 18:02) [7]

[5] в чем прикол? [6] OpenProcess я спрашивал, но кода CommandLine ты мне не давал, я эту ф-ю доделал, но все равно спасибо


 
SLoW.AlfaMoon.Com   (2007-07-19 09:34) [8]

про pEB слышал?

по смещению 10h от адреса PEB находится указатель на _RTL_USER_PROCESS_PARAMETERS, а там по смещению 40h находится указатель на UNICODE_STRING с командной строкой.

первое смещение верно для 2k,xp,2k3. второе в хр, но думаю 2к и 2к3 то же (проверить негде)

на всякий случай функция

 function GetProcessPebAddress(ProcessHandle: THandle): PPeb;
   var InfoLen, InfoSize: DWORD;
       Info: PPROCESS_BASIC_INFORMATION;
       ns: ntstatus;
 begin
   result := nil;
   InfoLen := sizeof(_PROCESS_BASIC_INFORMATION);
   InfoSize := 0;

   Info := VirtualAlloc(nil,InfoLen,MEM_COMMIT or MEM_RESERVE, PAGE_READWRITE);

   ns := ZwQueryInformationProcess(ProcessHandle,ProcessBasicInformation, Info,
                                 InfoLen, @InfoSize);
   Result := Info.PebBaseAddress;
 end;



Страницы: 1 вся ветка

Текущий архив: 2008.03.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
2-1203337459
Dan
2008-02-18 15:24
2008.03.16
VirtualStringTree


2-1203282899
batya-x
2008-02-18 00:14
2008.03.16
как поймать сообщение о изменеие картинки в IMAGE


2-1203099019
Danila
2008-02-15 21:10
2008.03.16
Нет Access Violation после двух Free ! :)


9-1167997988
Samarik
2007-01-05 14:53
2008.03.16
Как сделать в игре притяжение к земле в Delphi?


6-1182542869
Bora_ru
2007-06-23 00:07
2008.03.16
Перехватить URL-запрос