Ответы пользователя по тегу Windows
  • Как работает память процессов в windows?

    @none7
    Во-первых не понятно зачем вообще говорить о каких то адресах операциоонной системы, если они не доступны.

    Затем, что это писал системный программист, для системных программистов. Например разработчики антивирусов много бы страдали без этого чёткого разделения.
    Зачем если у нас у каждого процесса своя личная память которую он сам занимает, его загружать в разные адреса.

    ASLR
    Я хочу просто перезаписат отделюную инструкцию, как мне это сделать, если она каждый раз находится на разных адресах.

    EnumProcessModules GetModuleFileNameEx
    Ответ написан
    Комментировать
  • Процесс svchost.exe отнимает всю оперативную память?

    @none7
    Естественно, что после убийство службы она перезапускается, это штатное поведение. Вероятно это попытка Windows собрать информацию об ошибке, отягощённая антивирусом. Если уверен, что это не вирус, то отключи сеть, удали антивирь, перезагрузи систему, разлогинся и дай системе шуршать диском пока ей не надоест(может занять и несколько часов), затем в консоли админа запусти sfc /scannow
    Ответ написан
    Комментировать
  • Как запросить права доступа для программы с помощью WinAPI?

    @none7
    Если права админа требуются всегда, то см. Setting the Execution Level in the Application Manifest. Иначе запуск программы через ShellExecute("runas") и передача дочернему процессу необходимых данных.
    Ответ написан
    4 комментария
  • C# передать параметр в Win32Api функцию?

    @none7
    Во первых эти массивы должны размещаться в самой структуре, а не управляемые ссылки на них. Странно уже то, что маршалинг исключение не выплюнул. Должно быть как то так:
    struct SET_DISK_ATTRIBUTES
    {
        public uint Version;
        public bool Persist;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] Reserved1;
        public ulong Attributes;
        public ulong AttributesMask;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public uint[] Reserved2;
    };

    Во вторых Вы забыли скопировать структуру в память и передаете функции DeviceIoControl не инициализированный мусор. Так же можно добавить перегруженный метод DeviceIoControl принимающий ref SET_DISK_ATTRIBUTES вместо IntPtr и не возится с динамической памятью. Пока структура является локальной переменной синхронного метода, GC её никуда не утащит.
    Ответ написан
    Комментировать
  • Как получить сообщения с помощью GetMessage?

    @none7
    Создание невидимого окна, созданного без dwStyle : WS_VISIBLE и с ShowWindow(hWnd,SW_HIDE), является традиционным способом ловли оконных системных сообщений, работающим даже для служб. При этом вовсе не обязательно компилировать приложение как графическое. Ведь никто не мешает вызвать функции RegisterClassEx и CreateWindowEx в консольном приложении или службе.
    Ответ написан
    Комментировать
  • Как решить проблему с пробуждением из спящего режима?

    @none7
    Попробуй в политиках запретить Windows Update управлять электропитанием.
    5bc986397faab538257973.png

    Так же есть команда powercfg -lastwake и иногда она помогает выявить виновника пробуждения.
    Ответ написан
  • Как ходит трафик в voip приложениях?

    @none7
    Обычно люди хотят наоборот, чтобы трафик шёл напрямую, а не через сервера корпораций которые безусловно расшифровывают весь транзитный трафик. Но не беспокойтесь, большинство современных voip приложений существуют именно для того, чтобы снифать ваш трафик и тембр голоса им важнее ip-адресов.
    Проприетарное приложение всегда может передать кучу информации на сервера и не только реальные Ip-адреса, а вообще любую информацию доступную ему. Например на телефонах они очень любят тырить список контактов. Естественно другим клиентам они Ваш ip-не сливают, незачем. Но есть и такие как webrtc, нацеленные на прямую связь и здесь обмен адресами это необходимость. И браузер попросту не в курсе, что у Вас там где то VPN.
    Ответ в общем зависит от конкретного приложения. Но я не знаю проектов нацеленных на полностью анонимный voip. Тут нужен лютый кастом основанный на tor и .onion.
    Ответ написан
    Комментировать
  • Как загрузить resource в динамической библиотеке в Windows?

    @none7
    DllMain entry point. Параметр hinstDLL это HINSTANCE вашей библиотеки, который и нужно использовать вместо GetModuleHandle(NULL).
    Ответ написан
  • Microsoft Compatibility Telemetry, почему диск загружен на 100 процентов?

    @none7
    Благодаря таким фичам, Windows 10 без SSD диска лучше не ставить. В вашем же случае можно только вырубить все намёки на телеметрию в планировщике заданий. И ждать когда очередное обновление, включит его вновь.
    Ответ написан
    2 комментария
  • Как получить ID кнопок созданных через CreateWindow() WinAPI?

    @none7
    Полагаю вам нужен GetWindowLong(hButton, GWL_ID), но умолчанию там могут быть и нули. Для shared_ptr нужен класс обёртка CWnd, который в своём деструкторе уничтожит окно. Если не хотите использовать MFC, то пишите аналог сами.
    Ответ написан
    Комментировать
  • Вывод ПК из ждущего режима с помощью "магического" пакета, что такое магический пакет?

    @none7
    Маловероятно, что это Wake on Lan. Обычно виновниками выступают различные задачи из «планировщика заданий». Уточнить, что именно разбудило можно введя в консоли: powercfg -LASTWAKE.
    Ответ написан
    2 комментария
  • Почему данный код блокирует UI?

    @none7
    А дело точно не в строчке tbLeft.Text = content; ? Обычные TextBox плохо переваривали большие объёмы текста. И эта строчка точно будет блокировать UI.
    Ответ написан
    1 комментарий
  • Кто жрёт процессор?

    @none7
    Служба обновления довольно прожорливая даже с установкой всех возможных обновлений. К счастью это происходит только сразу после установки обновлений и не слишком долго. Просто на многоядерных процессорах пользователи вообще этого не замечают. Да и происходит установка обычно только раз в месяц. Если эта служба грузит процессор каждый день и более 10 минут, то это именно отсутствие патча о котором писал MaxKorz. И даже если нет этого патча, центр обновлений сам его поставит если включено авто-обновление, но на это вполне может уйти часов 10 100% загрузки ядра.
    Ответ написан
    Комментировать
  • Изначальная память процесса и 4-х миллионный байт?

    @none7
    Поле ImageBase указывающее системе в какую часть виртуальной памяти процесса нужно разместить исполняемый файл. Традиционно .exe файлы размещают по адресу 0x400000, это не значит, что он занимает 4 мегабайта, просто адрес. Dll традиционно размещают по адресу 0x10000000; поскольку для dll весьма возможен конфликт адресов, к ним обязательно прикрепляют релоки. Адрес размещения .exe и .dll строго говоря может быть любым кратным 0x10000, но не 0, не адрес ntdll.dll и не в пространстве ядра. Сам же исполняемый файл может занимать минимум 1 страницу(4Кбайт на x86) памяти + минимум по 1 странице на секцию, независимо от адреса размещения исполняемого файла.
    То, что без таблицы импорта нельзя ничего сделать, строго говоря неверно. Можно через стандартные адреса выяснить где расположены системные .dll и их экспортируемые функции и через них загрузить всё, что необходимо. Но без самих системных .dll можно только зависнуть или умереть. Подгружать нужно то, что необходимо для работы кода приложения, это полностью зависит от самого приложения. Например для классического HelloWorld
    void func() {
        MessageBoxA(NULL, "Hello", "Hello, World!", MB_OK);
        ExitProcess(0);
    }
    нужны user32.dll:MessageBoxA и kernel32.dll:ExitProcess.
    Если обратиться к адресам памяти никак их не проинициализировав, то произойдёт исключение. Если при этом не настроены обработчики исключений, то выскочет традиционное окошко.ef716e0677a846e0a53b4665103d2029.png
    Ответ написан
    6 комментариев
  • Где в оперативной памяти находится виртуальная машина?

    @none7
    Включи в диспетчере задач включи отображение колонки Вид -> Выбрать столбцы... ->"Память - рабочий набор". Там скорее всего и будет видно.
    Ответ написан
  • Сколько ГБ Windows NT выделяет процессу?

    @none7
    With IMAGE_FILE_LARGE_ADDRESS_AWARE set (default):
    x64: 8 TB
    Intel Itanium-based systems: 7 TB
    Windows 8.1 and Windows Server 2012 R2: 128 TB
    2 GB with IMAGE_FILE_LARGE_ADDRESS_AWARE cleared
    Отсюда.
    Ответ написан
    Комментировать
  • Openvpn Не Меняет ip?

    @none7
    Fri Jul 22 23:35:48 2016 ROUTE: route addition failed using CreateIpForwardEntry: ???? ?????? ??? ????
    ??????. [status=5010 if_index=25]

    net helpmsg 5010
    Этот объект уже существует.
    На сервере видимо есть конфликтующий маршрут.
    Ответ написан
    Комментировать
  • Как правильно написать SEH-обработчик на ассемблере под win32?

    @none7
    К чему искать проблем с исключениями, если способ через PEB работает от Win2k до Win10?
    mov eax, fs:[18]
    mov eax, [eax+30h]
    mov eax, [eax+0ch]
    mov eax, [eax+0ch]

    Так находится структура описывающая основный .exe файл.
    +0h Next
    +18h HANDLE
    +24h UNICODE_STRING FullFileName
    +2Ch UNICODE_STRING ShortName
    Через Next можно перечислить все загруженные модули, следующим после .exe файла гарантировано будет ntdll. От вас требуется только написание stricmp для структур UNICODE_STRING, ну или импортировать RtlEqualUnicodeString из ntdll.
    Ответ написан
    3 комментария
  • Как узнать права на файл через консоль в windows?

    @none7
    cacls
    Ответ написан
    Комментировать
  • Как узнать где будет располагаться кода в памяти EXE?

    @none7
    Вот говорил же злые хакеры всё уже сделали за Вас. Утилита PE Tools, выбрать процесс, выбрать исполняемый файл, ПКМ, PE editor -> read only, FLC(File Location Calculator), RVA, VA, file offset, считает, что угодно из чего угодно. Делать подсчёт в патчере смысла нет, если это не тот самый исполняемый файл, что и у Вас, то Вы его своим RVA to FO попросту сломаете. Просто запишите хеш файла и смещение в файле в исходник патчера. Кстати нагуглить код функции было проще простого rva to file offset
    Ответ написан