eXeL@B —› Программирование —› NtSystemDebugControl |
Посл.ответ | Сообщение |
|
Создано: 08 октября 2008 22:29 · Личное сообщение · #1 Все доброго всремени суток. Вопрос прост и лаконичен - где найти описание вышеупомянутой функции? Гугл не предлагать - и без вас гуглил уже, но там куча ссылок, и везде неполное описание, а нужна вся доступная на сегодня инфа, тем не менее, буду рад любым ссылкам, может, хоть слеплю из того, что будет, то, что надо. ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 08 октября 2008 23:01 · Поправил: Hellspawn · Личное сообщение · #2 |
|
Создано: 08 октября 2008 23:06 · Личное сообщение · #3 У Неббета есть NTSYSAPI NTSTATUS NTAPI ZwSystemDebugControl( IN DEBUG_CONTROL_CODE ControlCode, IN PVOID InputBuffer OPTIONAL, IN ULONG InputBufferLength, OUT PVOID OutputBuffer OPTIONAL, IN ULONG OutputBufferLength, OUT PULONG ReturnLength OPTIONAL ); ----- Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes |
|
Создано: 08 октября 2008 23:10 · Личное сообщение · #4 Hellspawn пишет: как ни странно, но в гугле всё есть. что в твоём понимании - "полное описание"? typedef enum _SYSDBG_COMMAND { //Windows NT SysDbgGetTraceInformation = 1, SysDbgSetInternalBreakpoint = 2, SysDbgSetSpecialCall = 3, SysDbgClearSpecialCalls = 4, SysDbgQuerySpecialCalls = 5, //NT 5.1 SysDbgDbgBreakPointWithStatus = 6, SysDbgSysGetVersion = 7, SysDbgCopyMemoryChunks_0 = 8, SysDbgCopyMemoryChunks_1 = 9, SysDbgCopyMemoryChunks_2 = 10, SysDbgCopyMemoryChunks_3 = 11, SysDbgSysReadControlSpace = 12, SysDbgSysWriteControlSpace = 13, SysDbgSysReadIoSpace = 14, SysDbgSysWriteIoSpace = 15, SysDbgSysReadMsr = 16, SysDbgSysWriteMsr = 17, SysDbgSysReadBusData = 18, SysDbgSysWriteBusData = 19, SysDbgSysCheckLowMemory = 20, //NT 5.2 SysDbgEnableDebugger = 21, SysDbgDisableDebugger = 22, SysDbgGetAutoEnableOnEvent = 23, SysDbgSetAutoEnableOnEvent = 24, SysDbgGetPitchDebugger = 25, SysDbgSetDbgPrintBufferSize = 26, SysDbgGetIgnoreUmExceptions = 27, SysDbgSetIgnoreUmExceptions = 28 } SYSDBG_COMMAND, *PSYSDBG_COMMAND; Вот эти все классы и что они из себя представляют - это полное описание ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 08 октября 2008 23:12 · Личное сообщение · #5 |
|
Создано: 08 октября 2008 23:12 · Поправил: Hellspawn · Личное сообщение · #6 |
|
Создано: 08 октября 2008 23:17 · Личное сообщение · #7 |
|
Создано: 08 октября 2008 23:30 · Личное сообщение · #8 |
|
Создано: 08 октября 2008 23:32 · Личное сообщение · #9 |
|
Создано: 08 октября 2008 23:40 · Личное сообщение · #10 |
|
Создано: 08 октября 2008 23:59 · Поправил: coderess · Личное сообщение · #11 byref - передает указатель на объект, типа Code:
Кстате, незабудь про получение привилегии на отладку SE_DEBUG_NAME для вызова NtSystemDebugControl. есть замечательная статья про привилегии может пригодится www.rsdn.ru/article/baseserv/privileges.xml ----- Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes |
|
Создано: 09 октября 2008 00:06 · Личное сообщение · #12 |
|
Создано: 09 октября 2008 00:15 · Поправил: mak · Личное сообщение · #13 ZwSystemDebugControl ZwSystemDebugControl performs a subset of the operations available to a kernel mode debugger. NTSYSAPI NTSTATUS NTAPI ZwSystemDebugControl( IN DEBUG_CONTROL_CODE ControlCode, IN PVOID InputBuffer OPTIONAL, IN ULONG InputBufferLength, OUT PVOID OutputBuffer OPTIONAL, IN ULONG OutputBufferLength, OUT PULONG ReturnLength OPTIONAL ); Parameters ControlCode The control code for operation to be performed. Permitted values are drawn from the enumeration DEBUG_CONTROL_CODE. typedef enum _DEBUG_CONTROL_CODE { DebugGetTraceInformation = 1, DebugSetInternalBreakpoint, DebugSetSpecialCall, DebugClearSpecialCalls, DebugQuerySpecialCalls, DebugDbgBreakPoint } DEBUG_CONTROL_CODE; InputBuffer Points to a caller-allocated buffer or variable that contains the data required to perform the operation. This parameter can be null if the ControlCode parameter specifies an operation that does not require input data. InputBufferLength The size in bytes of InputBuffer. OutputBuffer Points to a caller-allocated buffer or variable that receives the operation’s output data. This parameter can be null if the ControlCode parameter specifies an operation that does not produce output data. OutputBufferLength The size in bytes of OutputBuffer. ReturnLength Optionally points to a variable that receives the number of bytes actually returned to OutputBuffer. If this information is not needed, ReturnLength may be a null pointer. 1996 CH01 11/19/99 12:24 PM System Information and Control: ZwSystemDebugControl Return Value Returns STATUS_SUCCESS or an error status, such as STATUS_PRIVILEGE_NOT_HELD, STATUS_INVALID_INFO_CLASS or STATUS_INFO_LENGTH_MISMATCH. Related Win32 Functions None. Remarks SeDebugPrivilege is required to use ZwSystemDebugControl in Windows 2000. ZwSystemDebugControl allows a process to perform a subset of the functions available to a kernel mode debugger. The system should be booted from a configuration that has the boot.ini “/DEBUG” (or equivalent) option enabled; otherwise a kernel debugger variable needed for the cor- rect operation of internal breakpoints is not initialized. The data structures used by ZwSystemDebugControl are defined in windbgkd.h (includ- ed with the Platform SDK).An up-to-date copy of this file is needed to compile the code in Examples 1.3 and 1.4. One of the structures used by ZwSystemDebugControl includes a union that has grown over time, and ZwSystemDebugControl checks that the input/output buffers are large enough to hold the largest member of the union. ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube |
|
Создано: 09 октября 2008 00:18 · Личное сообщение · #14 |
|
Создано: 09 октября 2008 00:26 · Личное сообщение · #15 Бонус =) e49f_08.10.2008_CRACKLAB.rU.tgz - zwsystemdebugcontrol struct.inc ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube |
|
Создано: 09 октября 2008 00:29 · Личное сообщение · #16 Code:
И еще бонусный код + интересный код на Сииии 2e90_08.10.2008_CRACKLAB.rU.tgz - dbg.cpp ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube |
|
Создано: 09 октября 2008 20:28 · Личное сообщение · #17 ARCHANGEL пишет: Цель - взять MSR-регистр MSR_DEBUGCTLA и взвести в нем бит BTF (single-step on branches) У Криса К. есть статья про это с примерами, правда через дровину. Я пробовал этот трюк применять на практике в OllyDbg, но стабильного положительного эффекта добиться не удалось . По непонятной причине иногда команды при взведенном BTF выполняются в обычном пошаговом режиме Предполагаю, что виной тому система, т.е. какой-то (какие-то) процесс(ы) сбрасывает этот бит до выполнения следующей команды в Olly. Но это всего-лишь догадки. |
|
Создано: 10 октября 2008 15:30 · Личное сообщение · #18 BoOMBoX/TSRh,mak,coderess У меня всё вышло! Ура! В качестве примера антиотладки, если кому интересно, выкладываю вот это. Это, конечно, не всё, что можно сделать с помощью этой фичи, но хоть что-то. 304e_10.10.2008_CRACKLAB.rU.tgz - Tracer.exe ----- Stuck to the plan, always think that we would stand up, never ran. |
eXeL@B —› Программирование —› NtSystemDebugControl |
Эта тема закрыта. Ответы больше не принимаются. |