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

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


Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 09 июля 2008 19:06
· Личное сообщение · #1

=) вопрос такой мне нужно в SEH перезаписать переменные Dr 0-7 структуры CONTEXT , как это сделать на асм ? Или где можно адресные смещения всех структур взять?! Спасибо.

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 126.7 (ветеран)
Активность: 0.140
Статус: Участник
#CCh

Создано: 09 июля 2008 19:11
· Личное сообщение · #2

SEH struct ; начало описания структуры
PrevSEH dd ? ; адрес предыдущей структуры SEH
Handler dd ? ; адрес собственного обработчика исключения
SAFEOffset dd ? ; адрес, с которого продолжится выполнение после
PrevEsp dd ? ; старое значение в ESP
PrevEbp dd ? ; старое значение в EBP
SEH ends ; конец описания


или я не понял вопроса)

-----
invoke OpenFire





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

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

www.wasm.ru/article.php?article=GordonExcept

-----
[nice coder and reverser]





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

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

Да наверно коряво обьяснил , но мне понятно о чем речь вот что то типо этого
установка сех
; install SEH
push dword seh_handler
push dword [fs:0]
mov dword [fs:0], esp


а вот это мне надо
[esi+CONTEXT.Eip]
доступ из вызванного сеха к переменным Dr 0-7, это можно сделать выставив значения смещений из сех , так как в сехе доступна эта структура для изменения. Какие смещения должны быть , плиз на примере =)
mov [ebx.CONTEXT.Dr7],eax еще один пример

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 303.7 (мудрец), 4thx
Активность: 0.190
Статус: Участник
tPORt Manager

Создано: 09 июля 2008 19:32
· Личное сообщение · #5

Из сеха есть доступ к контексту. Вот его структура, посчитай нужное смещение и готово.
typedef struct _CONTEXT {
DWORD ContextFlags;
DWORD Dr0;
DWORD Dr1;
DWORD Dr2;
DWORD Dr3;
DWORD Dr6;
DWORD Dr7;

FLOATING_SAVE_AREA FloatSave;

DWORD SegGs;
DWORD SegFs;
DWORD SegEs;
DWORD SegDs;

DWORD Edi;
DWORD Esi;
DWORD Ebx;
DWORD Edx;
DWORD Ecx;
DWORD Eax;

DWORD Ebp;
DWORD Eip;
DWORD SegCs; // MUST BE SANITIZED
DWORD EFlags; // MUST BE SANITIZED
DWORD Esp;
DWORD SegSs;
BYTE ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION];
}




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 09 июля 2008 19:35 · Поправил: Hellspawn
· Личное сообщение · #6

я же скинул ссылку

EXCEPTION_POINTERS +0 Указатель на структуру: EXCEPTION_RECORD
+4 Указатель на структуру: CONTEXT

EXCEPTION_RECORD
+0 ExceptionCode
+4 ExceptionFlag
+8 NestedExceptionRecord
+0C ExceptionAddress
+10 NumberParameters
+14 AdditionalData

CONTEXT
+0 context flags
DEBUG REGISTERS
+4 debug register #0
+8 debug register #1
+C debug register #2
+10 debug register #3
+14 debug register #6

-----
[nice coder and reverser]





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

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

Hellspawn

Да как всегда не все прогялел. Спасибо.
Так правильно будет ?

push ebp
mov ecx, dword ptr[esp + 8]
mov ebx, dword ptr[esp + 10h]
mov [ebx.4], eax ;dr0
mov [ebx.8], eax ;dr1
mov [ebx.c], eax ;dr2
mov [ebx.10], eax ;dr3



-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

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

Информация, передаваемая внутрипоточным обработчикам

При вызове внутрипоточного обработчика, ему в качестве параметров передаются указатели на три структуры данных. Эти указатели располагаются в стеке следующим образом:

ESP+4 Указатель на структуру: EXCEPTION_RECORD
ESP+8 Указатель на принадлежащую обработчику структуру ERR.
ESP+C Указатель на структуру: CONTEXT
ESP+10 Param



-----
[nice coder and reverser]





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 09 июля 2008 19:53
· Личное сообщение · #9

ESP+C Указатель на структуру: CONTEXT
да я понял , парадокс но в реверсируемо проге стоит не С а 10 !!! и все работает

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 09 июля 2008 19:56 · Поправил: Hellspawn
· Личное сообщение · #10

возможно там комманда другая, аля MOV EAX,DWORD PTR SS:[EBP+10h]

-----
[nice coder and reverser]





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 09 июля 2008 19:59
· Личное сообщение · #11

MOV EBX,DWORD PTR SS:[ESP+10] только что с отладчика

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube




Ранг: 27.7 (посетитель), 2thx
Активность: 0.01=0.01
Статус: Участник

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

значит до этого был пуш или sub esp




Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 10 июля 2008 12:44
· Личное сообщение · #13

ant_man хм , точно там выше спрятался пуш..

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube



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


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