вот чтото застопорило меня .data context CONTEXT <> .code start: call GetCurrentThread invoke GetThreadContext, eax, offset context почемуто неработает, CONTEXT и встеке пытался размещать тоже самое
readme MSDN: You cannot get a valid context for a running thread. Use the SuspendThread function to suspend the thread before calling GetThreadContext. If you call GetThreadContext for the current thread, the function returns successfully; however, the context returned is not valid.
вот делаю так .data context CONTEXT <> ThreadID dd ? .code proba proc nop ret proba endp start: invoke CreateThread,0,0, offset proba,0,CREATE_SUSPENDED ,offset ThreadID invoke GetThreadContext, eax, offset context тоже чтото неработает заодно подскажи про мсдн http://msdn.microsoft.com/library/rus/ вот ввожу в левый поиск GetThreadContext нечего ненаходит в каком разделе искать?
1. Нужно делать прежде SuspendThread. 2. Твоя ссылка - это перевод MSDN, там очень мало всего. Топай на http://msdn.microsoft.com/library/. 3. Скачай какой-нибудь справочник по WinAPI, сильно облегчишь себе и другим жизнь. В сети их много (самый распространённый - Win32.hlp из справки от продуктов Борланд, 16 мб), есть и попытки перевода, но не связывайся с этим.
за ссылку спасибо хм зачем делать SuspendThread когда он и так создаётся такой CREATE_SUSPENDED чтот неработает всёравно ошибок вроденет lasterr показывает всё нормально _1289297035__GetThreadContext.asm
Ну, глянь аттач под отладчиком. У меня XP, всё ок, даже без лишнего вызова SuspendThread. _112690901__tr.zip
volodya В его коде CONTEXT первым в секции .data, куда уж больше тут выравнивать. readme Ты аттач смотрел? Работает?
да тот что ты дал, в отладчике где (он у тебя с адреса 13000 начинается)CONTEXT там данные так понулям и остаются , нечего непойму а ты в каком отладчике сматрел? может у меня что нетак
Вообще то перед вызовом GetThreadContext не мешало бы context.ContextFlags = CONTEXT_FULL установить. Иначе получается чего просишь, то и получаешь - одни нули
спасибо заработало, у меня XP а про ContextFlags его нужно заполнять перед вызовом GetThreadContext я так понял какие регистры мне нужно получить
IceStudent > "А в XP, значит, не обязательно?" Почему же ? Под XP в твоем tr.exe ContextFlags = 0 и соответственно в context ничего не пишется. Стоит перед вызовом записать валидные флаги - все OK - что попросишь, то винда тебе и выдаст К сожалению, в XP до внутренностей GetContextThread -> ZwGetContextThread не доберешься, а вот в win 98 в дизасме все прекрасно видно - последовательно проверяются флаги CONTEXT_XX, если флаг установлен - копирование, если нет - дальше
А а у нас с readme тоже "нормально", т.е. не заполняется Может от SP? зависит или от отладчика - не знаю каким образом, но чем черт не шутит А ты ведь так и не ответил - в каком отладчике смотрел. А лучше конечно без отладчика - вывести значение какого-нить регистра...
проверяно с отладчиком и без один результат проверил на одном регистре eax 599464833__GetThreadContext.asm
вот ещё вот этот пример каторый в атаче будет стабильно работать в xp и 2000? и какой способ есть лёгкий узнавания версии ос _1469528697__nativ GetThreadContext.asm