- ERROR_ACCESS_DENIED when using CreateToolhelp32Snapshot() against specific process
- Know someone who can answer? Share a link to this question via email, Twitter, or Facebook.
- Secret Net проблемы — Форум по вопросам информационной безопасности
- Secret Net проблемы — Форум по вопросам информационной безопасности
- Secret Net Studio 8. Ошибка создания директории
- Решение
- ERROR_ACCESS_DENIED настройка владельца файла
- Решение
- Другие решения
ERROR_ACCESS_DENIED when using CreateToolhelp32Snapshot() against specific process
Trying to play with different processes to read data from the memory. And for some reason it works for almost all processes on my pc but fails with only one specific (so far). I can’t understand why its happening and if there some kind of security stuff applied or what? Any help will be appreciated. The process that I’m trying hook is x64 but I’ve tested this code with different x64 processes and it worked without issue. So I don’t think its compile/x32/x64 problem. I will be happy if some one can tell when to go from there. So I can get the correct Process Id but fail to read modules from:
uintptr_t GetModuleBaseAddress(DWORD procId, const wchar_t* modName) < uintptr_t modBaseAdr = 0; HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, procId); if (hSnap == INVALID_HANDLE_VALUE) < DWORD errorCode = GetLastError(); if (ERROR_ACCESS_DENIED == errorCode) < std::cout else < std::cout > else < MODULEENTRY32 modEntry; modEntry.dwSize = sizeof(modEntry); if (Module32First(hSnap, &modEntry)) < do < if (!_wcsicmp(modEntry.szModule, modName)) < modBaseAdr = (uintptr_t)modEntry.modBaseSize; break; >> while (Module32Next(hSnap, &modEntry)); > > CloseHandle(hSnap); return modBaseAdr; >
procId = 0x4398 Got Error Access Denied code: 5
- 0x4398 process (actually a game) which is running from my user. its not the system or protected process.
Have you tried looking up the process ID in Task Manager to see which process it is? Maybe it is a protected system process. Or, there are other ways to deny access. Maybe restrictive security permissions are on the process/file. Maybe the process uses drivers that block CreateToolhelp32Snapshot() . Lots of possibilities.
I think the reason is that this process is running under a different account with higher privileges, and that all your other process are running under your account
@RemyLebeau thank you for so fast response! its process that I’m running from my user name. Its actual a game so not the system process. I will try to look and understand what is sec perm and driver block but if you have a link to good article that explain that I will be happy to learn from it.
«how to approach the problem» — It hasn’t become obvious what that problem is. That said, games are special. Generally speaking, every game has rules. Rules are an integral part, and game software will invest significant effort into establishing those rules. The only reason to peek inside the memory reflecting the game state is to evade the game’s rules. This is commonly referred to as cheating. So, anyway. what problem are you trying to solve?
0
Know someone who can answer? Share a link to this question via email, Twitter, or Facebook.
Secret Net проблемы — Форум по вопросам информационной безопасности
Secret Net проблемы — Форум по вопросам информационной безопасности
Здравствуйте!
Возникла следующая проблема с SecretNet 6.0.
При попытке запустить утилиту Монитор (инструмент SecretNet), при попытке достучаться на один конкретный сервер, вылетает ошибка:
Соединения прошло с ошибкой 0X00000486
Служба не запущена.
Оракл XE запущен, листенер тоже, все службы секретнета тоже работают и перезапускаются нормально. К другим серверам монитор цепляется нормально.
Кто-нибудь, можете подсказать, куда копать?
Сам поставил тему, сам закрываю).
Если вдруг кому-то пригодится — опишу, что было. Как выяснилось, Монитор и Сетевые Журналы используют для коннекта к оракловой БД собственную учетную запись snadmin, и пароль на эту учетку у них вшит. А я через БД недели три назад поменял пароль на эту учетку через оракл, для каких-то своих целей. Ошибка та же, что и при выключенном экземпляре БД — 426-я. Узнал у сервисдеска пароль к учетке, поменял обратно, и все взлетело!
Столкнулся с такой же проблемкой, при открытии сетевых журналов Secret Net 6.5 появляется сообщение как у вас. Но проблема в том, что старый админ ИБ уволился не оставив парольной информации. Как-нибудь можно сбросить или узнать пароль к базе SN?
DenOS, воспользуйтесь утилитой DBPasswordChange, которая находится на дистрибутиве в папке Tools — Infosec — DBPasswordChange
Сергей, подскажите пожалуйста, если знаете, утилита DBPasswordChange пароль для какого пользователя меняет?
DenOS, по-моему, DBPasswordChange меняет пароль для пользователя snadmin. Это учетная запись, под которой Secret Net получает доступ к Oracle (точно уже не помню, уже давненько с этой проблемой разбирался)
Сергей, с помощью утилиты DBPasswordChange не получилось сменить пароль 🙁 нашли другой способ сменить пароль. Для начала надо посмотреть в группах есть ли группа ORA-DBA и кто в ней прописан, если есть SYSTEM, то можно приконектиться к базе SQL следующим способом:
sqlplus «SYSTEM/ as SYSDBA»
попросит ввести пароль, оставить пустым, нажать Enter. (У меня присоединение к базе прошло успешно)
ну а затем работают следующие команды.
Если пользователь заблокирован, разблокировать его:
alter user account unlock;
Сменить пароль пользователю:
alter user SYSTEM identified by password;
тут вместо SYSTEM любой другой пользователь БД и пароль не должен начинаться с цифр, такая политика Oracle.
Вроде всё, всем спасибо и удачи.
Secret Net Studio 8. Ошибка создания директории
Пытаюсь в централизованное развертывание:
Поставил сервер с контролером домена
Поставил еще сервер, на него БД и Сервер безопасности SNS
Поставил клиент1, на него Центр управления. Добавил дистрибутив, добавил лицензию. Пытаюсь установить на сервер СБ клиент как показано в методичке, выходит ошибка:
Недопустимая операция. Ошибка создания директории ‘\\SERVERSB\Admin$\Security Code’: 5; Учетная запись: ‘ServerSB.server.net
Ошибка удаления Secret net
Здравствуйте товарищи!Подскажите,пожалуйста!Пытался удалить секрет нет,но при удалении отображается.
Secret Net — Соболь
Здравствуйте. Secret Net интегрирован с ПАК Соболь (сетевой режим). На каждом компьютере есть.
Установка SECRET NET 6
Помогите разобраться с установкой Secret net 6/ какие либо инструкции.
Сообщение было отмечено kumehtar как решение
Решение
РЕШЕНО
Оказывается почему то надо было заходить под локальным Администратором а не под пользователем созданным в контролере домена, хотя я ему выдал все права.
Если кто то может объяснить почему так буду очень рад.
Установка Secret Net LSP
Помогите с установкой Secret net lsp. Выходит ошибка
Ошибка в Visual Studio.NET при создании ASP.NET приложения
Пробую создать в Visual Studio.NET 2003 новый проект ASP.NET Web Application и не получается. .
Secret Net 6.5 Блокировка компьютера при извлечении etoken
Используется Secret Net 6.5 в режиме усиленной аутентификации. В качестве персональных.
Как открыть доступ к носителям, не удаляя Secret Net?
Всем привет. Может кто помочь в решении ситуации — установили Seсret Net (операционка W-7), который.
Вкладка в Visual Studio C# Web Веб приложение ASP.Net какие использует языки для создания сайта?
Вкладка в Visual Studio C# Web Веб приложение ASP.Net какие использует языки для создания сайта?
ERROR_ACCESS_DENIED настройка владельца файла
Я пытаюсь установить владельца файла для другого пользователя программно в C ++.
Я определенно включил SeRestorePrivilege для моего процесса. Я могу подтвердить это с помощью Process Explorer. Я запускаю процесс, он отключен, я запускаю свой код, чтобы включить его, ProcExp сообщает об этом как о включенном, я просто подхожу к точке, где должен быть установлен владелец, и он все еще включен (то есть я не случайно отключаю Это).
Что еще может быть вызвано для этого сообщения об отказе в доступе? Что я не учел?
std::wstring fileSystemObject = L"C:\test.txt"; *status_code = SetNamedSecurityInfo((wchar_t*)fileSystemObject.c_str(), SE_FILE_OBJECT, OWNER_SECURITY_INFORMATION, pSID, NULL, NULL, NULL); if (*status_code == ERROR_SUCCESS) < Log(L"Successfully set owner for " + fileSystemObject); return true; >else
РЕДАКТИРОВАТЬ: Большое спасибо за вашу постоянную помощь. Это очень ценится.
Я использовал ваш код для всех следующих тестов. По сути, я также получаю сообщения «Отказано в доступе» из вашего кода, однако отслеживаю его немного подробнее.
Во-первых, «C: \ test.txt» не был моим настоящим кодом, и, к сожалению, отсутствие обратной косой черты не является причиной моей проблемы. Спасибо за ваши острые глаза, хотя 🙂
Кроме того, я использую учетную запись администратора с отключенным контролем учетных записей, и в моей программе в манифесте установлен параметр requireAdministrator.
Однако я заметил, что и мой код, и ваш код работают с простыми файлами. После большого тестирования я обнаружил, что я получаю сообщения AccessDenied только в следующих сценариях:
1: я не владелец, и для разрешения «Взять на себя» установлено значение «Запретить», например. Каждый.
2: я владелец, и для разрешения «Взять на себя» установлено значение «Запретить», например. Каждый. Любопытно, что во втором случае, несмотря на код ошибки, смена владельца действительно происходит.
Я не понимаю, почему это происходит. Я и вы установили SE_RESTORE_NAME в токене процесса. Мне должно быть позволено произвольно установить владельца SID. Но, похоже, я не могу.
Похоже, что любой отказ от DACL в TakeOwnership отвергает мою способность стать владельцем. Тем не менее, я не могу изменить разрешения, пока не смогу стать владельцем! вздох.
Я мог бы попытаться установить SeTakeOwnershipPrivilege, как вы изначально рекомендовали, взяв на себя владение, изменив разрешения, установив владение внешним. Какая боль. И я даже не уверен, что это сработает.
Кажется, он находится в аналогичной ситуации (я получаю 1307, если я не настроил токен процесса должным образом). Но CreatePrivateObjectSecurityEx требует гораздо больше настроек.
Хммм. Спасибо за ваше время.
Решение
Проблема здесь в том, что подсистема и модель безопасности защищают объект от необоснованных изменений владельца, и даже имея разрешения администратора, необходимо правильно преодолеть препятствия.
Есть две привилегии, связанные с владением файлом: SE_TAKE_OWNERSHIP_NAME а также SE_RESTORE_NAME , Первый позволяет взять чей-то объект, а второй позволяет установить владельца, который не является самим сеттером.
Это может выглядеть как SE_RESTORE_NAME является более мощной привилегией и достаточной для выполнения задачи, однако, похоже, что это не так. Да, это позволяет установить чью-либо собственность, как говорится в MSDN :
Если у вызывающей стороны нет константы SeRestorePrivilege (см.
Константы привилегий), этот SID должен содержаться в
токен и должен иметь разрешение SE_GROUP_OWNER.
Параметр SecurityInfo должен включать OWNER_SECURITY_INFORMATION
флаг. Чтобы установить владельца, вызывающий должен иметь доступ WRITE_OWNER к
объект или активировать привилегию SE_TAKE_OWNERSHIP_NAME.
Однако это не позволяет вам преодолеть элемент DACL, который явно предотвращает изменение владельца. В этом случае вам также понадобятся и другие привилегии (то есть, вам нужно включить обе), что позволит вам получить право собственности у кого-то до того, как вы решите, кому вы собираетесь его передать.
Я копирую ссылку на исходный код C ++ / ATL из комментария выше: SetFileOwner.cpp . Когда permissions / DACL имеет элемент Deny, возникает исключение, и включение второй привилегии решает проблему.