Раннее исполнение кода в Delphi приложениях. |
1 марта 2016 года |
|
Опубликована статья описывающая методику раннего выполнения кода до передачи управления на точку входа в приложение.
На сайте размещен исходный код всех примеров к данной статье.
Читать в блоге автора: Раннее исполнение кода
Скачать демопримеры: early_execution.zip
|
Включение/отключение второго монитора. |
07 октября 2015 года |
|
Небольшой пример, показывающий как можно отключить второй монитор и включить его обратно.
Размер архива: 2 093 байт
Скачать: display_on_off.zip
|
Работаем с Compound File. |
31 марта 2015 года |
|
Опубликована статья описывающая работу с составными файлами.
На сайте размещен исходный код всех примеров к данной статье.
Читать в блоге автора: Работаем с Compound File
Скачать демопримеры: storage.zip
|
Кэширование и смартпойнтеры. |
12 декабря 2014 года |
|
Опубликована статья "Пара слов о кэшировании данных при чтении и смартпойнтерах" рассматривающая набор полезностей для программиста при работе с данными.
На сайте размещен исходный код всех примеров к данной статье.
Читать в блоге автора: Пара слов о кэшировании
Скачать демопримеры: store.zip
|
Поддержка MultiTouch + Gestures в XE4 |
12 декабря 2014 года |
|
Опубликована статья "Поддержка MultiTouch + Gestures в XE4" рассматривающая работу с интерактивными мультитач дисплеями.
На сайте размещен исходный код всех примеров к данной статье.
Читать в блоге автора: Поддержка MultiTouch + Gestures
Скачать демопримеры: multitouch.zip
|
Утилита Process Memory Map. |
14 ноября 2013 года |
|
Данная утилилита является развитием старой идеи, выполненной мной ранее в виде демопримера.
По сравнению с прошлым вариантом в нее добавилось множество новых возможностей.
На данный момент она отображает следующие данные:
- кучи процесса
- данные по нитям, как то: стек, TEB, SEH фреймы и CallStack
- информация по подгруженным PE файлам с разбивкой на секции
- данные из PEB
- данные из KUSER_SHARED_DATA
Предоставляет возможность поиска блока данных по памяти процесса. Выводит список экспортируемых функций. Сравнивает снимки карт памяти и прочее...
Исходный код доступен на GitHUB: Open GutHUB Repository
Прямая ссылка: Download Sources
Исполняемый файл: Download Binaryes
Обновление: 07 марта 2017 года.
Версия 1.0 alpha 12
Добавлена поддержка всех типов отладочных МАР файлов (Delphi 2 и выше,
MS VC++)
Добавлен вывод подсказок для CALL вызовов через таблицу импорта
|
Карта памяти процесса. |
14 ноября 2013 года |
|
Опубликована статья "Карта памяти процесса" рассматривающая различные способы получения информации о процессе.
На сайте размещен исходный код всех примеров к данной статье.
Читать в блоге автора: Карта памяти процесса
Скачать демопримеры: pmm2.zip
|
Использование сплайсинга. |
14 июня 2013 года |
|
Опубликована статья "Правильное применение сплайсинга при перехвате функций подготовленных к HotPatch" рассматривающая возможные ошибки при перехвате API функций.
На сайте размещен исходный код всех примеров к данной статье.
Читать в блоге автора: Использование сплайсинга
Скачать демопримеры: intercept2.zip
|
Перехват вызовов API. |
14 февраля 2013 года |
|
Опубликована статья "Перехват вызовов API" рассматривающая пять различных видов перехвата и два метода внедрения кода.
На сайте размещен исходный код всех примеров к данной статье.
Читать в блоге автора: Реализация перехвата вызовов API
Скачать демопримеры: intercept.zip
|
Изучаем отладчик. |
30 ноября 2012 года |
|
Завершена публикация цикла статей "Изучаем отладчик".
В первой части рассмотрены возможности интегрированного в IDE Delphi отладчика, даны рекомендации по наиболее оптимальному его использованию и общие советы по конфигурации среды.
Читать в блоге автора: Часть первая
Во второй части статьи рассмотрена изнаночная сторона работы отладчика на примере его исходного кода, подробно рассмотрены механизмы, используемые им при отладке приложения, показаны варианты модификаций памяти приложения, производимые отладчиком во время работы.
Читать в блоге автора: Часть вторая
Скачать демопример ко второй части статьи: dbg_part2.zip
В третьей части статьи рассмотрено практическое использование отладчика на примере обхода защиты приложения, использующего некоторый набор антиотладочных трюков.
Читать в блоге автора: Часть третья
Скачать демопример к третьей части статьи: dbg_part3.zip
|
Детектирование эмулятора ключа. |
7 сентября 2012 года |
|
При работе с ключом защиты Guardant (не важно какой модели) разработчик использует соответствующие API,
при этом от него скрыт сам механизм работы с устройством, не говоря уже о протоколе обмена.
Он не имеет на руках валидного хэндла устройства, пользуясь только адресом шлюза (т.н. GuardantHandle) через который идет вся работа.
В случае если в системе присутствует эмулятор ключа (особенно актуально для моделей до Guardant Stealth II включительно)
используя данный шлюз разработчик не сможет определить, работает ли он с реальным физическим ключом, или его эмуляцией.
В данном примеры рассмотрены нюансы работы с ключем без использования GuardantAPI
Данный пример реализован в рамках статьи: Простой способ обнаружения эмуляторов ключа Guardant
Размер архива: 8 693 байт
Скачать: enumdongles.zip
|
Уход от перехвата CreateFile(). |
7 сентября 2012 года |
Эмуляция GetLocalTime(). |
7 сентября 2012 года |
|
Обычным приемом при анализе стороннего приложения, является установка BP на API функциях и исследование вызывающего данные функции кода.
Как контрприем, применяется эмуляция API функций внутри тела приложения.
Например, при анализе триального приложения с привязкой ко времени, BP будет установлен на функции GetLocalTime().
Если проэмулировать ее вызов, то можно немного усложнить анализ кода приложения и/или уйти
от различных утилит подменяющих дату, принцип которых построен на перехвате API.
Данный пример реализован в рамках статьи: Эмулируем GetLocalTime
Размер архива: 2 894 байт
Скачать: getlocaltime.zip
|
Список установленных устройств. |
15 апреля 2010 года |
|
Небольшой пример работы с SeupAPI.
Отображает список установленных устройств. Немного не завершен до конца, но сейчас нет времени до его допиливания, поэтому выкладываю в том виде в каком он сейчас находится.
Размер архива: 368 781 байт
Скачать: devlist.zip
|
Доступ из сервиса к рабочему столу. |
15 апреля 2010 года |
|
Начиная с Windows Vista флаг SERVICE_INTERACTIVE_PROCESS игнорируется при создании сервиса, таким образом пропала возможность уведомить пользователя о каком либо событии штатным MessageBox.
Данный пример показывает как все-же можно выполнить такое действие из под неинтерактивного сервиса.
Размер архива: 4 845 байт
Скачать: servicenotifyer.zip
|
OLE DragDrop. |
15 апреля 2010 года |
|
Программный класс демонстрирующий принципы перетаскивания файлов из приложения в проводник в условиях когда перетаскиваемый файл отсутствует на диске (т.е. образ файла находится только в памяти вашего приложения).
Обновление: 21 сентября 2014 года.
Версия 1.0.4.
- Решены проблемы работы под Windows Vista и выше.
- Добавлена поддержка юникодных версий Delphi (2010 и выше)
- Код полностью документирован
- Расширены демопримеры использования класса
Размер архива: 934 917 байт
Включает два исполняемых файла, хром может ругаться при скачивании архива, чтобы обойти - нужно в меню выбрать "Keep".
Либо качаем второй вариант архива, без исполняемых файлов - только исходники.
Скачать с примерами: fwoledragdrop.zip
Скачать только исходники: fwoledragdrop_noexe.zip
|
Декомпилятор CHM файлов. |
14 мая 2009 года |
|
Небольшой пример демонстрирующий пример работы с интерфейсом IID_ITStorage на примере декомпиляции CHM файла.
Размер архива: 2 789 байт
Скачать: chmdecompile.zip
|
Безопасное отключение накопителей. |
24 апреля 2009 года |
|
Очередной пример отключения устройств (СD-ROM/Flash), но, в отличии от данного примера, работа идет непосредственно с самим устройством, а не с их подклассом. В деме рассмотрено остановка привода компакт дисков, корректное отключение флэш-накопителей, а так-же бонус ;) - определение текущего состояния лотка привода компакт дисков (открыт/закрыт). В общем - пользуйтесь...
Размер архива: 6 298 байт
Скачать: saferemove.zip
|
Карта памяти процесса. |
12 февраля 2009 года |
|
Данный пример строит полную карту памяти выбранного процесса.
Отображает все задействованные страницы памяти выбранного процесса, их размер и атрибуты доступа, показывает пути отмапленных образов файлов, размещение загруженных библиотек и исполняемых файлов, расположение их секций и характеристики секций, включая список директорий в секциях, адреса стеков потоков и их TLS.
Обновление 14 мая 2009 года.
Версия 1.02
Добавлен вывод куч процесса, а накже информации из PEB.
Размер архива: 18 388 байт
Скачать: pmm.zip
|
Список открытых файлов. |
9 января 2008 года |
|
Опять работаем с NtQuerySystemInformation, но в отличие от данного примера, на этот раз получаем список открытых файлов.
Размер архива: 4 578 байт
Скачать: enumopenfiles.zip
|
NTFS и OLE потоки. |
9 января 2008 года |
|
Небольшой пример, показывающий NTFS потоки файла. Также рассмотрен частный случай чтения свойств, хранящихся в OLE потоках.
Обновление 8 декабря 2008 года.
Версия 1.01
Исправлена ошибка при которой не выводилось имя самого последнего NTFS потока.
Размер архива: 4 635 байт
Скачать: ntfsthreads.zip
|
Включение/отключение Flash. |
9 января 2008 года |
|
За 2007-ой год я раз 150 видел на различных форумах вопросы плана: "Как-же всетаки отключить Flash-накопитель?".
Этот код покажет как это сделать. (заодно и как его включить потом обратно :)
Размер архива: 2 293 байт
Скачать: disableflash.zip
|
Отображение краткой информации по окну. |
24 июля 2007 года |
|
Утилита для отображения краткой информации по окну под курсором.
Писалась как рабочий инструмент, весь код написан без использования VCL,
отсюда малый размер утилиты...
Подойдет тем, кто интерисуется реализацией приложений на Windows API.
Как пользоваться:
После запуска утилита добавляет иконку в трей, при нажатии на которую можно вызвать диалог настройки.
В диалоге настраивается горячая клавиша для активации приложения и возможность автозапуска.
По умолчанию горячая клавиша CTRL+F12. При ее нажатии активируется главное окно программы,
которое центрируется относительно текущего положения мышки на экране.
В окне выводится информация по окну, расположенному под кусором мышки.
Размер архива: 57 309 байт
Скачать: wndinfo.zip
|
Класс для вывода информации о системном трее. |
16 ноября 2006 года |
|
Программный класс для вывода информации о системном трее.
Показывает все иконки, добавленные в трей, их подсказки и приложенпие, добавившее иконку.
В качестве возможностей класса, добавлена возможность удаления любой иконки.
Класс работает начиная с Windows 2000 и по Windows 7 (на 64 битах не тестировался)
Демка работы приложена.
Обновление 30 мая 2011 года.
Версия 1.03
Исправления компонента в редакции Дениса Гвоздецкого (ака harisma). Добавлены изменения мешающие нормальной сборке компонента под Delphi 5.
Размер архива: 8 244 байт
Скачать: fwsystrayinfo.zip
|
Работа с системным логом событий. |
2 сентября 2006 года |
|
Программный класс работы с системным логом событий.
Реализованы методы чтения, записи, работа с бэкапом, слежение за изменением лога.
На его основе и для демонстрации возможностей класса, написано демо приложение - аналог стандартного просмоторщика событий.
Размер архива: 45 924 байт
Скачать: evntlog.zip
|
Реализация закладки свойств файла. |
11 августа 2006 года |
|
Достаточно полезная демка для программистов увлекающихся копанием в РЕ формате.
Выводит список импорта - экспорта выбранного РЕ файла на закладке свойств файла.
Собственно, помимо демо получения самих списков импорта/экспорта показывает работу с
IShellPropSheetExt,
при помощи которого реализуется сама закладка, есть работа с активизацией контекста манифеста
(интересно будет тем, кто работает с диалогами под ХР),
в качестве вкусностей - юнит с реализацией функций
ImageRvaToVa и
ImageDirectoryEntryToData.
Надеюсь данная работа будет вам интересна.
PS: Для тех, кто будет собирать проект под Delphi версии 6 и ниже потребуются данные файлы.
Размер архива: 139 600 байт
Скачать: propsheet.zip
|
Работа с корзиной. |
8 июня 2006 года |
|
Пример работы с корзиной.
В принципе ничего интересного в нем нет, обычный вызов стандартных функций,
за исключением работы с шеллом, позволяющей выполнить некоторые нестандартные действия.
Размер архива: 43 027 байт
Скачать: rbin.zip
|
Работа с системным контекстным меню. |
11 мая 2006 года |
|
Пример отображения системного контекстного меню эксплорера.
Рассмотренна реализация IContextMenu2.
Размер архива: 4 409 байт
Скачать: syspopup.zip
|
Информация о процессах. |
17 января 2006 года |
|
Пример получения информации о процессах на основе NtQuerySystemInformation.
Размер архива: 9 247 байт
Скачать: taskmon.zip
|
Инжектирование кода. |
25 декабря 2005 года |
|
Простой пример внедрения и выгрузки библиотеки в удаленное адресное пространство.
Обновление 14 мая 2009 года.
Версия 1.01
Изменена процедура выгрузки библиотеки, раньше выгрузка была возможна только из своего процесса, из-за чего складывались некоторые сложности при портировании данного кода применительно к другим процессам.
Размер архива: 6 459 байт
Скачать: injectlib.zip
|
Работа с Structured Storage. |
24 июня 2005 года |
|
Класс для работы с структурированным хранилищем данных (Structured Storage).
Обновленная версия, исправлена неприятная ошибка приводящая к утечке памяти.
Размер архива: 5 508 байт
Скачать: storage.zip
|
Перехват АПИ. |
16 мая 2005 года |
|
Пример перехвата вызовов API функций, посредством изменения таблицы импорта.
Размер архива: 2 535 байт
Скачать: iatchange.zip
|
Memory Mapped Files. |
11 февраля 2005 года |
|
Небольшой пример, показывает принцип работы с Memory Mapped Files.
Размер архива: 2 690 байт
Скачать: mmf.zip
|
Разработка системного сервиса. |
28 января 2005 года |
|
Заготовка для сервисов не использующая VCL (пример включает в себя два пустых сервиса).
Размер архива: 2 455 байт
Скачать: twoservicedemo.zip
|
Дерево окон. |
25 ноября 2004 года |
|
Пример получения всех окон и их дочерних элементов в системе. Расширенная версия.
Отображает: класс и заголовок окна, имя модуля и его хэндл, а также PID процесса и языковую раскладку которому принадлежит окно.
Размер архива: 2 714 байт
Скачать: windowtree.zip
|
|
..: НАВИГАЦИЯ :..
|
|
|
|
|
|
|
|
|
..: ДОПОЛНИТЕЛЬНО :..
|
|
|
|
|