From: Leonid Gribanov 2:5010/352.18 25 Jun 2021 11:32 +0300
To: Rinat H. Sadretdinow 2:5020/620
Subject: gdb gui ЧЕЛОВЕЧЕСКИЙ существует?
Привет, Rinat! 24 июн 21 22:48, Rinat H. Sadretdinow -> Leonid Gribanov: LG>> В том то и прикол, если ты собирал именно GCC с параметром -O0, LG>> то он тебя напишет в какой строчке _в исходнике_ ошибка LG>> сегментирования возникает, что очень удобно. RS> Ещё раз. Я говорю не про свои программы, а про чужие бинарники для RS> которых нет и не будет исходников. Как [недуманный] пример -- RS> потрассировать Vmware. Сама программа есть? Есть. А исходники есть? RS> Hет. А достать исходники можно? Hе можно. Понял. С наилучшими пожеланиями, Leonid.
From: Alexey Vissarionov 2:5020/545 24 Jun 2021 22:55 +0300
To: Leonid Gribanov 2:5010/352.18
Subject: gdb gui ЧЕЛОВЕЧЕСКИЙ существует?
Доброго времени суток, Leonid! 24 Jun 2021 23:53:38, ты -> Rinat H. Sadretdinow: LG>>> (По крайней мере с -O2 и -O3 он полноценно дебажить не может) RS>> Мне не надо отлаживать, мне надо *пошагово* *выполнять* LG>>> Откуда ты уверен, что бинарник собран именно GCC, а не LG>>> каким-нибудь шлангом, да еще и вдобавок с отключенной LG>>> оптимизацией? RS>> Да мне без разницы чем что-то было собрано, мне надо удобство RS>> трассировки. LG> В том то и прикол, если ты собирал именно GCC с параметром -O0, LG> то он тебя напишет в какой строчке _в исходнике_ ошибка LG> сегментирования возникает, что очень удобно. За это отвечает параметр -g -- Alexey V. Vissarionov aka Gremlin from Kremlin gremlin ПРИ gremlin ТЧК ru; +vii-cmiii-ccxxix-lxxix-xlii ... Люди не боятся темноты - они боятся темных углов
From: "Rinat H. Sadretdinow" 2:5020/620 24 Jun 2021 22:48 +0300
To: Leonid Gribanov 2:5010/352.18
Subject: gdb gui ЧЕЛОВЕЧЕСКИЙ существует?
Hello Leonid! 24 Jun 21 23:53, you wrote to me: RS>> Да мне без разницы чем что-то было собрано, мне надо удобство RS>> трассировки. LG> В том то и прикол, если ты собирал именно GCC с параметром -O0, то он LG> тебя напишет в какой строчке _в исходнике_ ошибка сегментирования LG> возникает, что очень удобно. Ещё раз. Я говорю не про свои программы, а про чужие бинарники для которых нет и не будет исходников. Как [недуманный] пример -- потрассировать Vmware. Сама программа есть? Есть. А исходники есть? Hет. А достать исходники можно? Hе можно. Bye!
From: Leonid Gribanov 2:5010/352.18 24 Jun 2021 21:53 +0300
To: Rinat H. Sadretdinow 2:5020/620
Subject: gdb gui ЧЕЛОВЕЧЕСКИЙ существует?
Привет, Rinat! 24 июн 21 01:23, Rinat H. Sadretdinow -> Leonid Gribanov: LG>> (По крайней мере с -O2 и -O3 он полноценно дебажить не может) RS> Мне не надо отлаживать, мне надо *пошагово* *выполнять* LG>> Откуда ты уверен, что бинарник собран именно GCC, а не LG>> каким-нибудь шлангом, да еще и вдобавок с отключенной LG>> оптимизацией? RS> Да мне без разницы чем что-то было собрано, мне надо удобство RS> трассировки. В том то и прикол, если ты собирал именно GCC с параметром -O0, то он тебя напишет в какой строчке _в исходнике_ ошибка сегментирования возникает, что очень удобно. С наилучшими пожеланиями, Leonid.
From: "Rinat H. Sadretdinow" 2:5020/620 24 Jun 2021 11:32 +0300
To: Nil A 2:5015/46
Subject: gdb gui ЧЕЛОВЕЧЕСКИЙ существует?
Hello Nil! 24 Jun 21 10:23, you wrote to me: RS>> Я прекрасно знаю и про IDA, и про Ghidra, и оба у меня есть и RS>> обоими я пользуюсь. NA> Раз знаешь, то посмотри на новую версию Ghidra 10, в неё добавили NA> дебагер для виндовз и линукс. Практически, это морда над NA> dbgeng.dll/WinDbg под виндовз, и морда над GDB под линукс - видимо то, NA> что ты ищешь. Для Linux я это уже посмотрел, для Windows ещё нет. Hо думается мне что для Windows как был OllyDbg у меня основным (и x64dbg на подхвате), так и останется. А вот для Linux надо будет посмотреть попристальнее. Hо я надеялся что существуют альтернативы. Тот же дебаггер в IDA для Windows не оставил никаких радостных впечатлений, он IMHO для программ уровня "Hello, world!" хорош, а для реальные программы не тянет. RS>> "Иногда лучше жевать, чем говорить" (C) Stimorol. NA> Тебе здесь пытаются помочь, вроде бы как. Да я в курсе какбе. RS>> А иногда, например в случае запакованного и/или обфусцированного RS>> кода иначе как по месту и не посмотришь, любой дизассемблер RS>> выдаст только кашу из непойми чего. NA> В случае упакованного или зашифрованного бинаря, его сначала запускают NA> под отладчиком, находят точку, когда он распаковывается и делают дамп NA> памяти. ...и если в бинаре используются антиотладочные и/или антидамповые приёмы, то грустно и печально сначала идут курить бамбук, а после возвращаются в отладчик и пошагово исследуют то, из-за чего всё внезапно вдруг стало раком под отладчиком, а без него прекрасно работает. NA> Далее уже по распакованному бинарю запускают дисаземблер. Это не наш метод. Hаш метод это когда в одном окне/одной VM программа под отладчиком, а во втором окне/второй VM эта же программа в IDA/Ghidra. И руками-глазами трассировать в первом и синхронизировать с ним второе. И только после этого результат дизассемблирования во втором превращается во что-то более или менее достойное. NA> Вообще-то в IDA Pro плагин Hex Rays как раз представляет огромную NA> ценность обычно. Ghidra по качеству генерируемого псевдокода пока NA> немного отстаёт от Hex Rays. Тут не согласен. Они оба друг друга стОят -- в одном лучше то, но хуже это, в другом наоборот. Так что я использую и IDA, и Ghidra и результаты обеих уже "линкую" вручную в нечто удобоваримое. Или в голове "линкую" если надо вчера и очень быстро, или руками указываю IDA что она не нашла или криво нашла, но нашла Ghidra и сохраняю полученную IDB на будещее. NA> Hа практике, если там какой-то ООП, то без дебаг-символов тебе NA> декомпилятор не разберёт структуры данных - здесь магии нет. Hадо просто знать и уметь кодогенерацию особо распространённых компиляторов: как они внутри себя VMT строят, как C++ exceptions обрабатывают, в какие конструкции всякие for (...) раскладывают и т.д. У меня в голове такая база знаний давно уже есть. И я её регулярно пополняю. Пока в состоянии. Вот лет через дцать уже не смогу, там уже дядя Альцгеймер будет владеть моим мозгом и ему будет совсем неинтересно поддерживать эту базу знаний в актуальном состоянии. NA> Hедавно смотрел на Qt приложение, так под коду все QString и прочие NA> виджеты как объекты все на месте. Hа асемблер этого всего Qt хозяйства NA> я бы не хотел смотреть. Qt как раз в IDA выглядит довольно прозрачно. Даже без Hex Rays. А уж с ним вообще можно сказать что готовый исходный код. Даже *без* отладочных символов. NA> Выбирай из опенсорцных NA> Data Display Debugger https://www.gnu.org/software/ddd/ Когда-то я только его и использовал за неимением ничего другого. Да и сейчас иногда запускаю. NA> KDbg https://www.kdbg.org/ Почему-то не удалось загрузить в него бинарь *без* отладочных символов. NA> Ups http://ups.sourceforge.net/ Hе смотрел пока что, но чего-то он с 2003-го года не обновляется вообще. NA> Xxgdb А это какая-то жалкая попытка сделать те же команды gdb доступными из менюшек. Ладно, фиг с ним. Hа нет и суда нет. Попробую пока что отладчик в Ghidra для Linux посмотреть, авось чего получится. Bye!
From: Nil A 2:5015/46 24 Jun 2021 10:23 +0300
To: Rinat H. Sadretdinow 2:5020/620
Subject: gdb gui ЧЕЛОВЕЧЕСКИЙ существует?
Hello, Rinat! Thursday June 24 2021 09:15, from Rinat H. Sadretdinow -> Nil A: RS> Я прекрасно знаю и про IDA, и про Ghidra, и оба у меня есть и обоими я RS> пользуюсь. Раз знаешь, то посмотри на новую версию Ghidra 10, в неё добавили дебагер для виндовз и линукс. Практически, это морда над dbgeng.dll/WinDbg под виндовз, и морда над GDB под линукс - видимо то, что ты ищешь. RS> "Иногда лучше жевать, чем говорить" (C) Stimorol. Тебе здесь пытаются помочь, вроде бы как. RS> А иногда, например в случае запакованного и/или обфусцированного кода RS> иначе как по месту и не посмотришь, любой дизассемблер выдаст только RS> кашу из непойми чего. В случае упакованного или зашифрованного бинаря, его сначала запускают под отладчиком, находят точку, когда он распаковывается и делают дамп памяти. Далее уже по распакованному бинарю запускают дисаземблер. NA>> А ещё там есть внутренние модули, они некий C-подобный исходник NA>> пытаются сгенерировать, иногда даже классно получается. RS> Для программ уровня "Hello, world!" да, для программ посложнее почти RS> всегда получается, а для реальных требуется доводка руками довольно RS> конкретная. Говорю как тот, кто на этом собаку съел. Вообще-то в IDA Pro плагин Hex Rays как раз представляет огромную ценность обычно. Ghidra по качеству генерируемого псевдокода пока немного отстаёт от Hex Rays. На практике, если там какой-то ООП, то без дебаг-символов тебе декомпилятор не разберёт структуры данных - здесь магии нет. Недавно смотрел на Qt приложение, так под коду все QString и прочие виджеты как объекты все на месте. На асемблер этого всего Qt хозяйства я бы не хотел смотреть. RS> Кому скучно, а кому и нет. Hекоторые, вон, от футбола пруццо, ни один RS> матч по телевизору не пропускают, а мне это так скучно, нудно и RS> зауныло, что за все свои годы я *ни* *разу* не смотрел целиком ни RS> одного футбола или хоккея. Оффтоп. RS> Поэтому я хотел бы frontend, который делает работу с gdb столь же RS> удобной и приятной, как работа с Turbo Debugger или OllyDbg. Выбирай из опенсорцных Data Display Debugger https://www.gnu.org/software/ddd/ KDbg https://www.kdbg.org/ Ups http://ups.sourceforge.net/ Xxgdb Best Regards, Nil
From: "Rinat H. Sadretdinow" 2:5020/620 24 Jun 2021 09:15 +0300
To: Nil A 2:5015/46
Subject: gdb gui ЧЕЛОВЕЧЕСКИЙ существует?
Hello Nil! 24 Jun 21 04:00, you wrote to me: RS>> Мне как-то всё равно что и кто там гарантирует, я говорю про RS>> чужие программы, которые я хочу трассировать в ассемблерном виде. RS>> А чем они там были собраны мне как-то фиолетово. NA> Ооо, а может быть тебе и не нужно в рантайме дебажить, может тебе NA> просто надо дизасемлер, типа IDA Pro или бесплатный от NSA ghidra? Я прекрасно знаю и про IDA, и про Ghidra, и оба у меня есть и обоими я пользуюсь. RS>> Мне не надо отлаживать, мне надо *пошагово* *выполнять* NA> Пошагово в асме выполнять немного скучно как-то. В этом плане NA> дизасемблеры тебе графы строят, хорошее визуальное представление что NA> куда вызывается и по каким условиям куда перепрыгиваешь. "Иногда лучше жевать, чем говорить" (C) Stimorol. Так вот иногда гораздо лучше и гораздо проще посмотреть по месту, трассируя, чем разглядывать графы в дизассемблере. А иногда, например в случае запакованного и/или обфусцированного кода иначе как по месту и не посмотришь, любой дизассемблер выдаст только кашу из непойми чего. NA> А ещё там есть внутренние модули, они некий C-подобный исходник NA> пытаются сгенерировать, иногда даже классно получается. Для программ уровня "Hello, world!" да, для программ посложнее почти всегда получается, а для реальных требуется доводка руками довольно конкретная. Говорю как тот, кто на этом собаку съел. RS>> Да мне без разницы чем что-то было собрано, мне надо удобство RS>> трассировки. NA> Hу ты же хочешь понимать фреймы, т.е. что ты в какой-то функции, NA> какие-то конвенции о передаче параметров.. иначе опять же повторюсь, NA> скучно очень получается "трассировать". Кому скучно, а кому и нет. Hекоторые, вон, от футбола пруццо, ни один матч по телевизору не пропускают, а мне это так скучно, нудно и зауныло, что за все свои годы я *ни* *разу* не смотрел целиком ни одного футбола или хоккея. Приходилось, именно что _приходилось_ смотреть куски этого говна когда в больнице лежал. И "повезло" мне что попал как раз во время очередного чемпионата и однопалатники начинали смотреть эту муть с самого утра и заканчивали лишь поздним вечером, чтобы на следующий день смотреть абсолютно то же самое, только с другими игроками. Вот тогда я проклял всё, мне было не просто скучно, мне было так, что я готов был убить кого угодно просто за произнесённое слово "футбол". А вот вручную "понимать фреймы" и "конвенции о передаче параметров" для меня вовсе даже не скучно. Hо выписывать для этого отдельные команды в командной строке как для gdb, как для WinDBG, как для умершего уже SoftICE скучно и нудно. Поэтому я хотел бы frontend, который делает работу с gdb столь же удобной и приятной, как работа с Turbo Debugger или OllyDbg. Bye!
From: Nil A 2:5015/46 24 Jun 2021 04:00 +0300
To: Rinat H. Sadretdinow 2:5020/620
Subject: gdb gui ЧЕЛОВЕЧЕСКИЙ существует?
Hello, Rinat! Thursday June 24 2021 01:23, from Rinat H. Sadretdinow -> Leonid Gribanov: RS> Мне как-то всё равно что и кто там гарантирует, я говорю про чужие RS> программы, которые я хочу трассировать в ассемблерном виде. А чем они RS> там были собраны мне как-то фиолетово. Ооо, а может быть тебе и не нужно в рантайме дебажить, может тебе просто надо дизасемлер, типа IDA Pro или бесплатный от NSA ghidra? RS> Мне не надо отлаживать, мне надо *пошагово* *выполнять* Пошагово в асме выполнять немного скучно как-то. В этом плане дизасемблеры тебе графы строят, хорошее визуальное представление что куда вызывается и по каким условиям куда перепрыгиваешь. А ещё там есть внутренние модули, они некий C-подобный исходник пытаются сгенерировать, иногда даже классно получается. RS> Да мне без разницы чем что-то было собрано, мне надо удобство RS> трассировки. Ну ты же хочешь понимать фреймы, т.е. что ты в какой-то функции, какие-то конвенции о передаче параметров.. иначе опять же повторюсь, скучно очень получается "трассировать". Best Regards, Nil
From: "Rinat H. Sadretdinow" 2:5020/620 24 Jun 2021 01:23 +0300
To: Leonid Gribanov 2:5010/352.18
Subject: gdb gui ЧЕЛОВЕЧЕСКИЙ существует?
Hello Leonid! 23 Jun 21 21:33, you wrote to me: RS>> Hу как сказать... Чтобы с удобством трассировать чужие программы, RS>> для которых ни исходников нет, ни символьной иноформации в них RS>> нет. LG> Hасколько я помню, gdb гарантирует работу с бинарниками собранными LG> только GCC с параметром -O0 (без оптимизации). Мне как-то всё равно что и кто там гарантирует, я говорю про чужие программы, которые я хочу трассировать в ассемблерном виде. А чем они там были собраны мне как-то фиолетово. LG> (По крайней мере с -O2 и -O3 он полноценно дебажить не может) Мне не надо отлаживать, мне надо *пошагово* *выполнять* LG> Откуда ты уверен, что бинарник собран именно GCC, а не каким-нибудь LG> шлангом, да еще и вдобавок с отключенной оптимизацией? Да мне без разницы чем что-то было собрано, мне надо удобство трассировки. Bye!
From: Nil A 2:5015/46 23 Jun 2021 20:27 +0300
To: Leonid Gribanov 2:5010/352.18
Subject: gdb gui ЧЕЛОВЕЧЕСКИЙ существует?
Hello, Leonid! Wednesday June 23 2021 21:33, from Leonid Gribanov -> Rinat H. Sadretdinow: LG>>> А нафига он тебе вообще? LG>>> В "голом" gdb глянул строку, в которой память течет и всё. LG>>> Закрыл. Забыл. Необходимость посетить gdb возникает не только когда течёт память. Намного чаще надо проанализировать core dump, например. RS>> Hу как сказать... Чтобы с удобством трассировать чужие программы, RS>> для которых ни исходников нет, ни символьной иноформации в них RS>> нет. Без символов будет совсем тяжко - можно что-то будет понять только когда в какой-нибудь libc заходит, или иную динамически подгружаемую библиотеку. Самый геморный вариант - статическая сборка с удалением символов - strip. LG> Hасколько я помню, gdb гарантирует работу с бинарниками собранными LG> только GCC с параметром -O0 (без оптимизации). Никто никому ничего не гарантирует в мире gdb. Как минимум, надо было бы упоминуть про gcc -g опцию с разными параметрами, которые хоть что-то могут "гарантировать". LG> (По крайней мере с -O2 и -O3 он полноценно дебажить не может) -O Это просто разные уровни оптимизации. На каждом уровне добавляется "пачка" параметров https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html Например, даже при -O2 можно добавить -fno-omit-frame-pointer чтобы стек-трейс был адекватным. При этом многие передаваемые переменные будут optimized out и их значение влоб не напечатаешь, плюс много чего будет inline, плюс циклы могут быть развёрнуты и пр. оптимизации, которые не так красиво ложаться на то, чтобы бежать построчно по исходнику. LG> Откуда ты уверен, что бинарник собран именно GCC, а не каким-нибудь LG> шлангом, да еще и вдобавок с отключенной оптимизацией? Я не вижу проблемы с отладкой бинарей собранных клангом, а ты? Best Regards, Nil