Ответы пользователя по тегу Windows
  • Почему не удается получить адрес функции?

    TrueBers
    @TrueBers
    Гуглю за еду
    Если эта целевая программа не твоя и часто обновляется, то нужно найти сигнатуру функции, представляющую собой уникальный паттерн инструкций. Потом прогонять поиск по памяти образа на наличие этой сигнатуры и брать итоговое смещение относительно базового адреса. Это и будет нужный адрес.

    Если программа не обновляется никогда, то возьми да захардкодь RVA этой функции.

    Если программа твоя, то как у уже сказали остальные, просто сделай символ публичным плюс C abi через extern "C"
    Ответ написан
    Комментировать
  • Как увеличить виртуальную память?

    TrueBers
    @TrueBers
    Гуглю за еду
    Подкачка -- это только одна из частей понятия виртуальной памяти. Вы в целом не можете контролировать её. На то она и виртуальная.

    Она может включать в себя все общие замапленные DLL-ки, например. Которые по факту занимают память только один раз на всю систему, а учитываются как будто в каждом процессе что-то отъедают.
    Процесс может замапить себе хоть терабайт памяти виртуальной, но физические страницы будут выделены только по факту Copy-on-Write.

    Забейте на виртуальную, главное, чтобы физической хватало.
    Ответ написан
    Комментировать
  • Как конвертировать системный диск с Windows 10 с MBR в GPT?

    TrueBers
    @TrueBers
    Гуглю за еду
    Официальной утилитой от MS?

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

    Намного проще заново установить систему в режиме UEFI.
    Ответ написан
    Комментировать
  • Как починить синий экран?

    TrueBers
    @TrueBers
    Гуглю за еду
    По одному дампу мало что можно сказать.
    Похоже на баг драйвера NVIDIA Share, которая в фоне постоянно записывает кадры и позволяет из этого буфера либо сохранить видеофайл, либо наделать скриншотов.
    Попробуйте отключить в NVidia GeForce Experience, если включена.
    Ответ написан
  • Как исправить ошибку LNK2001 unresolved external symbol __imp_GetUserNameW C++?

    TrueBers
    @TrueBers
    Гуглю за еду
    Гуглим название функции: GetUserNameW.
    Заходим по первой же ссылке на документацию Microsoft.
    Там спускаемся в раздел Requirements.
    В строке "Library" видим Advapi32.lib.

    Теперь гуглим текст ошибки LNK2001 unresolved external symbol и переходим по первой ссылке, которая снова, внезапно, по невероятному стечению обстоятельств оказывается документацией Microsoft.
    Там читаем описание ошибки, и что нужно сделать, чтобы её устранить. Там даже ссылка на StackOverflow оставлена!

    2 основных варианта: либо в настройках проекта добавляем эту библиотеку к списку линкуемых, либо прямо в коде говорим линкеру #pragma comment(lib, "Advapi32").
    Браво! Вы великолепны!
    Да ещё и потратили в 3 раза меньше времени, чем писать сюда вопрос.

    Не сложно, если захотеть, правда?
    Ответ написан
    Комментировать
  • Почему не получается создать сокет?

    TrueBers
    @TrueBers
    Гуглю за еду
    int iFamily = AF_UNSPEC;
     
    saLocal.sin_family = (ADDRESS_FAMILY)iFamily;

    Как вы собираетесь создать сокет с неопределённым типом? Он должен быть в вашем случае либо AF_INET, либо AF_INET6.

    А насчёт WSAEACCESS вы читали MSDN? Там же даже табличка есть, с объяснениями ошибок и в каких случаях они появляются, и внизу указано:
    Note A socket that is using the SO_EXCLUSIVEADDRUSE option must be shut down properly prior to closing it. Failure to do so can cause a denial of service attack if the associated service needs to restart.

    Ещё советую почитать про TCP вообще. Про его конечный автомат, какие у него бывают состояния, что такое полу-закрытый сокет, что такое graceful shutdown, и т. п.

    Когда вы используете SO_EXCLUSIVEADDRUSE, у вас не должно быть повисших соединений в любом из состояний. Т. е. не только ESTABLISHED, но и различных FIN-WAIT, TIME-WAIT, CLOSE-WAIT тоже быть не должно. Если вы биндитесь на один и тот же порт всегда, то использовать SO_EXCLUSIVEADDRUSE на клиентах будет очень проблематично, ибо всегда будете нарываться на полу-закрытый порт.
    Ответ написан
    3 комментария
  • Как включить звук на двух мониторах со встроенными динамиками?

    TrueBers
    @TrueBers
    Гуглю за еду
    Ответ написан
    Комментировать
  • Почему Fast Startup в windows может привести к повреждению файловых систем?

    TrueBers
    @TrueBers
    Гуглю за еду
    Потому что, когда винда уходит в гибернацию, она создаёт на NTFS-разделе страницу, которую помечает как start speedup cache. В этой странице находится кеш метаданных для быстрого старта, чтобы потом не читать их заново на старте и не тупить.
    Вот этот кеш для линуксов не имеет никакого смысла. Мало того, раздел при монтировании видится как битый, потому что он помечается кучей своих флагов. Современные версии NTFS-3g предупреждают об этом и просят загрузиться снова в винду, чтобы она восстановила этот кеш. Ядерный же драйвер ntfs вообще пока не знает об этом, и может молча что-то записать поверх, и тогда ваша винда уже не загрузится.

    Это что касается NTFS.

    Ещё есть вероятность поломать EFI-раздел. Тут уж я не знаю, что делает с ним винда, но в момент гибернации, она тоже что-то оставляет не нём в неконсистентном состоянии, и при дальнейшем монтировании в линуксе, этот раздел видится битым. Если в этот момент на него что-то записать или попытаться "исправить", то уже все ваши операционные системы не смогут загрузиться.

    На самом деле, можно и не отключать этот фастбут. Просто нужно постоянно помнить: не выключился ли у вас случайно комп, когда был в виндовой гибернации. Типа там, свет моргнул, или уборщица сетевой фильтр шваброй обработала, либо вы сами накосячили.
    Ответ написан
    Комментировать
  • Нужны ли старые версии MVС++?

    TrueBers
    @TrueBers
    Гуглю за еду
    А кто за вас может знать, нужны они вам или нет?
    Если вы собираете что-то старое, то может и нужны. А в большинстве случаев достаточно 2017-й.

    Если вы имеете в виду MSVC Runtime Redistributable, то их удалять не нужно, ибо перестанут работать некоторые программы.
    Ответ написан
    Комментировать
  • Как установить Windows 10 параллельно с Linux?

    TrueBers
    @TrueBers
    Гуглю за еду
    Поставьте на виртуалку и не парьтесь.
    Ответ написан
    1 комментарий
  • Что это за эффект, когда окно не перерисовывается?

    TrueBers
    @TrueBers
    Гуглю за еду
    Название этого эффекта вам ни о чём не скажет. Просто разработчики давным давно забили на ХР и пишут без его поддержки. Они могут делать что угодно, может вообще перестать запускаться, никто вам не обещает работу на древних системах.
    Просто предыдущий буфер не очищается, а рисуется поверх него, вот и весь эффект. Решить вы его никак не сможете. Может только случайно как-то, дрова обновите на видео, всякие сервис-паки последние поставьте, но я сомневаюсь, что это поможет.
    Ответ написан
  • Как добавить в контекстное меню ‘Моего компьютера’ команду ‘Диспетчер устройств’ и ‘Программы и компоненты’?

    TrueBers
    @TrueBers
    Гуглю за еду
    В десятке эти меню не на Моём Компьютере, а на пуске. Либо Windows + X, либо правой мышью по пуску.
    Ответ написан
    Комментировать
  • Как в C/C++ нарисовать свое окно без winapi?

    TrueBers
    @TrueBers
    Гуглю за еду
    Можете свою оболочку explorer написать на OpenGL или DirectX, например. А лучше, идите работать, вас там займут делом.
    Ответ написан
    2 комментария
  • Как собрать glut под Windows используя mingw из под Linux?

    TrueBers
    @TrueBers
    Гуглю за еду
    Вы уверены, что вам нужен оригинальный GLUT 3.7 1998 года выпуска? Может быть стоит использовать что-то посовременнее? Например, GLFW, FreeGLUT, SDL.
    Если уверены, то я сомневаюсь, что он адекватно соберётся современными тулкитами без напильника.
    Ответ написан
    2 комментария
  • Как лучше поставить Visual Studio 2017?

    TrueBers
    @TrueBers
    Гуглю за еду
    Как вы её поверх накатить собрались? Она ж рядом ставится просто, хоть все версии можно поставить одновременно, в чём проблема то?
    Ответ написан
    4 комментария
  • Как прочитать указатель из памяти чужого процесса?

    TrueBers
    @TrueBers
    Гуглю за еду
    Хватит плодить вопросы. Ответ на них не поместится на десяток страниц. Почитай лучше про адресацию памяти, что такое абсолютный адрес, относительный, что такое базовый адрес процесса, что такое рандомизация базового адреса. Просто так взять и прочитать память не получится.

    1. Этот адрес работает только для текущего процесса.
    2. Во-вторых, он будет другим при каждом запуске и выделении памяти из кучи.
    3. Он так же может меняться из-за ASLR

    Чтобы докопаться до реальной структуры данных с информацией о персонаже, нужно найти то место в коде, где эта структура выделяется на куче. Т. е. там должно быть что-то типа
    CharInfo info = new CharInfo();
    (_thiscall) CharInfo::CharInfo(info)

    Вот этот кусок кода тебе нужно найти, только так ты сможешь определить статическое место, откуда потом уже будешь плясать. Для поиска кода нужно знать хотя бы основы Ассемблера. Поможет в этом декомпилятор IDA Pro с плагином Hex-Rays.
    Но и этих мест может быть не одно, а десятки и сотни в случае с шаблонными классами и функциями. Тут уже нужен отладчик, чтобы поставить точки останова на чтение или запись памяти, и от них уже отталкиваться.

    Обычным чтением из памяти ты ничего не добьёшься, чтобы пойти по цепочке вызовов с необходимым адресом, тебе нужно самому внедрять свой код в клиент игры, либо пользоваться фреймворками для динамической инструментации, например, DynamoRIO, Intel PIN, Frida.

    Тесты лучше проводи на пиратке, ибо официальный клиент может забанить за такие действия.

    Начать можно, кстати, с курса Рикардо Нарвахи "Введение в крекинг с нуля, используя OllyDbg". Это огромный курс статей, в которых разбирается всё, что нужно для понимания основ. Там 50 с чем-то глав различной сложности, погугли. Есть ещё на ютубе целый плейлист с видео-разборами этого курса.
    Ответ написан
    Комментировать
  • Работа с памятью процесса как работать с динамическими адресами?

    TrueBers
    @TrueBers
    Гуглю за еду
    Если вам нужно быстро и просто, не вдаваясь в дизассемблеры и реверс-инжиниринг, то пройдите туториал утилиты Cheat Engine. Там отлично и просто рассказано, как искать такие адреса.
    А дальше уже напишете свой сканер под это дело, если нужно.
    Ответ написан
    Комментировать
  • Число ядер Windows на VDS?

    TrueBers
    @TrueBers
    Гуглю за еду
    Зависит от видеоустройства.
    Если у вас kvm виртуализация, можно попробовать поставить паравиртуализированные дрова на всё, что возможно.
    Ещё есть вероятность, что в kvm у хостера вообще отключены расширения паравиртуализации для винды.
    Ещё у kvm есть такой глюк, по крайней мере, был несколько месяцев назад, сейчас не в курсе: когда в качестве мыши стоит hid-устройство в режиме планшета, винды дико грузят проц виртуальными прерываниями, но я не думаю, что хостер будет ставить этот тип. Хотя, кто их знает там...
    Ответ написан
    Комментировать