Пользователь
Information
- Rating
- 2,390-th
- Location
- Петропавловск, Северо-Казахстанская обл., Казахстан
- Registered
- Activity
Specialization
Software Developer, Embedded Software Engineer
Pure C
Assembler
X86 asm
Win32 API
Visual Basic
MySQL
Git
OOP
Electronics Development
Reverse development
Но ведь IDA Pro умеет присоединяться к существующему процессу и выступать отладчиком. Зачем тогда нужна Olly?
Дело в привычке. Я тоже пользуюсь Олей лет 15, и все действия в ней делаю уже как пулемёт. А IDA Pro всегда отталкивала нездоровой атмосферой вокруг Ильфака и его отношением к поддержке и пиратству. Окей, у вас платный продукт, а я воспользуюсь бесплатным инструментом, а для того, что он не умеет, сделаю собственные инструменты — вот так я примерно всегда размышлял.
Аннотации не влияют на вероятность зависания и вылета. Правда, длинные аннотации, создаваемые плагинами в нарушение спецификации, могут провоцировать вылеты, об этом я написал.
Просто если не аннотировать, вылеты не так критичны и не воспринимаются, как маленькие трагедии.
А зависания, как я уже писал, происходят по вине
win32k.sys
, в основном. Например, жмёшь в Olly Ctrl+C и она зависает намертво. Смотришь Process Explorer-ом бэктрейс основного потока — там вызовSetClipboardData
из OllyDbg, из неё идёт вызовuser32!_NtUserSetClipboardData@12
, а это лишь переходничок, делающийSYSENTER
. Дальше код уже продолжается в режиме ядра. И где-нибудь там оно висит. Аннотации тут явно не причём. Тут виноваты какие-то system-wide объекты синхронизации. Тот же буфер обмена — если один процесс открыл его с помощьюOpenClipboard()
и завис, другие процессы сессии не могут работать с буфером обмена.В подобных случаях не не переключался на отладку ядерной части системы — а то это могло зайти далеко. Был у меня случай, когда я реверсил «железный» музыкальный синтезатор фирмы Roland, и использовал цифровой осциллограф, управляемый с компьютера через SCPI (GPIB), чтобы программировать его на отлов нужных событий, автоматизированно захватывать их анализировать. В реализации SCPI осциллографа была найдена дыра, позволяющая получаь доступ к прошивке осциллографа. Реверс-инжиниринг синтезатора плавно перетёк в реверс-инжиниринг осциллографа. В итоге ни то, ни другое не было доведено до конца.
Спасибо. Есть ли смысл публиковать плагин Markup Dumper, обозревать его применение в контексте ведения распределённого командного реверсинга? Есть смысл публиковать статью об упомянутых ARG-файлах?
Собственно говоря, это не эфемерная мечта: у меня уже давно (лет 14 как) лежит написанный классный и быстрый дизассемблирующий/ассемблирующий движок, который может удобно расширяться. Есть к дизассемблирующей половинке этого движка GUI-примочка, показывающая отдельную процедуру либо в плоском виде, как это делает OllyDbg (даже интерфейс скопирован один в один), либо в виде графа, как делает IDA. Есть самописный простенький отладчик (tinydbg), правда у него не графический, а совершенно дубовый текстовый интерфейс (не с использованием псевдографики в консольном окне, а именно сугубо текстовый «диалог» с отладчиком) — его единственное преимущество в том, что антиотладочные приёмы, которые основываются на слабых местах популярных отладчиков, на него не действуют, а так же тем, что любую нестандартную команду или функцию я в него могу добавить сразу же, как возникнет такая необходимость, и мне не надо будет искать нужный плагин или придумать, как ограниченным инструментарием скриптинга реализовать какую-нибудь пошаговую деобфускацию отлаживаемого процесса. Есть собственный вьювер DBG/PDB-файлов, собственный вьювер COFF.
Остаётся только объединить кучу собственных разрозненных и сырых утилит в мощный и доделанный конгломерат.
И конечно, я говорю сейчас о собственном интересе. Так сказать, с точки зрения научного интереса было бы интереснее написать собственный инструмент. Список мастхев фич сформирован уже давно.
А вот с точки зрения практической, конечно, более перспективно возраждать или поддерживать инструмент, у которго уже есть имя, репутация, комьюнити и своя экосистема, чем пробивать дорогу чему-то совершенно новому.
Непонятно, почему автор OllyDbg не обернул все обращения из хоста в плагины в
__try ... __except
и сам не сделал какого-нибудь аварийного автосохранения в фильтре необработанных исключений. Даже VirtualDub имеет какой-то нестандартный top-level хендер для исключений, показывающий и контекст потока, и дизасм проблемного места, хотя, казалось бы, мультимедийной утилите такой функционал не обязателен, а вот в коде отладчика уже есть многий инструментарий для реализации подобной плюшки, но самой плюшки и вообще хоть какого-то аварийного процессинга исключений внутри самого себя — нет.Вообще, писать подобный плагин-автодампер для себя я не вижу особого смысла. У меня есть пара утилит, упомянутых в статье:
memdumper.exe
иextractor.exe
. В случае проблемы достаточно вызватьУ этого подхода есть один неоспоримый плюс: спасительные утилиты находятся вне зоне поражения сошедшего с ума кода. А вот плагин-спасатель может сам оказаться повреждён, ведь он разделяет с умирающим отладчиком одно адресное пространство.
А в первой версии такой API нет вообще. Но даже если бы была, я ведь упомянул, что есть за OllyDbg грешок тихо портить UDD при сохранении.
Если под рукой УЗИ-аппарат за десятки тысяч долларов?
А вот когда к вам просто не обращаются с такими задачами, потому что у вас нет «опыта», а «опыта» нет, потому что не обращаются, и вы сидите без работы — это совершенно другая, грустная история.
Это на ширпотребной электронике вроде телефонов, телевизоров, компьютеров можно набраться «стажа» и уверенности в себе, переремонтировав сначала всю мертвую технику себе, своим друзьям и друзьям друзей.
Причём, я прекрасно понимаю, что 90% отказов в том же УЗИ-аппарате будет на уровне «в тактильной кнопке панели управления обломался и закоротил выводы подвижный контакт» или «в блоке питания пробило диод», которые по сложности и уровню знаний, требуемых для починки, вообще ничуть не сложнее типичных отказов телевизоров и мобильных телефонов.
Но вашему заказчику важен ваш опыт в ремонте именно УЗИ-сканеров. Да и вам самим может быть немного страшно впервые браться за устройство стоимостью с новый автомобиль.
К сожалению, всё сложнее и сложнее найти заказчика и работодателя, который позволил бы тебе работать правильным образом.
Я, к примеру, являюсь админом ряда тематических групп: группы для инженеров-электронщиков, группы по ремонту и обслуживанию автомобилей кое-какой марки/модели, и нескольких групп, посвящённых музыкальным исполнителям. Всё это родилось на свет задолго до того, как сложилась такая опасная политическая обстановка. Очень большой объём сил и энергии был вложен в эти группы, чтобы сделать их интересными и привлекательными. Да и сама «общественная жизнь» в этих группах стала немаловажной частью жизни, без которой будет весьма тоскливо. И вы предлагаете взять и бросить всё это?
Кроме того, если отбросить таких инициативных людей, у которых есть потребность создавать свои «уютные» и интересные местечки, а не довольствоваться чужими, для большинства социальная продолжает выполнять свою первоначальную функцию — позволять людям делиться информацией с неким предопределённым кругом лиц.
Я давно начал ловить себя на мысли, что я, время от времени, вынужден рассказывать сначала одному человеку о каком-нибудь интересном событии, случае или какой-то эпопее (например, о нетривиальной починке какой-нибудь техники, сломавшейся абсолютно не вовремя) — пересказывать историю, разбавляя текстовый рассказ чередой фотографий, а спустя день-два уже другой человек просит поделиться подробностями, и ты опять рассказываешь ту же историю, скидываешь те же фотографии. Невольно задумываешься: было бы хорошо один раз сделать рассказ+фотоотчёт и предоставить возможность его читать всем тем, кому это может быть интересно. К сожалению, я не могу использовать для этого «стену» из-за отсутствия per-post настройки приватности — приходится довольствоваться личными сообщениями с тамошней возможностью скопировать и переслать диалог некоему новому собеседнику вместе со всеми картинками и вложениями.