|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июн 3, 2004 21:20:15 Всем добрый (Вечер / День / Утро) ! Вопрос немного обширнее. Моя задача всё еще запустить драйвер без прав админа. По крайней мере была, но зашел куда – я сам не знаю. Может исчо куда пригодится… Короче, не буду много писать «для начала», т.к. на подобные темы общение уже было, но ксожалению, по-моему, безрезультатно. Начнем: Без прав админа получаем Handle0 от OpenSCManagerA@12, отдаем его OpenServiceA@12 ну типа эта штука прокатывает и дает Handle, но… при последующем вызове StartServiceA@12 ессно ошибка. Если делать то же самое из админа – то всё путем. Так вроде всё обычно… Но если из SoftIce сравнивать работу, и анализ параметров в StartServiceA, то видем следующее. 1) Handle – это указательна место в памяти (Pointer1), которое содержит ссылку на адрес процедуры(Pointer2) из RpCrt4, единственно, что делаюшую: {mov eax,XXX; Ret;} Кстати там таких куча и в ходе StartServiceA часто вызываются. 2) По адресу Pointer1+4 содержится число «89ABCDEF» - при отсутствии которого – ошибка 3) По адресу Pointer2+4 содержится число «FEDCBA98» - при отсутствии которого – ошибка 4) Pointer2+XXX куча параметров, в том чиле таких же заглушек в RpCrt4. 5) Проверяется PEB… Ну, скажете Вы: и чё теперь ты хочешь, ну и в чем дело-то… А дело вот в чем: При запуске OpenServiceA все структуры ПОЛНОСТЬЮ заполняются (если из админа). А вот если не из админа, то только отчасти, но если их заполнять самому, чем, впрочем я и занимался, то всё прокатывает. Прокатывает до определенного момента. Когда заходишь очень глубоко, то путаешься. Да и хоть структура с параметрами чуть-четь известно (уже целый А4 лист), но очень мало. Хотелось бы инфы какой. Почему взялся, может и безрезультатно, но когда видишь проверки в ядре по типу №2 или №3 (описано выше), то что-то вселяет энтузиазм. А самое интересное, так то, что все данные в моем адр. Пр-ве. Можно и автоматически заполнить. Так вот все это дело всё: OpenServiceA, OpenSCManagerA, StartServiceA уходят в NdrClientCall2. Что это и с чем это есть??? Можа у кого исходники какие есть :-) Короче, кто чем сможет………… please З.Ы. Sorry за то, что длинно - короче не получилось. Заранее благодарен. --==PPS==-- |
|
|
Дата: Июн 3, 2004 21:35:18 NdrClientCall2 - это RPC-колл, который спускается к LPC. Там достаточно наворочено. Что до остального, то, несмотря на обилие слов, не совсем понятно как ты хочешь достичь своей цели. Хаканьем в ring-3? А ты уверен, что получится? Как-то тяжело лично мне воспринимать твои изыскания. Очень уж как-то неструктурировано все. Нет бы по порядку изложить валидную последовательность загрузки, наметить векторы исследования, получить всю доступную информацию о структурах... А ты, как мне кажется по описанию, с места в карьер... |
|
|
Дата: Июн 3, 2004 21:41:43 Что касается ring-3 так говорю же, что сам программно заполняю структуру, покуда знаю. Так вот хотя бы полностью знать бы её. Единственное опасение, что моя нить оставляет данные, а другая их забирает и отследить будет сложно: на всех BPM не хватит. А по поводу неструктурированности и векторов, так вот у меня у же краша и едет... вот за советом и пришел... я бы и сам рад в голове порядок навести... Help! |
|
|
Дата: Июн 3, 2004 21:44:02 что сам программно заполняю структуру КАКУЮ структуру? |
|
|
Дата: Июн 3, 2004 21:52:12 · Поправил: PavPS От вызова OpenService выдается handle, который указавает на эту ХХХ структуру. Она и передается NdrClientCall2, поэтому эта штука и заинтересовала. Считаю, что зная, как работает эта ф-я, имея её код (или идею), можно знать структуру. За неимением этого и отслеживаю все обращения к памати от этой ф-ии. Но это архигеморно. Например, сночала всречается обращение: mov eax,handle mov eax,[eax] lea ebx,[eax+0ac] push [eax+08] call [ebx] т.е. размах структуры - до "0AC" параметров. Опять же черт её знает чё за структура! Есть еще куча обращений, но по ближе Все поля заполнены как надо из админа, а не из админа только часть. И еще всё в моем процессе. данные в него пишутся -> не статические. 95%, что специальная структура |
|
|
Дата: Июн 3, 2004 22:04:32 · Поправил: volodya Я начинаю тихо дуреть. Так что же тебя останавливает??? CLIENT_CALL_RETURN RPC_VAR_ENTRY NdrClientCall2( PMIDL_STUB_DESC pStubDescriptor, PFORMAT_STRING pFormat, ... );
typedef struct _MIDL_STUB_DESC {
void* RpcInterfaceInformation;
void* (__RPC_API * pfnAllocate) (size_t);
void (__RPC_API * pfnFree) (void*);
union
{
handle_t* pAutoHandle;
handle_t* pPrimitiveHandle;
PGENERIC_BINDING_INFO pGenericBindingInfo;
} IMPLICIT_HANDLE_INFO;
const NDR_RUNDOWN* apfnNdrRundownRoutines;
const GENERIC_BINDING_ROUTINE_PAIR* aGenericBindingRoutinePairs;
сonst EXPR_EVAL* apfnExprEval;
const XMIT_ROUTINE_QUINTUPLE* aXmitQuintuple;
const unsigned char* pFormatTypes;
int fCheckBounds;
unsigned long Version;
MALLOC_FREE_STRUCT* pMallocFreeStruct;
long MIDLVersion;
const COMM_FAULT_OFFSETS* CommFaultOffsets;
const USER_MARSHAL_ROUTINE_QUADRUPLE* aUserMarshalQuadruple;
const NDR_NOTIFY_ROUTINE* NotifyRoutineTable;
ULONG_PTR mFlags;
const NDR_CS_ROUTINES* CsRoutineTables;
void* Reserved4;
ULONG_PTR Reserved5;
} MIDL_STUB_DESC, *PMIDL_STUB_DESC;
Догадайся с трех раз откуда я это взял :) |
|
|
Дата: Июн 3, 2004 22:17:02 · Поправил: _Juicy Volodya, а вы уверены, что все умеют в SDK копаться? В МСДНе-то этого нет. В общем, PavPS, все просто - эти процедуры обращаются по RPC к services.exe, менеджеру служб. Но вызов по RPC тоже требует аутентификации, с полными криденшлами, и что там ни пропатч в этой структуре, не зная их и не из-под админа вы его не вызовете. И, между прочим, процедура аутентификации RpcBindingSetAuthInfo всегда возвращает S_OK, даже если не проходит, только вот последующие вызовы слетят. |
|
|
Дата: Июн 3, 2004 22:22:25 При запуске OpenServiceA все структуры ПОЛНОСТЬЮ заполняются (если из админа). А вот если не из админа, то только отчасти, но если их заполнять самому, чем, впрочем я и занимался, то всё прокатывает. Прокатывает до определенного момента. Так вот, там и заполняется структура с криденшлами - SEC_WINNT_AUTH_IDENTITY. |
|
|
Дата: Июн 3, 2004 22:44:14 2 Volodya "Так что же тебя останавливает???" А я черт его знает... Уже пробую... Спасибо... _Juicy только вот последующие вызовы слетят Заметил. Всем бальшое спасибо. Продолжаю... |
|
|
Дата: Июн 4, 2004 12:35:30 Volodya, а вы уверены, что все умеют в SDK копаться? В МСДНе-то этого нет как раз в MSDN это и есть. хотя я сначала подумал, что это очередная цитата из исходников винды :) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.047 |