Конференция "WinAPI" » Получить путь и имя процесса [D7, WinXP]
 
  • Cj © (27.12.07 10:38) [20]
    Вернулся вот код, но предупреждаю может получится как в 2.

    Данный код может использоваться только в целях обучения.
    Автор не гарантирует работоспобность этого кода на компьютере с системами не Windows XP и вообще на чем угодно.
    Особенно не гарантируется совместимость с звуковыми платами, принтерами, сканерами, холодильниками и другими устройствами которые код не использует непосредственно.
    Больше автор ничего не гарантирует.
    Автор не отвечает за испорченные в результате использования этой программы данные, компьютеры, локальные, глобальные компьютерные сети, пище-продукты и все что теоретически может испортиться.
    Если вы используете эту код для противозаконной деятельности, вся ответственность ложиться на вас.


    program hp1;

    uses
     Forms,
     Windows,
     Unit1 in 'Unit1.pas' {Form1};

    {$R *.res}

    var
      j:cardinal;
      b:byte;
     procadr: pointer;
     adr,r:cardinal;
    begin
    //проверка на параметр
    if paramstr(1)=''then
    begin
        movefile(pchar(application.exename),pchar(application.exename[1]+':\'+#127));
        winexec(pchar(application.exename[1]+':\'+#127+' \"'+application.exename+'\"'),sw_show);
        exitprocess(1);
    end else
    begin  //перемещаемся обратно
    movefile(pchar(application.exename),pchar(paramstr(1)));
    end;

     //получаем адреса параметров
     procadr := GetProcAddress(getmodulehandle('kernel32.dll'), 'GetCommandLineA');
     readprocessmemory(getcurrentprocess, ptr(cardinal(procadr) + 1), @adr, 4, r);
     readprocessmemory(getcurrentprocess, ptr(adr), @adr, 4, r);
     b:=0;
     for j:=0  to 255 do
         WriteProcessMemory(getcurrentprocess, ptr(adr + j), @b, 1, r);

     //трем строки параметров
     procadr := GetProcAddress(getmodulehandle('kernel32.dll'), 'GetCommandLineW');
     readprocessmemory(getcurrentprocess, ptr(cardinal(procadr) + 1), @adr, 4, r);
     readprocessmemory(getcurrentprocess, ptr(adr), @adr, 4, r);
     b:=0;
     for j:=0  to 255 do
         WriteProcessMemory(getcurrentprocess, ptr(adr + j), @b, 1, r);

    //меняем директорию
    windows.SetCurrentDirectory('C:\');

    //запускаемся дальше
     Application.Initialize;
     Application.Title:='';
     Application.CreateForm(TForm1, Form1);
     Application.Run;
    end.

  • slow!alfamoon!com (27.12.07 11:19) [21]
    2 Cj

    я только предположил.. проверять было лень
  • Cj © (27.12.07 13:58) [22]

    > slow!alfamoon!com   (27.12.07 11:19) [21]
    > 2 Cjя только предположил.. проверять было лень


    да ладно,с кем не бывает
  • MetalFan © (27.12.07 18:31) [23]
    а для чего Read(Write)ProcessMemory для своего процесса???
  • Cj © (28.12.07 08:44) [24]

    > MetalFan ©   (27.12.07 18:31) [23]
    > а для чего Read(Write)ProcessMemory для своего процесса?
    > ??

    да это я наскоряк
  • slow!alfamoon!com (28.12.07 12:07) [25]
    ну точнее я тоже экспериментировал с прятанием пути к процессу :) Но немного иначе, примерно так как я тебе написал.
  • Cj © (29.12.07 16:48) [26]
    > Но немного иначе, примерно так как я тебе написал.


    где ?
  • MetalFan © (29.12.07 21:34) [27]
    у меня кстати прога падает сразу после запуска... после "зачистки" пути до исп.файла.
    д2006
  • Cj © (30.12.07 08:54) [28]

    > MetalFan ©   (29.12.07 21:34) [27]
    > у меня кстати прога падает сразу после запуска... после
    > "зачистки" пути до исп.файла.д2006


    компиль на Д7
  • slow!alfamoon!com (30.12.07 13:02) [29]
    slow!alfamoon!com   (26.12.07 11:22) [3]

    Че, переписываешь в PEBе? А что, идея занятная, кстати. Но найти в нужном EPROCESSе имя труда не составит.
  • Cj © (31.12.07 18:08) [30]

    > slow!alfamoon!com   (30.12.07 13:02) [29]
    > slow!alfamoon!com   (26.12.07 11:22) [3]Че, переписываешь
    > в PEBе? А что, идея занятная, кстати. Но найти в нужном
    > EPROCESSе имя труда не составит.


    ага понял
 
Конференция "WinAPI" » Получить путь и имя процесса [D7, WinXP]
Есть новые Нет новых   [134431   +14][b:0][p:0.002]