Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2008.03.16;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "WinAPI";
Текущий архив: 2008.03.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.006 c
2-1203018290
WebSQLNeederr
2008-02-14 22:44
2008.03.16
Заменить кусок текста из мемо на свой текст


2-1203079733
SerMaxx
2008-02-15 15:48
2008.03.16
использование DBGrid или Grid


15-1202329724
No_Dead
2008-02-06 23:28
2008.03.16
Подскажите софтинку


2-1203078103
alexsashkan
2008-02-15 15:21
2008.03.16
SQL запрос,умножение значений полей


2-1203062248
Василий К.
2008-02-15 10:57
2008.03.16
Отключение тем Windows XP для определенной формы в приложении





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский