Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить ThreadID главного потока процесса 
:(
    Опции темы
hhhhhhhhhhhh
Дата 8.4.2014, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 24.7.2008

Репутация: нет
Всего: нет



Вот если запущен некий процесс - я через CreateRemoteThread загружаю в этот процесс свою dll.

Потом, в либе в момент DLL_PROCESS_ATTACH я хочу поставить CBT хук на этот процесс CBTHOOK := SetWindowsHookEx(WH_CBT, CBTHOOKPROC, HInstance, GetCurrentThreadId);
Но не работает.

Сейчас понял, что в данный момент, мы находимся в чуждом\удалённом потоке.
А как вместо GetCurrentThreadId - подставить реальный ThreadID (главного) родного потока в данном процессе?



Это сообщение отредактировал(а) hhhhhhhhhhhh - 8.4.2014, 15:42
PM MAIL   Вверх
CynicRus
Дата 8.4.2014, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 31.5.2012

Репутация: 1
Всего: 5



GetWindowThreadProcessId.
PM MAIL   Вверх
hhhhhhhhhhhh
Дата 8.4.2014, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 24.7.2008

Репутация: нет
Всего: нет



Цитата(CynicRus @ 8.4.2014,  16:06)
GetWindowThreadProcessId.

-Прога\жертва всегда находится в состоянии без окон, постоянно сидит в трее, и изредка показывает диалоги\окна при (моей) необходимости(щелчок в трее)-а потом уничтожает эти диалоги\окна при закрытии их.
Тобишь, в момент запуска моего лоадера - у жертвы нет окон.
PM MAIL   Вверх
CynicRus
Дата 8.4.2014, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 31.5.2012

Репутация: 1
Всего: 5



Ну тогда только такое приходит на ум:

Код

uses PsAPI, TlHelp32, Windows, SysUtils;

//выводит список потоков
function GetThreadsInfo(PID:Cardinal): Boolean;
  var
    SnapProcHandle: THandle;
    NextProc      : Boolean;
    ThreadEntry  : TThreadEntry32;
  begin
    SnapProcHandle := CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); //Создаем снэпшот всех существующих потоков
    Result := (SnapProcHandle <> INVALID_HANDLE_VALUE);
    if Result then
      try
        ThreadEntry.dwSize := SizeOf(ThreadEntry);
        NextProc := Thread32First(SnapProcHandle, ThreadEntry);//получаем первый поток
        while NextProc do begin
          if ThreadEntry.th32OwnerProcessID = PID then begin //проверка на принадлежность к процессу
              Writeln('Thread ID      ' + inttohex(ThreadEntry.th32ThreadID, 8));
              Writeln('base priority  ' + inttostr(ThreadEntry.tpBasePri));
              Writeln('delta priority ' + inttostr(ThreadEntry.tpBasePri));
              Writeln('');
          end;
          NextProc := Thread32Next(SnapProcHandle, ThreadEntry);//получаем следующий поток
        end;
      finally
        CloseHandle(SnapProcHandle);//освобождаем снэпшот
      end;
  end;



Добавлено через 1 минуту и 59 секунд
Ну и соответственно - таким макаром искать тредиды своего процесса, который там надо.
PM MAIL   Вверх
hhhhhhhhhhhh
Дата 14.4.2014, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 24.7.2008

Репутация: нет
Всего: нет



Блин неужели, в момент загрузки через CreateRemoteThread своей dll в чужой процесс - никто не ставил хуки(SetWindowsHookEx) на этот чужой процесс?

Или может по другому это как то можно сделать? Надо сделать просто некий лоадер - его запустили- он загрузил нашу dll в чужой процесс(с постановкой хука на этот процесс) - и закрылся...

Это сообщение отредактировал(а) hhhhhhhhhhhh - 14.4.2014, 19:07
PM MAIL   Вверх
CynicRus
Дата 14.4.2014, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 31.5.2012

Репутация: 1
Всего: 5



CreateRemoteThread - возвращает же хэндл созданного процесса.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.1074 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.