eXeL@B —› Крэки, обсуждения —› Контекст структура |
Посл.ответ | Сообщение |
|
Создано: 09 февраля 2006 10:36 · Личное сообщение · #1 |
|
Создано: 09 февраля 2006 10:38 · Личное сообщение · #2 |
|
Создано: 09 февраля 2006 10:42 · Личное сообщение · #3 |
|
Создано: 09 февраля 2006 10:45 · Личное сообщение · #4 |
|
Создано: 09 февраля 2006 10:52 · Поправил: Smon · Личное сообщение · #5 Mario555 Пасиб за ссылку, но про то я читал. Везде вид такой - mov esi, [ebp+KTRAP_FRAME.Dr0] или xor eax,eax mov [dr0],eax Это всё разрешено только в ринг0, а я имею в виду обработчик под ринг3. Каким образом можно вычислить адреса dr'ов в обработчике без использования SetThreadContext и GetThreadContext... К сожалению никакой инфы по тому поводу нигде не нашел... ----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels |
|
Создано: 09 февраля 2006 12:50 · Личное сообщение · #6 CONTEXT STRUCT ; sizeof = 02CCh regDr0 DWORD ? ; 0004h regDr1 DWORD ? ; 0008h regDr2 DWORD ? ; 000Ch regDr3 DWORD ? ; 0010h regDr6 DWORD ? ; 0014h regDr7 DWORD ? ; 0018h ; This section is specified/returned if the ; ContextFlags word contians the flag CONTEXT_FLOATING_POINT. FloatSave FLOATING_SAVE_AREA <> ; 001Ch ; This section is specified/returned if the ; ContextFlags word contians the flag CONTEXT_SEGMENTS. regSegGs DWORD ? ; 008Ch regSegFs DWORD ? ; 0090h regSegEs DWORD ? ; 0094h regSegDs DWORD ? ; 0098h ; This section is specified/returned if the ; ContextFlags word contians the flag CONTEXT_INTEGER. regEdi DWORD ? ; 009Ch regEsi DWORD ? ; 00A0h regEbx DWORD ? ; 00A4h regEdx DWORD ? ; 00A8h regEcx DWORD ? ; 00ACh regEax DWORD ? ; 00B0h ; This section is specified/returned if the ; ContextFlags word contians the flag CONTEXT_CONTROL. regEbp DWORD ? ; 00B4h regEip DWORD ? ; 00B8h regSegCs DWORD ? ; 00BCh MUST BE SANITIZED regEFlags DWORD ? ; 00C0h MUST BE SANITIZED regEsp DWORD ? ; 00C4h regSegSs DWORD ? ; 00C8h ; This section is specified/returned if the ContextFlags word ; contains the flag CONTEXT_EXTENDED_REGISTERS. ; The format and contexts are processor specific ExtendedRegisters BYTE MAXIMUM_SUPPORTED_EXTENSION dup(?) ; 00CCh CONTEXT ENDS За это описание кланяемся Four-F-у... в твоем обработчике исключения по адресу [ebp+10h] лежит указатель на контекст. |
|
Создано: 09 февраля 2006 13:17 · Личное сообщение · #7 то же самое для любителей С в winnt.h : typedef struct _CONTEXT { // // The flags values within this flag control the contents of // a CONTEXT record. // // If the context record is used as an input parameter, then // for each portion of the context record controlled by a flag // whose value is set, it is assumed that that portion of the // context record contains valid context. If the context record // is being used to modify a threads context, then only that // portion of the threads context will be modified. // // If the context record is used as an IN OUT parameter to capture // the context of a thread, then only those portions of the thread's // context corresponding to set flags will be returned. // // The context record is never used as an OUT only parameter. // DWORD ContextFlags; // // This section is specified/returned if CONTEXT_DEBUG_REGISTERS is // set in ContextFlags. Note that CONTEXT_DEBUG_REGISTERS is NOT // included in CONTEXT_FULL. // DWORD Dr0; DWORD Dr1; DWORD Dr2; DWORD Dr3; DWORD Dr6; DWORD Dr7; // // This section is specified/returned if the // ContextFlags word contians the flag CONTEXT_FLOATING_POINT. // FLOATING_SAVE_AREA FloatSave; // // This section is specified/returned if the // ContextFlags word contians the flag CONTEXT_SEGMENTS. // DWORD SegGs; DWORD SegFs; DWORD SegEs; DWORD SegDs; // // This section is specified/returned if the // ContextFlags word contians the flag CONTEXT_INTEGER. // DWORD Edi; DWORD Esi; DWORD Ebx; DWORD Edx; DWORD Ecx; DWORD Eax; // // This section is specified/returned if the // ContextFlags word contians the flag CONTEXT_CONTROL. // DWORD Ebp; DWORD Eip; DWORD SegCs; // MUST BE SANITIZED DWORD EFlags; // MUST BE SANITIZED DWORD Esp; DWORD SegSs; // // This section is specified/returned if the ContextFlags word // contains the flag CONTEXT_EXTENDED_REGISTERS. // The format and contexts are processor specific // BYTE ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION]; } CONTEXT; |
|
Создано: 09 февраля 2006 18:49 · Личное сообщение · #8 |
|
Создано: 09 февраля 2006 18:58 · Личное сообщение · #9 |
eXeL@B —› Крэки, обсуждения —› Контекст структура |