HOWTO-Fluke

From GZProject Wiki

Revision as of 14:21, 14 January 2008; view current revision
←Older revision | Newer revision→
Jump to: navigation, search
HOWTO-Fluke
FlukeScript
Hi-level API
IOFluke
Input/Output capture library
Fluke
Code Injection library

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

Для начала я хочу посветить читателя в необычный термин, который с годами закрепился в моих проектах. В двух словах, наша задача получить контроль над любым приложением написанным под Windows. Это означает, что мы хотим создать некоторую виртуальную среду вокруг приложения эмалируя поведение операционной системы и внутренних функций внутри исполняемого процесса. Путем таких преобразований, мы без изменения исходного кода можем заставить делать все что угодно, любое приложение под Windows.

Contents

Что такое Fluke?

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

Библиотеки

Если вы хотите использовать код разработанный в рамках этого проекта, то это легко можно сделать. Так как все модули выполнены как независимые библиотеки с гибким интерфейсом. Они доступны для скачивания через систему контроля версий svndir:trunk/library/fluke, svndir:trunk/library/iofluke. Подключение к проекту и управление вызовом функций проходит в три этапа, первый этап - подгрузка исполняемого кода, это описано в Fluke. Второй этап - перехват функций ввода\вывода, это описано IOFluke. Третий этап - создание среды для удобной работы с приложением на высокоуровневом языке, таким как Java или Visual Basic, это описано FlukeScript.

Пример

Для более подробного рассказа о том как необходимо анализировать программный код нам понадобиться:

  • Microsoft Visual Studio 2005 (msdev 8)
  • IDA Pro Disassembler and Debugger (4.9.0.863)

В Интернете можно найти другие версии и другие программные продукты схожие по функционалу, однако эти более распространенные.

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

Ссылки