Сейчас на форуме: vasilevradislav, rmn, Magister Yoda (+7 невидимых)

 eXeL@B —› Программирование —› GetThreadContext
Посл.ответ Сообщение


Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 18 июля 2008 12:08 · Поправил: DaRKSiDE
· Личное сообщение · #1

Проблема такого плана...
Создаю процесс ... потом жду события EXCEPTION_BREAKPOINT
все нормально...
потом вызываю GetThreadContext ... перед этим пушу тред процесса и offset CONTEXT <>
структура контекста находиться внутри исполняемого кода а не в секции данных
так вот... все нормально пока размер кода перед структурой не доходить до критической точки...
допустим размер кода == 1000 потом идет структура...
достаточно привысить этот размер на 1 байт, при этом структура естественно смещается на +1
и GetThreadContext выдает ошибку - ERROR_NOACCESS (000003E6)...
Сука... делаю размер кода на один байт меньше и все работает...
флаг секции где лежит структура и код - Е0000020 т.е. ошибки записи не может быть...
В чем возможен касяк?
Подскажите люди добрые...

-----
aLL rIGHTS rEVERSED!





Ранг: 116.6 (ветеран), 8thx
Активность: 0.050
Статус: Участник

Создано: 18 июля 2008 12:24
· Личное сообщение · #2

CONTEXT скорее всего вылезает за границу твоей секции и при заполнении его в API происходит запись по адресу, к которому у тебя вообще нет доступа.




Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 18 июля 2008 13:07
· Личное сообщение · #3

dermatolog пишет:
CONTEXT скорее всего вылезает за границу твоей секции


Наврятли, т.к. после структуры контекста у меня еще идут структура процессинфо... с последним таких проблем нет... и туды все пишется на ура...
Попробывал перенести контекст в секцию данных... все заработало... но мне контекст там не нужен...
ибо в моей проге предполагается только одна секция...

-----
aLL rIGHTS rEVERSED!





Ранг: 116.6 (ветеран), 8thx
Активность: 0.050
Статус: Участник

Создано: 18 июля 2008 13:24
· Личное сообщение · #4

кодес в студию )



Ранг: 115.1 (ветеран), 3thx
Активность: 0.070
Статус: Участник

Создано: 18 июля 2008 19:41 · Поправил: __
· Личное сообщение · #5

DaRKSiDE пишет:
так вот... все нормально пока размер кода перед структурой не доходить до критической точки...


структура CONTEXT должна быть выровнена на DWORD для 32 бит




Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 18 июля 2008 21:09
· Личное сообщение · #6

__ пишет:
структура CONTEXT должна быть выровнена на DWORD для 32 бит


Спасибо! Все заработало...

dermatolog

И тебе тоже спасибо!

__

Хотел бы еще спросить... если можно...
Я вообще хотел бы вынести все структуры из секции кода в аллоченую память...
Не подскажешь, как это сделать с уже определенными структурами как - PROCESS_INFORMATION or CONTEXT or STARTUPINFO к примеру...?
С целью уменьшить обьем кода вообще...

-----
aLL rIGHTS rEVERSED!





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 19 июля 2008 17:26
· Личное сообщение · #7

например так
mov edi, mem_context
assume edi: ptr CONTEXT

mov eax, [edi].regEip

Можно без определения регистра типа так
mov eax, [edi.CONTEXT].regEip

-----
Yann Tiersen best and do not fuck





Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 19 июля 2008 19:33 · Поправил: DaRKSiDE
· Личное сообщение · #8

PE_Kill

Все замечательно сработало! Спасибо...

-----
aLL rIGHTS rEVERSED!



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


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