1. Куча / Говнокод #27112

    0

    1. 1
    bp kernelbase!VirtualAlloc " .printf \"\n\n\n\nBytes allocated: %lu (k)\n\n\n\",(@rdx/0n1024); k 8"

    Давайте течь от windbg

    Запостил: MAPTbIwKA, 13 Ноября 2020

    Комментарии (75) RSS

    • а вы скрипутете свой дебагер? а нормальном языке или вот как я?
      Ответить
      • > на нормальном языке

        А там есть? Вроде только этот встроенный и джаваскрипт.

        З.Ы. Хотя вроде ещё питон можно привернуть.
        Ответить
        • именно у windbg изначально был только "этот" и свои extы можно было писать на сишечке:)
          А потом появился NatVis (для красивого предсталвеняи) и теперь вроде стало можно JS.

          У lldb был питон уже очень давно, у gdb вроде какой-то свой был
          Ответить
    • как жаль, что всем похуй
      Ответить
      • Нет, не жаль.
        Никто кроме борманда не понял что это.
        Ответить
        • гост тоже понял, скорее всего

          но в целом да: низкоуровневую винду из здешней публики хорошо понимает тока борманд
          Ответить
          • Да я тоже только местами. Глубоких знаний нету, с чем столкнулся - то помню.
            Ответить
            • совсем глубокие наверное тока у чуваков c osr есть, и в MS, но обычно если понимаешь общую архитектуру, то можно разобраться

              Кстати забавно, что лоу-левел питушня в винде весьма логична и внятна, а высокоуровневое говно обычно хуже документировано: какой-нить cbs хуй поймешь вообще
              Ответить
              • Ну я так понял, они специально стараются не документировать своё говно. Чтобы потом не пришлось его поддерживать.

                Так ты на свой страх и риск ковыряешься, а с докой у тебя уже будут претензии если они что-то поменяют.
                Ответить
                • да, вероятно. но обратной стороной этого является непонимание администратором своей системы. какие-то сервисы что-то делают, какие-то логи пишут, какие-то ошибки выдают, а зачем все это? что с этим делать?
                  бугурт
                  Ответить
                  • Обратитесь к системному администратору в техподдержку.
                    Ответить
                    • она платная кстати вроде

                      бесплатно тебе могут присоветовать откатиться к точке восстановления или обратиться к сертифицированному майкрософтом эники (инженер или как он у них там назывался)
                      Ответить
                      • Который откатит винду на точку восстановления?
                        Ответить
                        • ну да, а если не поможет, то сделает sfc /scannow или clean reinstall

                          который реально разбирается в винде называется филд инжинер, и он стоит очень дохуя, его арендуют только если у тебя бизнес на винде и колом стал
                          Ответить
    • А я за «x64dbg». Там, помимо дебаггера, встроена и функциональность «IDA» в миниатюре: хрефы, ренеймы, структуры, все дела. И условные бряки без пердолинга ставить можно.
      Ответить
      • Он к ядру умеет цепляться, кстати?
        Ответить
        • Насколько я знаю — нет, только анскильный юзермод. И, как я уже говорил, дебажить код разной битности не умеет. А жаль.
          Ответить
          • А к дебаг портам виртуалок умеет? Ну хотя там обычно gdb'шный протокол, всяко должен.
            Ответить
            • Ну шо ты душишь! С 2016-го года пилят, лол: https://github.com/x64dbg/x64dbg/issues/791.
              Ответить
              • Почему именно x64dbg, кстати?
                Почему не ollydbg, например?
                Ответить
                • «Ollydbg» сгнил. В сущности, «x64dbg» сделан как раз по образу и подобию «Olly».
                  Ответить
                  • понятно. Древние у меня сведения

                    Я еще помню был софтайс для ядра вроде
                    Ответить
                    • Ну софтайс уже во времена XP вроде сдох...
                      Ответить
                      • да, вероятно

                        я помню, что во времена w2k не было живого отладчика ядра у MS (всмысле нельзя было на хост системе даже структуры и переменные позырить), но он был у русиновича, и давался вместе с книжкой, а вроде софтайс умел, если я не путаю

                        Кстати, у прыщей долгое время вообще не было отладчика ядра (Линус был против), но потом завезли

                        А у опзди есть только постмортен дебаг, по дампам
                        Ответить
                        • Ну а сейчас на хосте уже никто и не отлаживается... Проще виртуалку поднять или рядом тачку поставить.
                          Ответить
                          • это да. Но можно посмотреть какие-нить переменные ядра, но там нужно включать какой-то говключ в bcd, иначе ядро нахуй пошлет

                            а когда я про w2k читал виртуалок не было, и русиновичевский дебагер очень рулил, чтоб не подключать вторую тачку по кому
                            Ответить
                            • Выключить секьюр бут, ребутнуться, включить отладку в бцд, ребутнуться...
                              Ответить
                              • Блядь, как всё сложно. Именно поэтому я за «DOS».
                                Ответить
                                • в досе можно было дебажить что угодно debug.comом, но я вот не знаю как там можно было бы дебажить, например, обработчик прерывания от клавиатуры
                                  Ответить
                                  • Ну ты и в венде его на себе не подебажишь...

                                    Именно поэтому я за отладку через кабель.
                                    Ответить
                                    • или через неймпд пайп, угу

                                      кстати, о портах: у винды есть возможность запустить на ком(ну верояно еще 1394 и усб) консоль "Special Administration Console", примерно как прыщи могут там гетти запустить

                                      если у тебя на работает сеть на сервере, то ты можешь по идее пробросить этот порт куда-нить и добраться по cmd или повершел


                                      но судя по частоте упоминаний в интернете, про это знает примерно три админа почему-то
                                      Ответить
                                      • Это только у северной или на любой работает?
                                        Ответить
                                        • вроде тока у серверной, во всяком случае на обычных я этого не видел
                                          Ответить
                                      • <INSTANCE CLASSNAME="BLUESCREEN">

                                        Да уж, действительно special...
                                        Ответить
                                        • гг)

                                          причем как я понел -- в обычных виндах ты можешь только бутменю покрутить, а sac есть только в сервере

                                          это как если бы ты к кому только груб подключил, а не ядро и не терминалы

                                          >r <pid> Raise the priority of a process by one.

                                          ого, какая важная хуйня

                                          ради нее стоит лезть в такие ебеня
                                          Ответить
                              • угу

                                вроде можно выбрать еще debug из меню, или это было когда еще в boot.ini писали /debug ..
                                Ответить
                                • > из меню

                                  Ты его вызови ещё, лол. Я умею только соснольной командой или джвумя резетами. Но, возможно, есть и более практичные способы...
                                  Ответить
                                  • f8 нажать?

                                    ну секур бут нужно убрать наверное, да.

                                    но я не биоспитух в целом, мне эти ваши заморочки не понятны
                                    Ответить
                                    • Нее... F8 в винде давно уже не работает. Они же дрочат на скорость загрузки, а ожидание кнопки будет занимать значительную часть времени.
                                      Ответить
                                      • в семерке работает. У меня там в меню рекавери мод стоит, например

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

                                        оо
                                        ты прав

                                        bcdedit /set {default} bootmenupolicy legacy
                                        Ответить
                                        • Да, семёрка это вроде последняя ось, где работала эта кнопка.

                                          А сейчас я в основном через джва резета туда захожу, это реально редко надо. После пары быстрых сбросов винда думает что её хуёво и сама показывает меню.
                                          Ответить
                                          • вруби bootmenupolicy legacy жеж


                                            блядь, как я ненавжиу бцд

                                            как можно было внятный нормальный текстовый файл поменять на говно с бинарным хуево документированным форматом (реестр вообще официально документировал кто-то кроме руссинвича?) и дать в придачу хуевую (и тоже весьма хуево документированную) утилиту

                                            зачем? зачем?
                                            Ответить
                                            • > вруби bootmenupolicy legacy жеж

                                              Чтобы комп грузился на секунду дольше? Нафиг надо.
                                              Ответить
                                              • виртуалка, на которой ты дрова дебажишь?
                                                Ответить
                                                • Тем более. На каждой загрузке виртуалки целую секунду терять. Да и не факт, что вовремя давить F8 удобнее чем просто 2 раза резетнуть. Менюха реально редко нужна.

                                                  З.Ы. А если реально что-то сломал - она сама вылезет.
                                                  Ответить
                • Ollydbg в 32-бит только, под 64 его что-то пытались сделать
                  http://www.ollydbg.de/odbg64.html
                  только вот что-то нихуя не вышло, воз и ныне там.
                  Ответить
          • З.Ы. Вот чем виндбг охуенен - им можно дебажить юзермодный процесс через ядерное подключение. Это иногда прям кучу времени экономит.
            Ответить
            • да, там можно посмотреть память юзермодного процесса и вроде даже бряку поставить
              алсо, он умеет читать и красиво показывать всякие TEB, PEB итд

              Ну и ядро умеет
              Ответить
              • > ядро умеет

                Ну да, по набору хелперов для ядра у него нету конкурентов, наверное.
                Ответить
                • угу, всякие !pool там

                  эти же структуры нихуя неось нормально не документированы, так что логично, что их умеют понимать только писатели экстеншенов из майкрософта
                  Ответить
      • в windbg тоже можно ставить условные бряки, но с помощю скрипта и инструкции .if
        типа если выполнилось нужное выражение -- бряк, иначе гоу дальше
        Ответить
    • блядь, ну как же я теку-то.
      bp kernel32!WriteConsoleW ".printf \"%mu\", @rdx"
      Ответить
      • В винде уже можно дебажить ядро без второго компа или виртуалки, чтоб как в SoftICE когда-то было?
        Ответить
        • А это вообще как? Вот поставил я бряк где-нибудь в драйвере клавиатуры — а как потом g ввести?
          Ответить
          • https://community.osr.com/discussion/9670/debugging-keyboard-driver

            >However, since Softice's actual processing of the keys happens directly
            >from the IDT, and does not intefere with the keyboard driver, you can set
            >breakpoints at various points inside the default keyboard driver (which
            >Softice patches successfully) and step through them successfully in
            >Softice. (Just be aware that any read/writes to the I/O ports may be out of
            >sync).
            Ответить
            • ну то есть у него свой драйвер был по сути, свой обработчик прерывания
              Ответить
          • И если у тебя идет отладка через COM порт, ты ж тоже не сможешь отлаживать саму эту питушню с COM портом (отлаживать хуйню которая в самом этом WinDBG что-то мутит по COM порту) таким образом
            Ответить
            • Логично. Именно поэтому в XHCI прикрутили специальный дебаг интерфейс, независимый от основного, чтобы ты мог отлаживать драйвер USB подключаясь через USB.
              Ответить
        • А надо? Второй комп или виртуалку дебажить и удобнее и безопаснее.
          Ответить
        • можно только читать состояние ядра, а ставить бряки нельзя конечно
          Ответить
      • Кстати, видел https://docs.microsoft.com/ru-ru/windows-hardware/drivers/debugger/debugging-using-windbg-preview? К WinDbg приделали гуйню.
        Ответить
        • P. S. Тьфу, перепутал его с «gdb». Современную гуйню приделали, с лентами и тёмной темой.
          Ответить
          • К gdb тоже много какой гуйни приделали
            https://github.com/rohanrhu/gdb-frontend - вот например через браузер работает
            А WinDbg умеер через браузер? А? А?
            То-то же!
            Ответить
            • Какой скилл )))

              Я, кстати, за «radare2».
              Ответить
              • > radare2

                Если бы его не фанаты vim'а пилили - я бы тоже был за... Я не осилил, короче.
                Ответить
          • слва богу, потому что интерфейс у него пидарский совершенно, и как из 1995-го года

            я пол дня убил, пока настроил нормальные шрифты, фон, расположение окон итд
            Ответить
            • > я пол дня убил, пока настроил

              А потом всё это проебалось? Я до сих пор не понимаю, как старый виндбг переключал профили.
              Ответить
              • а потом сохранил воркспейс, и все.

                я не знаю кстати, где он это хранит. Там можно экспортнуть в файл, но по умолчанию хз где это, может что и в реестре

                вроде как воркспейс привязан к бинарю, процессу или дампу, но есть дефолтный
                Ответить
    • https://habr.com/ru/company/jugru/blog/326454/

      > Если вы когда-либо занимались удаленной отладкой с помощью Visual Studio, самая большая проблема для вас была в том, что нужно было настроить аутентификацию Windows. Вы должны либо использовать домен, в котором находятся оба компьютера, либо установить локальных пользователей с одинаковыми именем и паролем на обеих машинах — совсем нетривиальный процесс.

      Какой пиздец (((

      >В WinDbg таких требований нет, вы можете использовать пароль, вы можете использовать различные транспорты, включая именованные каналы, TCP, SSL, просто HTTP — доступна уйма опций, среди которых можно выбирать.

      А еще есть gdbserver.exe
      Ответить
      • WinDbg: отладится всё.
        Ответить
      • > настроить аутентификацию

        Лолшто, кто-то реально её настраивает а не ставит галку "пускать всех"?
        Ответить
      • что нетривиального в создании пользователя на винде?
        Ответить
        • Создавать пользователей -- это задача для системного администратора! А я программист, мне отлаживать код надо.

          З.Ы. Поэтому я ставлю галку no authentication и теку.
          Ответить
    • Говногость и LispGovno - это ты?
      Ответить

    Добавить комментарий