|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Авг 23, 2004 13:33:35 "ObDereferenceObject decrements the given object's reference count and performs retention checks" Так написано в MSDN и у Four-F
invoke ObDereferenceObject, pProcess
MASM компилирует в push dword ptr [esi+64h] call ObDereferenceObject Но в одном из драйверов нашел другую интерпритацию :) mov ecx, [esi+64h] call ds:__imp_@ObfDereferenceObject@4 Во втором случае она рассматривается как fastcall-функция. Вопрос - как правильно вызывать? И как узнать какая ф-ция fastcall или нет? Ведь можно любоваться синим экраном долго Ж:) |
|
|
Дата: Авг 23, 2004 13:39:52 ObDereferenceObject и ObfDereferenceObject - это разные функции. VOID FASTCALL ObfDereferenceObject(IN PVOID Object) и VOID ObDereferenceObject(IN PVOID Object) |
|
|
Дата: Авг 23, 2004 13:41:38 Разные по передачи параметров, в DDK нет ObfDereferenceObject :( |
|
|
Дата: Авг 23, 2004 14:07:57 ничего удивительного.
VOID
ObDereferenceObject (
IN PVOID Object
)
/*++
Routine Description:
This is really just a thunk for the Obf version of the dereference routine
ююююю
|
|
|
Дата: Авг 23, 2004 15:16:35invoke ObDereferenceObject, pProcess или fastcall ObfDereferenceObject, pProcess |
|
|
Дата: Авг 23, 2004 15:51:22 А вот и ответ :) IDA показала. 0044F99C public ObDereferenceObject 0044F99C ObDereferenceObject proc near 0044F99C 0044F99C arg_0 = dword ptr 4 0044F99C 0044F99C mov ecx, [esp+arg_0] 0044F9A0 call ObfDereferenceObject 0044F9A5 retn 4 0044F9A5 ObDereferenceObject endp ObDereferenceObject - оболочка для ObfDereferenceObject |
|
|
Дата: Авг 23, 2004 18:37:23 а я что написал - "This is really just a thunk for the Obf version of the dereference routine" - цитата из первоисточника |
|
|
Дата: Авг 24, 2004 10:34:59 Вот, пока копался в ядре нашёл странную странность - интересный код: 00402340 public KefAcquireSpinLockAtDpcLevel 00402340 KefAcquireSpinLockAtDpcLevel proc near 00402340 retn 00402340 KefAcquireSpinLockAtDpcLevel endp 00402340 00402340 ; ---------------------------------------------------------------------- ----- 00402341 align 4 00402344 ; Exported entry 434. KeAcquireSpinLockAtDpcLevel 00402344 00402344 ; --------------- S U B R O U T I N E --------------------------------------- 00402344 00402344 00402344 public KeAcquireSpinLockAtDpcLevel 00402344 KeAcquireSpinLockAtDpcLevel proc near 00402344 retn 4 00402344 KeAcquireSpinLockAtDpcLevel endp И такого "барахла" много Ж:( Может эти функции вообще не надо вызывать? Ведь простой ret я и сам могу сделать. |
|
|
Дата: Авг 24, 2004 11:16:18 Снимаю вопрос :) это для "multiprocessor-safe way" У меня однопроцессорная система. |
|
|
Дата: Авг 24, 2004 14:38:41 Это как раз для однопроцессорной машины, в ней хватание спинлока это просто повышение IRQL до dispatch. И если мы уже на dispatch, то нет смысла устанавливать этот же самый IRQL ещё раз. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.043 |