kejcerfcrv может для вас все просто, но я в этих структурах ЧАЙНИК и даже хуже! Можно по очереди шаг за шагом объяснить. Если вам не трудно! К примеру "PUNICODE_STRING ServerName" - могу за декларировать как DWORD и передать 0(локальная машина)?
O_o И к чему это оскорбление! В других случаях я пользуюсь GetLastError, а здесь в (NTSTATUS) NtRaiseHardError. Утилита удобна тем, что имеет перевод на русский. К примеру GetLastError используется для получения размера буфера 234 (0xEA)ERROR_MORE_DATA. Так что давайте луче по теме.
Ось Win XP SP3, сервер локальная машина. Хочу получить список доменов, групы и пользователи которые в них входят. Ну и конечна изменять их!
Shadovv13 Дам вам совет. Не юзайте виньеррор коды. Для каждого из них поставлено в соответствие десятки нтстатусов. Есть системные таблицы, по которым отображаются эти коды. Не следует их юзать!
Shadovv13 Да, в этом ваша проблема. Нельзя создать обьект без описания ObjectAttributes. Это самые основы нэйтива и макро выше тоже основной. Видимо коденг это не ваше, не обижайтесь, но это так.
все у меня с кодингом получается, только я самоучка. Вот приходится все самому искать пробовать, догадываться. Здесь я никак не могу понять, и некому объяснить! Вот к примеру: typedef struct _LSA_UNICODE_STRING { USHORT Length; USHORT MaximumLength; PWSTR Buffer; } LSA_UNICODE_STRING, *PLSA_UNICODE_STRING, UNICODE_STRING, *PUNICODE_STRING USHORT Length; - сюда что задавать, размер Buffer? USHORT MaximumLength; - не понятно!!! PWSTR Buffer - указатель на юникод строку, да? так и буфер содержащий текст в фомате юникод.
Shadovv13 Когда не хватило ASC2 таблицы, символы расширили. В то время и появились кодировки. Сейчас один символ занимает 2 байта в памяти. Такая строка называется Wide. Соответственно тип WIDECHAR или WCHAR. Так как со строками выполняются конкатенации и прочие манипуляции, например релокации памяти под буфер, то строки описываются структурой. Она содержит текущий размер строки, при это терминирующий символ не обязателен, но он обязателен при вычислении длины строки. Также структура содержит размер буфера со строкой и адрес самой строки. Это структуры UNICODE_STRING и ANSI_STRING, последняя отличается от первой только тем, что символы ASC2, тоесть однобайтные и сама строка имеет тип PSTR. Нэйтив работает только с юникодовскими строками. Далее любой обьект в системе может быть именованным и относиться к директории определённой. Например можно создать именованный поток и обращаться к нему по имени, а не по идентификатору. Это описывают атрибуты, также дескриптор безопасности и прочию инфу.
Так тут понятно!!! Теперь описатель __in POBJECT_ATTRIBUTES ObjectAttributes В MSDN сказано так: typedef struct _OBJECT_ATTRIBUTES { ULONG Length; HANDLE RootDirectory; PUNICODE_STRING ObjectName; ULONG Attributes; PVOID SecurityDescriptor; PVOID SecurityQualityOfService; } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES; ULONG Length; - sizeof(OBJECT_ATTRIBUTES) - размер структуры! HANDLE RootDirectory; -?????? не знаю, сказано может бить НУЛ PUNICODE_STRING ObjectName; - вот где взять это имя объекта???? ULONG Attributes; - ? PVOID SecurityDescriptor; -? PVOID SecurityQualityOfService;-? Здесь мне ничего не ясно!!!!
Shadovv13 RootDirectory - директория обьекта, если не важна, то NULL. ObjectName - имя обьекта, вероятно это порт. Думаю NULL, судя по сурсу и аргументам апи также. Остальная часть тоже нули видимо, если вы не используете имперсонацию. Я же привёл часть сурса, там есть стандартное макро, не наглейте а хотябы для приличия сгуглите его.
Ни в коем случае! Да к NativeAPI мне еще далеко, надеюсь в скором будущем кто-то напишет статью на эту тему. А пока спасибо всем, за попытки мне помочь!
Shadovv13 Нэйтив это родной системный интерфейс, он не извращён и не толсты, в отличие от виньапи. Вы с таким же успехом могли заюзать напрямую порты лса, конечно смысла нет, лучше готовые паблик интерфейсы, но вы всёже выбрали промежуточный уровень. Если не секрет, то для чего ?
Так исторически сложилось что администрирую некую сеть в районе, а точнее и компы у не очень опытных пользователей. А последний частенько что то учудить. Вот и решил написать руткит для юзер мода с возможностью удалённого подключения. Вы наверно скажете что подобных программ кучи - так и есть, но также есть несколько опытных юзверга которые частенько проверяют на безопасность мои владения. Так что приходится обращаться к нестандартным методам!
Shadovv13 А толку то от сема, пассы там многократно пошифрованы. Я когда то копал лса, но это давно было. Не знаю что сия апи делает, но думаю есть более глдные способы захачить пароль. В любом случае это никто не юзает. Привилегии получают через эскалацию, если привилегии есть, то ставят бекдор. В младших версиях системы были костыли типа провайдеров, которые подгружались при авторизации в винлогоне, но это вроде уже не робит. Тоесть так я и не понял зачем вам та апи.
Эта апи только маленькая часть от всего проекта. Она позволяет управлять юзерами, группами, алиасами и доменами. К примеру можно создать пользователя в домене Builtin с не ограниченными возможностями ну и.т.д
Shadovv13 Должны быть высокоуровневые документированные апи. Вы уверены что интерфейс не изменился в W7, W8 ?
НЕТ! к сожалению в MSDN о samlib.dll ничего не сказано. Есть возможность с помощью RPC запросов к серверу samsrv.dll, но я думаю не потяну!!!!