Определение параметров запуска приложений

Discussion in 'WASM.WIN32' started by DeRekX, Apr 22, 2009.

  1. DeRekX

    DeRekX New Member

    Blog Posts:
    0
    В утилите Руссиновича procexp, наглядно выводятся параметры запуска приложений.

    Какие могут быть варианты определения параметров запуска чужих приложений?

    (GetCommandLine() -- получает параметры для текущего процесса)

    Заранее спасибо
     
  2. Flasher

    Flasher Member

    Blog Posts:
    0
    Я создавал такую тему, search'ни тут.
     
  3. DeRekX

    DeRekX New Member

    Blog Posts:
    0
    Flasher
    спасибо, нашёл http://wasm.ru/forum/viewtopic.php?id=29058

    Использование PEB привяжет к версии винды\SP + паливно читать память чужого процесса

    какой вариант ты выбрал ?
     
  4. DeRekX

    DeRekX New Member

    Blog Posts:
    0
    http://forum.sources.ru/index.php?showtopic=225024
    видимо через PEB
     
  5. mrcrown

    mrcrown Member

    Blog Posts:
    0
    Так, если я не ошибаюсь, то по смещению 0x00020000 Лежит структура параметров запуска процесса! Это смещение постоянно для каждого процесса. (Если у кого есть возможность проверьте на разных версиях форточек.)
     
  6. Flasher

    Flasher Member

    Blog Posts:
    0
    Почему привяжет ? структура PEB вроди начиная с xp sp1 и закончивая win7 одинаковая.
     
  7. mrcrown

    mrcrown Member

    Blog Posts:
    0
    Пля, то ли я дурной то ли лыжи не едут... А где сцылочка на "Редактировать"????

    Кста, поставь на эту структуру права PAGE_NOACCESS И глянь в тот же процесс експлорер.
     
  8. leo

    leo Active Member

    Blog Posts:
    0
    Главное не в том, чтобы она лежала по фикс.адресу для разных версий винды, а по фикс.вирт.адресу для всех процессов данной версии - тогда ее адрес можно спокойно определить в своем процессе и затем за один раз прочитать из чужого
     
  9. ohne

    ohne New Member

    Blog Posts:
    0
    инжектиш длл

    Code (Text):
    1. PTEB
    2. NtGetCurrentTeb()
    3. {
    4.     PTEB Teb = {0};
    5.  
    6.     __asm
    7.     {
    8.         mov eax, fs:[0x18]
    9.         mov [Teb], eax
    10.     }
    11.     return Teb;
    12. }
    13.  
    14. PWCHAR
    15. LdrCommandLine()
    16. {
    17.     PWCHAR CmdLine = {0};
    18.     PPEB Peb = NtGetCurrentTeb()->Peb;
    19.  
    20.     ___try
    21.     {
    22.         CmdLine = Peb->ProcessParameters->CommandLine.Buffer;
    23.     }
    24.     ___except(EXCEPTION_EXECUTE_HANDLER){}
    25.     ___finally
    26.  
    27.     return CmdLine;
    28. }
    этого кода хватит
     
  10. Clerk

    Clerk Забанен

    Blog Posts:
    0
    mrcrown
    Оно не постоянно, адрес система выбирает. Использовать фиксированные адреса - большое зло, не делой это.
     
  11. tylerdurden

    tylerdurden New Member

    Blog Posts:
    0
    из дровера атачишься и все (и шоб в 2к работало юзай это а не стандартную PsGetProcessPeb или как там ее)
    PPEB ProcessGetPEB(HANDLE hProcess)
    {
    PROCESS_BASIC_INFORMATION pbiInfo;
    DWORD dwSize;

    if(NT_SUCCESS(ZwQueryInformationProcess(hProcess,ProcessBasicInformation,&pbiInfo,sizeof(pbiInfo),&dwSize)))
    {
    return pbiInfo.PebBaseAddress;
    }
    return 0;
    }
     
  12. Clerk

    Clerk Забанен

    Blog Posts:
    0
    tylerdurden
    Лучше напрямую из EPROCESS указатель взять, только смещения могут быть разные, просто таблицу сделать версия/оффсет.
     
  13. mrcrown

    mrcrown Member

    Blog Posts:
    0
    Так я их и не юзою! Просто чуваку способ с ПЕБ не понравился :)
     
  14. DeRekX

    DeRekX New Member

    Blog Posts:
    0
    Всем спасибо за ответы.
    Необходимо эти параметры смотреть под учёткой юзера, поэтому драйвера нельзя использовать.
    Антивирус будет палить инжект dll.