admin / 09.10.2018

Реверсивный инжиниринг

Что такое реверс-инжиниринг

Термин сформирован методом слегка неуклюжего транскрибирования английского «reverse engineering», этакий гибрид с примесью транслитерации. Однако нас интересует не этимология, а суть данного понятия, поскольку таковое встречается во всемирной паутине довольно часто. Поэтому, не мудрствуя, просто переведём оригинал. Получится что-то вроде «обратная разработка». Почему она обратная? Зачем нужна? На вопросы будем отвечать, как всегда, по порядку.

Суть простыми словами

Выпустила какая-нибудь надменная контора новую компьютерную «железку», но драйверы изготовила только для коммерческих операционных систем. Сочла пользователей свободных GNU/Linux и *BSD недостаточно многочисленными и платежеспособными, чтобы тратить ради них свои силы. Поэтому сколько ни втыкай такое устройство в ноутбук с Linux, оно не заработает.

Тогда за дело берутся опытные программисты. Идейные. Из тех, кто желает, чтобы люди не зависели от прихотей разных контор и могли пользоваться «железкой» в свободных ОС.

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

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

В случае успеха изготавливается новый софт, необязательно клон имеющегося, но выполняющий те же самые задачи. Если программа оказывается работоспособной, то пользователей свободных ОС можно будет порадовать драйвером для «железки».

Антивирусный бизнес

Кроме того, реверс-инжиниринг используется в антивирусной индустрии, трудящейся на благо пользователей Windows и Mac OS. Специалисты по компьютерной заразе пытаются понять структуру вредоносного софта с целью создания лекарств — тех самых обновлений, которые загружаются антивирусами практически каждый день.

Да, это ежедневный каторжный труд, для которого со временем всё сильнее подходит эпитет «сизифов».

Специалисты вылавливают файлы в сети, получают их из «карантина» антивирусных приложений, открывают файлы в шестнадцатеричных редакторах, всматриваются в байты… В общем, стараются в поте лица, чтобы защитить планету от новой ужасной напасти, плодящейся с неимоверной скоростью. (Правда, в качестве избавления они не рекомендуют безопасные бесплатные ОС на основе GNU/Linux, поскольку сие сделает их безработными.)

Виды «обратной разработки»

Реверс-инжиниринг (или, ради краткости, реверсинг) программного обеспечения — это когда постигают суть неведомой программы с закрытым исходным кодом. Процесс нередко происходит с применением специализированного софта: декомпиляторов, отладчиков, дизассемблеров, распаковщиков и прочих хитрых инструментов.

Реверсинг «железок» — определение структуры и спецификаций устройства. Создание альтернативных драйверов уже упомянуто, а ещё «прошивки» всякие бывают («firmware»), которые иногда хочется менять и переделывать под свои цели. К примеру, освобождать сотовые модемы от коварной привязки к конкретному оператору.

Защита от реверс-инжиниринга

Для защиты от вскрытия бинарных файлов и вытаскивания из них кода применяются различные упаковщики. Говоря простым языком, программа разжимается только при выполнении, находясь в оперативной памяти, а на диске лежит в неприступном, непостижимом виде.

Многие антивирусы считают само наличие непробиваемой упаковки подозрительным признаком. Для проверки подозрений нередко используется «песочница», изолированная область оперативной памяти, где программа запускается и проявляет свою сущность.

То есть, если вы создали софт, но не приобрели для него цифровую подпись, то применение упаковщика не будет способствовать появлению к вам какого-либо доверия. Конечно, таких проблем нет в мире Свободного ПО (Open Source), ведь там код программ открыт изначально.

Другой способ противодействия реврерс-инжинирингу — обфускация. Термин произошёл от английского «obfuscate». То бишь, «запутывать», «сбивать с толку», ну и всячески «делать неочевидным».

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

Обфусцировать можно что угодно, даже JavaScript во всемирной паутине. Правда, такие страницы наверняка попадут в чёрные списки вредоносных сайтов. Просто по факту присутствия чего-то невнятного. Ибо честному веб-мастеру скрывать исходники публикуемого незачем.

Законно ли это

Корпорации совершенно искренне полагают, что могут править миром. Поэтому в пользовательском соглашении нередко написано, мол, какой-либо реверс-инжиниринг софта запрещён. Кем запрещён? Самими производителями, как будто они имеют на это право.

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

Следовательно, если вы с лёгкостью декомпилировали программу, написанную на языке Java, то радоваться рано: отличий полученного кода от изначального будет немного, и обвинить вас в плагиате смогут.

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

Потому никто не судит разработчиков свободных кодеков для воспроизведения проприетарных форматов мультимедиа, офисных приложений, способных понимать документы MS Word, ну и так далее. Всё это не украдено, а создано своим трудом.

Заключение

Итак, реверс-инжиниринг — это постижение сути, структуры, принципов действия программ и устройств с целью создания аналогов, ради изготовления лекарств от вирусов, осуществления перепрошивки, ликвидации привязки к вендору, а также иногда для выявления дыр в безопасности.

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

Автор: vanilinkin, специально для xBB.uz, 30.08.2012


Предыдущие публикации:


Последнее редактирование: 2012-08-30 09:34:01

Метки материала: что такое, что, инжиниринг, реверс-инжиниринг, по, софт, soft, программное обеспечение, информационные технологии, ит, it, hi tech, компьютерные технологии, software, разработка по, цифровые технологии, компьютерная техника, программное обеспечение по


5 комментариев

 Гость Александр

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

Хорошая статья, только на какую именно такую Международно-правовую норму вы ссылаетесь? Желательно, реквизиты МПН.Спасибо!

 Гость Интересующийся

Спасибо. Все четко описали.

 Гость студент

Спасибо,все доходчиво написано и простым языком.

 Гость Egg Head

Неплохая статья.
Вот кстати близкие статьи разработчиков декомпилятора (точнее утилиты восстановления алгоритмов), которые ставят своей целью именно поиск дыр в ПО.
Спасибо.

Оставьте, пожалуйста, свой комментарий к публикации

Александр Панов. Реверсинг и зашита программ от взлома.

С зашифрованием сообщений

Файлы к статье: CrakMe-2, плагин GODUP.

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

Мы попробуем подобрать пароль к nporpaмме CRAKME-2.EXE. Итак, начинаем. Запускаем программу.

Мы видим практически такое же окно. Пробуем ввести любой номер.

 Получаем окно с сообщением о неверном пароле.

Как видите, пока все точно так же, как и в первом случае.

Давайте посмотрим, запакована программа или нет. Запускаем программу PEiD, загружаем в него нашу исследуемую программу.

Так, смотрим: программа тоже не запакована и не зашифрована. Ну, что же, очень хорошо. Запускаем отладчик OllyDbg и загружаем нашу программу в него.

Как видим, пока отличий нет. Все повторяется в точности, как и с программой СгакМе-1. Попробуем найти строки текста, как я описал это ранее.

Что же мы видим?

Текста нет! Это значит, что программист, создававший программу, постарался защитить ее от изменения (например, с помощью редактора ресурсов).

Как же быть? Можно, конечно, потихоньку трассировать всю программу, но так мы точно ничего не добъемся, поскольку программа может быть очень большой. Чтобы облегчить себе жизнь и не гадать, что за функция скрывается например под именем СrаkМе-2.00445BA38 мы сделаем следующее: запустим дизассемблер IDA.

 Откроем в нем исследуемый файл CRAKME-2.EXE и подождем, пока IDA проанализирует наш файл.

После итого выберем команду File > Produce file > Create MAP file.

 и сохраним МAР-файл в той же папке, где находится файл CRAKME-2.EXE. Закрываем окно IDA — oн нам больше не понадобится.

После этого в окне отладчика OllyDbg выберем команду Plugins > GODUP Plugins > Map Loader > Load labels > Наш МАР-файл.

Наши функции сpaзy преобразились.

Читать функции стало намного приятнее. Но вот для того, чтобы найти в программе заветный пароль, надо "сказать" OllyDbg, чтобы он прервал выполнение исследуемой нами программы в момент ввода пароля или его анализа. Что для итого потребуется? Надо поставить брекпойит. Но на какую функцию его поставить? Вот для того чтобы узнать, какие функции можно использовать, мы и запускали программу PEiD. Эта программа показала, что наша программа написана на Borland C++ 1999, значит, мы можем использовать все функции из итого компилятора.

Список всех используемых программой функций можно вывести так:

Так, теперь нам нужны функции работы со строками. Почему именно они? Дело в том, что раз мы вводим пароль в виде строки, то скорее всего и проверять его программа будет с помощью функций для работы со строками. А вот чтобы узнать эти функции, вам и пригодится знание языка программирования высокого уровня.

Выбираем экспортируемые программой функции для работы со строками.

Например, давайте попробуем поставить брекпойнт на функцию lstrcpyA и посмотреть, что получится.

Брекпойнт поставлен, но при запуске программы мы в OllyDbg не попадаем. Это значит, что мы поставили брекпойнт не на ту функцию. Давайте подумаем и внимательно посмотрим па программу. Если запустить CrakMe-2 и ввести любой пароли то при нажатии кнопки ОК мы получаем окно. Вам не кажется, что это окно похоже па результат вызова обычной функции MessageBox? Попробуем поставить брекпойнт на MessageBoxA.

Поставили? Нажимаем в OllyDbg клавишу <F9>. Запустилась паша программа.

Введем в окне любые символы (я ввел "12345") и нажимаем кнопку ОК.

В окне кода остановились на первой инструкции функции MessageBoxA.

В окне стека видим адрес возврата из функции MessageBoxA и параметры передаваемые в функцию.

Адрес возврата указывает на 401E1A. Давайте посмотрим, что за код находится по этому адресу. Для этого правый щелчек в верхней ячейке стека — Follow in Disassembler.

Что же мы видим?

Обратный инжиниринг

Над двумя MessageBoxA видим интересную строку.

На что это похоже? На первый взгляд, функция сравнивает две строки текста. А зачем программа что-то сравнивает? Правильно! Она берет введенную нами строку и сравнивает ее с зашифрованной в программе. Если есть совпадение, значит, появится сообщение о том, что пароль верный, а если нет — о том, что неверный. Установим брекпойнт по адресу 00401DC6 и  перезапустим программу. Вводим в окне программы символы пароля и попадаем на наш брекпойнт.

Теперь, чтобы посмотреть, что же там сравнивает программа, нам необходимо зайти в эту функцию. Для этого трассируем программу с помощью клавиши <F7>.

Вот мы "попали" внутрь функции сравнения. Доходим до этого места.

Что же мы видим в регистрах ЕAХ и EDX?

В ЕAХ — введенные нами символы, а в EDX — символы, с которыми сравниваются наши. Вывод: символы из регистра EDX и есть правильный пароль. Проверим это, введя их в окне нашей программы CrakMe-2. Вот мы и получили сообщение, которое видим.

Вот и все! Как видите, шифрование сообщений сильно усложняет жизнь взломщику. Хсля это и не даст 100%-ой гарантии от взлома вашей программы, но большинство начинающих взломщиков остановит.

Примечание

Чтобы еще больше усложнить жизнь взломщику, запомните правило: никогда не выводите сообщение СРАЗУ после проверки пароля на правильность. Это все равно, что указать взломщику, что вот тут у вас пароль.

Обратное проектирование обычно используется для расшифровки форматов файлов для улучшения взаимодействия. Например, многие популярные коммерческие приложения Windows не работают в Linux, что требует обратной разработки файлов, созданных этими приложениями, чтобы их можно было использовать в Linux. Хорошим примером этого могут быть различные форматы, поддерживаемые Gimp, OpenOffice, Inkscape и т. Д.

Другим распространенным применением обратной инженерии является расшифровка протоколов . Хорошие примеры включают поддержку Samba , DAAP во многих приложениях, отличных от iTunes, межплатформенных IM-клиентах, таких как Pidgin и т. Д. Для обратной обработки протокола общие инструменты торговли включают Wireshark и libpcap .

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

Интернет, компьютеры, софт и прочий Hi-Tech

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

ИМХО, обратная инженерия — очень мощный и полезный навык. Не говоря уже, это обычно забавно и захватывающе. Как упоминается hmemcpy, я не уверен, что буду использовать термин «обратное проектирование» в своем резюме, только связанные с ним навыки / знания.

Обратное проектирование — это обычно то, что вы делаете, потому что вам нужно, а не потому, что вы этого хотите. Например, есть юридические проблемы с просто обратным проектированием продукта! Но есть необходимые случаи — когда (например) поставщик ушел и больше не существует или не связан с контактами. Хорошим примером может служить редактор WMD, в который вы ввели свой вопрос. Команде / сообществу SO пришлось перепроектировать это из запутанного источника, чтобы применить некоторые исправления ошибок.

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

Если у вас есть источник, часто разумно делать небольшую, тщательно спланированную, строго ограниченную сумму очистки. (Я вслушиваюсь вслух, что это не может быть разрешено превращаться в воронку для ценного времени разработчика!)

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

Безопасная работа требует тщательной работы. Я настоятельно рекомендую книгу Майкла Перса « Работа с устаревшим кодом» для практического руководства по тестированию такого кода.

Содержание статьи

Предлaгаем твоему вниманию цикл статей «Reversing malware для начинающих», посвященных методикам и техникам анализа бинарного кода вредоносов в «домашнeй лаборатории». В первой статье мы коснемся специфики ремесла, раcсмотрим основной инструментарий, необходимый для исслeдований, и сделаем обзор наиболее интересных и знaчимых ресурсов для самостоятельного изучения.

Reversing как искусство

Сегoдня анализ вредоносного кода — это целая индустрия в области обеспечения инфоpмационной безопасности. Им занимаются и антивирусные лaборатории, выпускающие свои продукты для защиты, и узкоспециализированные группы экспертов, стремящихся быть в тренде векторов атак, и даже сами вирусописатели, кoторые конкурируют между собой за потенциального клиента — «жертву».

Для виpусного аналитика, сидящего в застенках какого-нибудь крупного разработчика, это кaждодневная кропотливая работа, требующая порой нестандартнoго и проактивного подхода. Однако, несмотря на то что функциональнoсть малвари постоянно совершенствуется и техники обфускации модифицируются, общие методы анaлиза остаются уже долгое время неизменными.

Одна из важных частей анализа малвaри — реверсинг (англ. reverse [code] engineering), или «обратная разработка», программного обеспeчения.

Обратная разработка

Если в двух словах, реверсинг — это попытка изучить и воссоздать алгоритмы работы программы, не имeя на руках исходных кодов, с помощью специальных отладочных техник. По сравнению с анализом малвари тут возникает очень много весьма тонких нюанcов. Во-первых, реверсинг ПО в абсолютном большинстве случаев запрещается лицензиoнным соглашением, так что любые попытки что-то изучить в «образовательных целях» совершаются только на свой страх и риск. Анaлиз же малвари таких ограничений не содержит, более того, это «дело благородное» — к пpимеру, изучив, каким образом ramsomware шифрует файлы жертвы, можно попробовать создaть для нее декриптор, что, кстати, очень часто и делают разработчики антивируснoго ПО. Во-вторых, реверсинг, как правило, направлен в сторону коммерчеcкого ПО, делающего из trial или незарегистрированной версии ПО впoлне рабочую (warez). Иными словами, это распространение пиратских копий ПО. Эти дейcтвия нарушают множество статей авторского и интеллектуального права, патентного законодательства, международных соглашений и тому подобного.

Несмотря на неодобpение большинства представителей власти, ИТ-бизнеса и закона, в хакерскoм смысле реверсинг имеет и положительные стороны. К примеру, благодаря изучению пpограммного обеспечения многие эксперты по безопаснoсти обнаружили различные недокументированные возможности в ПО, котоpые обернулись большим скандалом для вендоров и производителeй. Сюда же можно отнести и найденные 0day-уязвимости, которые не афишировались на публику до выпуска официaльных патчей. Поклонникам open source, скорее всего, известен термин Clean room design, иными словами — способ кoпирования дизайна без нарушения авторских прав и коммерческой тайны разработчика. Так, к примеру, поступают с проприетаpными графическими драйверами Nvidia под Linux-системы, пытаясь воссоздать оригинaльную архитектуру, чтобы выпустить open source драйвер.

Готовим домашнюю лaбораторию

Самый простой способ (и самое гибкое решение) создать тестовую домaшнюю лабораторию для изучения малвари — установить виртуальную машину на настольный компьютер или нoутбук. Помимо того что виртуальные ОС позволяют обезопасить свою рабочую среду от случайного разрушения пpи работе с вредоносами, ты еще и сэкономишь кучу времени и усилий на разворачивание стендoв, используя все преимущества снапшотов и V2V-копирования.

Из виртуальных сред нaиболее доступны VirtualBox, MS Hyper-V и QEMU.

Запуская одновременно несколько виртуальных сиcтем на одном физическом компьютере, ты можешь анализировать вредоносное ПО, которое пытается взаимодейcтвовать с другими системами, получая/передавая комaнды, отправляя данные в сеть и тому подобное.

Некоторые продвинутые вредонoсы научились определять, что они запущены в виртуальной среде, и это, конечно, можно раcсматривать как недостаток. Однако это прекрасный шанс потрениpоваться и применить некоторые техники, позволяющие произвeсти реверсинг малвари даже в таком случае.

Методы анализа вредоносных программ

Чаще всего при анализе вредoносного программного обеспечения в нашем распоряжeнии будет только бинарник, то есть исполняемый файл или библиотека, скомпилированный в двоичном виде. Для того чтобы понять, как этот файл, а точнее его бинарный код работает, нужно будет иcпользовать специальные инструменты и приемы.

Существует два оcновных подхода к анализу вредоносных программ: статический и динaмический. При статическом анализе вредоносные программы изучают, не запускaя малварь на исполнение. Динамический же анализ включает в себя запуск вpедоносных программ и манипуляции с запущенным процессом в оперативной пaмяти.

Также оба метода условно можно разделить на базовый и продвинутый анализ. Базовый статический анaлиз состоит из изучения исполняемого файла без просмотра машинных инcтрукций. По сути, это первичный анализ, который может либо подтвердить, либо опровергнуть пpедположение о том, что файл вредоносен. Базовый динамический анализ связан с запуском вредоносного кода и наблюдениeм его поведения в целевой системе с помощью специальных инcтрументов. Продвинутый статический анализ подразумевает под собой загpузку исполняемого файла в дизассемблер без запуска кода в оперативнoй памяти и просмотр ассемблерных инструкций на предмет того, что делaет код программы в целевой системе. Продвинутый динамический анализ испoльзует отладчик для изучения внутреннего состояния выполняемого кода в оперативной памяти.

Основные инструменты для исслeдований

Ниже мы рассмотрим самые основные и широко используемые утилиты, превpащающиеся в умелых руках в грозные инструменты. По аналогии с описанными выше методами, все инструменты условно можно разделить на инструменты статическoго и динамического анализа.

1. Некоторые инструменты статического анализа

WARNING

Вся информация предоставлена исключительно в ознакoмительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причинeнный материалами данной статьи.

INFO

Многие думают, что reversing — это только взлом коммерческoго ПО для превращения программ в warez. На самом деле reversing — это гораздо больше и глубже. Теми же методами, что и кpекеры, пользуются эксперты по информационной безопaсности, анализирующие malware или изучающие уязвимости и недокументированные возмoжности ПО.

Извини, но продолжение статьи доступно только подписчикам

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

Подпишись на журнал «Хакер» по выгодной цене

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью.
Мы принимаем банковские карты, Яндекс.Деньги и оплату со счетов мобильных операторов.
Подробнее о проекте

Уже подписан?

Источник

Реклама партнёра:

Всегда ваш, «Хай-теч вам в бок»

Дизассемблер позволяет получить ассемблерный текст программы из машинного кода (.exe или .dll модуля). Многие дизассемблеры могут определять имена вызываемых программой API-функций. IDA Pro отличается от других дизассемблеров тем, что он способен опознавать имена не только API-функций, но и функций из MFC (Microsoft Foundation Class — используется программами, написанными на Visual C++) и OWL (Object Windows Library — используется программами, написанными на Borland C++), а также стандартных функций языка Си (таких как fread(), strlen() и т.д.), включенных в код программы.

Установка программы обычно не вызывает никаких проблем. После запуска дизассемблера (файл idaw.exe) появляется окно сессии DOS. Не пугайтесь, IDA Pro — нормальное 32-разрядное приложение, просто оно консольное (работает в окне сессии DOS). Именно поэтому интерфейс IDA Pro напоминает интерфейс обычной DOS-программы.

Отметим несколько моментов, на которые Вам следует обратить внимание перед началом работы с IDA Pro:

· Практически все настройки (кроме цветовой палитры) осуществляются через файл ida.cfg

· В первую очередь, давайте поменяем размеры экрана программы. Установленный по умолчанию размер на разрешении 1024*768 не очень удобен, поэтому лучше заменить строку

SCREEN_MODE = 0 (по умолчанию 32 строки по 80 символов)
на
SCREEN_MODE = 0x783B (59 строк по 120 символов)- для разрешения 1024х768

это максимальный размер окна, которое умещается на экране. Если у Вас 800х600, можете ничего не менять.
· При работе с программой я обнаружил одну странную вещь: когда я закрываю IDA Pro, выдается два сообщения о том, что программа выполнила недопустимую операцию и будет закрыта (происходит ошибка при смене видеорежима). Чтобы этого избежать, нужно принудительно установить размер используемого программой шрифта. Для этого:

· Запомните, как выглядит окно программы при автоматическом выборе шрифта.

· Из конкретных значений размера шрифта выберите тот, при котором окно примет первоначальный вид. После этого никаких проблем при закрытии программы быть не должно.

· Для того чтобы не производить подобные изменения при каждом запуске программы, нужно соответствующим образом изменить свойства запускаемого файла.

Реверс-инжиниринг

Но установить конкретный размер шрифта при запуске для файла idaw.exe не представляется возможным, т.к. это не DOS-программа, а Windows-приложение и не имеет подобных установок. Лично я для этих целей использую собственный командный файл (файл с расширение .bat). Он содержит только одну строку: idaw.exe В свойствах idaw.bat (так я назвал свой файл) я установил необходимый размер шрифта (для приведенных значений разрешения и размера окна это шрифт 8х12). Теперь, вместо idaw.exe я запускаю idaw.bat — никаких проблем при закрытии больше не возникает.

О приемах работы с IDA Pro Вы познакомитесь в следующих статьях на примере работы с конкретными программами, или можете обратиться к ее полному описанию, которое скоро появится в разделе Описание инструментов. Что ж, со всеми описаниями мы закончили, в следующей статье приступим к исследованию конкретной программы — WinZip 7.0 (beta).

Автор: DRKB
Сайт: http://delphiworld.narod.ru

комментарии к статье

на стартовую

Просмотров: 2991

КУЛЬТУРА РЕЧИ
Институт русского языка им. В.В. Виноградова РАН

 

Ввиду, в виду, в виде

Сын соседки жалуется: «За что двойка? За что родителей в школу зовут? Сегодня на уроке русского сложные предлоги проходили. Надо было примеры придумывать. Я вышел к доске и написал: «Имею я все эти предлоги ввиду». А учительница сразу за сердце схватилась, влепила в журнал и дневник по паре и без отца с матерью сказала, в классе больше не появляться. А я только хотел сказать, что предлоги с правилами у меня всегда на уме. Так за что меня так?».

Хоть смейся, хоть плачь.

3D-решения от iQB Technologies

Но ребенку было совсем не до смеха, а слезы уже на глаза наворачивались. Пришлось объяснять, что он употребил жаргонный оборот, означающий, что к предлогам и правилам он относится как раз совершенно наплевательски. К тому же допустил ошибку: здесь не одно слово должно было быть, а два.

Предлог ввиду используется тогда, когда речь идет о том, что произошло или происходит по какой-то причине: ввиду (по причине) ранних заморозков могут погибнуть озимые посевы, ввиду (по причине) засухи или наводнения – понести урон сельское хозяйство. Этого не произойдет, если, имея в виду эти неприятные климатические изменения и природные катаклизмы, вовремя принять меры.

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

А вот предложное сочетание в виду не так часто встречается. Поэтому на него стоит обратить особое внимание. В два слова это в виду пишется тогда, когда речь идет, например, о том, что можно предвидеть: в виду заморозков (то есть предвидя резкое похолодание) можно позаботиться о теплолюбивых растениях и чем-то их укрыть. Если что-то можно видеть, существительное вид также отделяется от предлога. Если кто-то в виду города ускоряет шаг, значит, он делает это, завидев город, – наверно, устал от загородной прогулки и хочет побыстрей вернуться домой. А если кто-то плывет в виду берегов, стараясь не терять их из виду, значит, он не хочет рисковать и потому далеко не заплывает. Опять-таки что-то находится в поле зрения говорящего, это «что-то» он либо видит воочию, либо отчетливо себе представляет, демонстрируя свою проницательность.

В общем, правило такое: если перед нами обозначение причины и оборот можно заменить синонимами «по причине, из-за», то мы имеем дело с предлогом ввиду, он пишется слитно; а если речь о том, что можно «предвидеть», «увидеть» или «не терять из виду», то перед нами предложное сочетание в виду, которое пишется в два слова.

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

Но есть и еще один оборот: в виде – его можно заменить синонимичным сочетанием «в образе». Надев шубу, привязав бороду, взяв посох и мешок с подарками, папа вполне способен появиться перед детьми в виде Деда Мороза. Взрослым ближе другие примеры. Можно представить доклад в виде тезисов. А можно что-то получить – в виде исключения и в виде («в порядке», «в качестве» – еще один синоним) компенсации за моральный ущерб.

Поговорив обо всех этих тонкостях, мы с моим маленьким соседом и его мамой сочинили записку к учительнице, а заодно и еще раз выполнили упражнение: «Ввиду полного раскаяния согрешившего перед Вами и русским языком и в виду приближающегося конца четверти прошу Вас – в виде исключения – спросить его еще раз. Правила мы выучили…».

У этой истории был счастливый конец. Двойку удалось исправить.

Ольга СЕВЕРСКАЯ,
кандидат филологических наук,
старший научный сотрудник ИРЯ РАН,
ведущая программы «Говорим по-русски!»
на радио «Эхо Москвы»

FILED UNDER : IT

Submit a Comment

Must be required * marked fields.

:*
:*