Рубрика «Delphi» - 20

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

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

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

Вот что-то такое мы и рассмотрим, только в очень упрощенной форме.
Читать полностью »

В первой части статьи были рассмотрены некоторые нюансы работы с интегрированным отладчиком Delphi — не все конечно, но наиболее необходимые разработчику. Теперь задача выглядит несколько иначе: рассмотрим его работу изнутри на примере его исходного кода. Для того чтобы не сильно утомлять вас описанием API функций и не разжевывать все этапы отладки, описывать его работу я буду на примере класса TFWDebugerCore. Часть не особо важных моментов я опущу, при желании вы их сможете уточнить просмотрев код данного класса.

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

Если же вы ранее никогда не сталкивались с самостоятельной реализацией отладчика, но заинтересованы в ней, то как минимум вы должны начать с данной ссылки: Debugging and Error Handling
По ней вы сможете узнать об основных аспектах отладки, как-то структурной обработке исключений, работой с отладочной информацией, минидампами. Работой с образом исполняемого файла, заголовками, секциями, картой памяти процесса, что такое RVA и VA и прочее-прочее.
Но это только если захотите разобраться во всей этой кухне.

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

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

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

Читать полностью »

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

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

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

Объем статьи получился неожиданно большим, поэтому я разбил ее на три части:

  • В первой части будут рассмотрены возможности интегрированного в IDE Delphi отладчика, даны рекомендации по наиболее оптимальному его использованию и общие советы по конфигурации среды. Материал данного раздела предназначен как начинающим разработчикам, так и более подготовленным специалистам.
  • Во второй части статьи будет рассмотрена изнаночная сторона работы отладчика на примере его исходного кода, подробно рассмотрены механизмы, используемые им при отладке приложения, показаны варианты модификаций памяти приложения, производимые отладчиком во время работы.
  • В третьей части статьи будет рассмотрено практическое использование отладчика на примере обхода защиты приложения, использующего некоторый набор антиотладочных трюков.

Собственно, приступим.
Читать полностью »

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

в 12:45, , рубрики: Delphi

image
Сегодня, 22-го апреля, компания Embarcadero Technologies официально представила RAD Studio XE4 — пакет средств разработки native-приложений для различных устройств.

Пакет RAD Studio XE4 доступен в пяти редакциях: Starter, Professional, Enterprise, Ultimate и Architect.

Данная версия пакета состоит из следующих продуктов:

  • Delphi XE4;
  • C++ Builder XE4;
  • HTML5 Builder XE3;
  • InterBase XE3 Developer Edition и InterBase XE3 ToGo (в редакции Professional и более старших редакциях);
  • DB PowerStudio XE3.5 Developer Edition (только в редакции Ultimate);
  • ER/Studio 9.5 Developer Edition (только в редакции Architect);
  • База данных IBLite для iOS с лицензией на бесплатное развертывание;
  • Дополнительные средства и ПО партнеров

В отличие от предыдущей версии в состав студии не вошел Embarcadero Prism.
Главным же новшеством XE4 стала поддержка нативной разработки для iOS. На текущий момент только в Delphi, но в ближайшем будущем и в C++ Builder.

Основные возможности Delphi для iOS:
Читать полностью »

в 15:13, , рубрики: Delphi, метки:

Для борьбы с проблемой «висячих» ссылок на освобожденные объекты в Delphi обычно используется процедура SysUtils.FreeAndNil. Процедура FreeAndNil освобождает объект и устанавливает переменную в nil.
Но мне всегда не нравилось то, что в этой процедуре не типизированный параметр. И туда можно передать не только объект, но и строку, число и любую переменную. Естественно при вызове с таким некорректным параметром будут проблемы. Что самое неприятное проблемы могут вылезти совсем в другом месте.
Мне хотелось бы чтобы компилятор меня контролировал, желательно на этапе компиляции. Но увы найти решение при котором компилятор ругался на попытку вызвать процедуру освобождающую и обнуляющую, с параметром не совместимым с TObject мне не удалось. Зато я нашел метод при котором такая попытка обнаруживалась на этапе выполнения при первом вызове. В общем, лучше один раз увидеть. Вот код более безопасного аналога FreeAndNil.
Читать полностью »

0. Предисловие

Доброго всем, чего там у вас! Поговорим немного о программировании, а именно, о сохранении настроек. Когда то давно, когда я только начинал писать более-менее приличный софт, я часто сталкивался с проблемой сохранения настроек — в ходе развития софта появлялись все новые и новые опции и каждый раз приходилось добавлять их в функции сохранения/загрузки, придумывать им имена, мучится над структурой хранения… В общем, заниматься не самыми приятными вещами. К тому же, такой подход давал богатую почву для ошибок. Но вот, в один прекрасный день, я открыл для себя Америку, идея пришедшая мне в голову навсегда избавила мои проекты от проблем с настройками. Именно о этой идеи я и хочу вам рассказать.

1. Теория

С чего начинаются все проблемы с сохранением настроек? Верно, с визуальных компонентов. Ведь по сути, все значения динамических настроек хранятся в тех или иных полях визуальных компонентов. Осознав это, я задался вопросом: «А что нам это дает?» А вот что:

  1. У любого компонента есть имя
  2. У любого компонента есть поле для хранения значения
  3. Все компоненты на форме можно легко найти

Три этих свойства решают все наши проблемы! Ведь достаточно просто пройтись по всем визуальным компонентам и запомнить их значения!

2. Выбор хранилища

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

[название_блока1]
название_переменной1=значение_переменной1
название_переменной2=значение_переменной2

название_переменнойN=значение_переменнойN

[название_блока2]
название_переменной1=значение_переменной1
название_переменной2=значение_переменной2

название_переменнойN=значение_переменнойN

[название_блокаN]
название_переменной1=значение_переменной1
название_переменной2=значение_переменной2

название_переменнойN=значение_переменнойN

Эта структура идеально подходит для хранения наших настроек:

[тип_компонента]
название_компонента=значение

Читать полностью »

А как всё мило начиналось

Параллакс для сколлинговых игр дело обычное, однако степень проработки параллакса разительно отличается от игры к игре. Получить действительно красивый и интересный фон довольно сложно. Многие сейчас переходят на 3D и параллакс как эффект вообще отпадает, так как получается естественным путём.
В былые времена на фоне пускали точки с эффектом параллакса (звезды), чуть позже стали делать фоны в пару-тройку разных слоёв. А сейчас уже не обойтись парой слоёв или скроллирующимся фоном, нужно немножко больше.

2D скроллшутер за неделю
Lightforce, Commodore 64

Внимание, под катом большие картинки.
Читать полностью »

В этом году компании Embarcadero Technologies исполняется 20 лет. Среди отечественных пользователей компания известна, прежде всего, благодаря линии средств разработки Delphi, C++ Builder, RAD Studio. Однако известность на мировом рынке компания завоевала благодаря продуктами для специалистов по базам данных. В преддверии юбилея издание CNews опубликовало развернутое интервью с Кириллом Николаевичем Ранневым — бессменным главой представительства Embarcadero в России и странах СНГ.
image

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

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

Но нет ничего невозможного…
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js