![]() |
eXeL@B —› Основной форум —› Про доступ к контексту процессов и потоков в Софтайсе |
Посл.ответ | Сообщение |
|
Создано: 13 декабря 2005 14:31 · Личное сообщение · #1 Крякерам привет. Хотелось бы прояснить один вопросик: В многопоточных приложениях есть потребность знать контекст всех потоков. В частности адреса куда будет передано управление, когда поток станет активен. По команде "THREAD -r" , айс показывет EIP неактивных потоков = @KiSwapContext+002E. Это есть sux, потому-что идти из этих дебрей до нужного потока довольно долго. А как быть с suspended потоками ? Они ведь управление не получат пока их не резумнут. (отлавливать все CreateThread мне не понравилось, хотя если иного пути нет, то конечно придется). Разъясните чайнику, что тут можно сделать ? ![]() |
|
Создано: 13 декабря 2005 16:14 · Личное сообщение · #2 |
|
Создано: 13 декабря 2005 16:27 · Личное сообщение · #3 1. Самое место ему здесь. А ты бы куда запостил ? 2. Ринг3. 3. Ты имеешь ввиду PE explorer ? 4. А задача проста: В нужный момент сработал бряк, теперь мы находимся в данном потоке, и я хочу теперь поставить бряки во всех потоках на их текущий EIP, чтобы когда я нажму F5(run), я мог последовательно протрейсить каждый поток. Потому что я не знаю который из них мне гадит ![]() ![]() |
|
Создано: 13 декабря 2005 16:37 · Личное сообщение · #4 1) Писал я прогу, которая убивает потоки создавшые специфические окна. Она брала контекст потока, и устанавливала Context.EIP = &dwExitThread. Фокус в том, что если поток создал окно, его EIP находиться где то в глубине системмы. Для оживления я отсылал message. Относительно твоей проблеммы: такой подход не катит. Возможно стоит обратится к API ф-ям трассировки стека? 2) Продублируй топик на wasm-e ![]() |
|
Создано: 13 декабря 2005 16:44 · Личное сообщение · #5 Step пишет: Фокус в том, что если поток создал окно, его EIP находиться где то в глубине системмы. А как-же GetThreadContext ? Он ведь нормальный EIP возвращает ? Или я не прав ? Я думаю ты имел ввиду, что EIP нах-ся в глубине системы, если поток вызвал wait-функцию(WaitForSingleObject и тд) , а если нет, то EIP должен быть ок. имхо. Step пишет: Относительно твоей проблеммы: такой подход не катит. Очень это может быть ![]() ![]() |
|
Создано: 13 декабря 2005 16:55 · Поправил: Step · Личное сообщение · #6 TOG пишет: А как-же GetThreadContext ? Он ведь нормальный EIP возвращает ? Или я не прав ? В каком смысле нормальный? Если поток работает в теле проги (цикл скажем), то и EIP соответствующий (в адресном пространстве проги). Если нет то EIP где-то в глубине user32, kernel32... да чего угодно например 0x77FFxxxx. ![]() |
|
Создано: 13 декабря 2005 17:07 · Личное сообщение · #7 |
|
Создано: 14 декабря 2005 00:08 · Личное сообщение · #8 |
![]() |
eXeL@B —› Основной форум —› Про доступ к контексту процессов и потоков в Софтайсе |