Сейчас на форуме: YDS, _MBK_, user99, ManHunter (+6 невидимых)

 eXeL@B —› Основной форум —› Про доступ к контексту процессов и потоков в Софтайсе
Посл.ответ Сообщение


Ранг: 84.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 13 декабря 2005 14:31
· Личное сообщение · #1

Крякерам привет.
Хотелось бы прояснить один вопросик:
В многопоточных приложениях есть потребность знать контекст всех потоков. В частности адреса куда
будет передано управление, когда поток станет активен.
По команде "THREAD -r" , айс показывет EIP неактивных потоков = @KiSwapContext+002E. Это есть sux,
потому-что идти из этих дебрей до нужного потока довольно долго. А как быть с suspended потоками ?
Они ведь управление не получат пока их не резумнут. (отлавливать все CreateThread мне не понравилось,
хотя если иного пути нет, то конечно придется).
Разъясните чайнику, что тут можно сделать ?



Ранг: 64.6 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 13 декабря 2005 16:14
· Личное сообщение · #2

1) С таким вопросиком ты слегка ошибся форумом (или ресурсом).
2) Контекст потока бывает двух типов - ядра и ring3
3) Ты пытаешься получить аналог TaskInfo i Pexplor-a ?
4) Больше инфы о задаче.




Ранг: 84.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 13 декабря 2005 16:27
· Личное сообщение · #3

1. Самое место ему здесь. А ты бы куда запостил ?
2. Ринг3.
3. Ты имеешь ввиду PE explorer ?
4. А задача проста: В нужный момент сработал бряк, теперь мы находимся в данном потоке, и я хочу теперь поставить бряки во всех потоках на их текущий EIP, чтобы когда я нажму F5(run), я мог последовательно протрейсить каждый поток. Потому что я не знаю который из них мне гадит



Ранг: 64.6 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 13 декабря 2005 16:37
· Личное сообщение · #4

1) Писал я прогу, которая убивает потоки создавшые специфические окна.
Она брала контекст потока, и устанавливала Context.EIP = &dwExitThread.
Фокус в том, что если поток создал окно, его EIP находиться где то в глубине системмы. Для оживления я отсылал message.
Относительно твоей проблеммы: такой подход не катит.
Возможно стоит обратится к API ф-ям трассировки стека?

2) Продублируй топик на wasm-e




Ранг: 84.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 13 декабря 2005 16:44
· Личное сообщение · #5

Step пишет:
Фокус в том, что если поток создал окно, его EIP находиться где то в глубине системмы.


А как-же GetThreadContext ? Он ведь нормальный EIP возвращает ? Или я не прав ?
Я думаю ты имел ввиду, что EIP нах-ся в глубине системы, если поток вызвал wait-функцию(WaitForSingleObject и тд) , а если нет, то EIP должен быть ок. имхо.

Step пишет:
Относительно твоей проблеммы: такой подход не катит.


Очень это может быть



Ранг: 64.6 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 13 декабря 2005 16:55 · Поправил: Step
· Личное сообщение · #6

TOG пишет:
А как-же GetThreadContext ? Он ведь нормальный EIP возвращает ? Или я не прав ?

В каком смысле нормальный? Если поток работает в теле проги (цикл скажем), то и EIP соответствующий (в адресном пространстве проги).
Если нет то EIP где-то в глубине user32, kernel32... да чего угодно например 0x77FFxxxx.




Ранг: 84.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 13 декабря 2005 17:07
· Личное сообщение · #7

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




Ранг: 78.6 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 14 декабря 2005 00:08
· Личное сообщение · #8

перед тем как использовать GetThreadContext надо заморозить поток а то вроде старые значения будут


 eXeL@B —› Основной форум —› Про доступ к контексту процессов и потоков в Софтайсе
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати