dd_action('wp_footer', function() { ?>

5.6 CFF Explorer — анализатор PE-файлов и зависимостей игры

CFF Explorer — анализ PE-файла игры

🧩 Что такое CFF Explorer

CFF Explorer — это инструмент для просмотра и анализа файлов Windows в формате PE (Portable Executable).

Он используется для:

  • EXE;
  • DLL;
  • системных библиотек;
  • игровых файлов.

Основное назначение:

посмотреть внутреннее устройство файла и определить, какие технологии и библиотеки использует программа.


Схема работы:

 
Game.exe

↓

CFF Explorer

↓

PE Structure

↓

Imports

↓

DLL/API

↓

Диагностика запуска
 

🎯 Для чего нужен CFF Explorer

Используется, если нужно узнать:

  • 32-битная или 64-битная игра;
  • какие DLL импортирует EXE;
  • какие функции Windows использует;
  • есть ли защита или упаковка;
  • какие параметры PE Header установлены;
  • почему игра несовместима с современной Windows.

🆚 CFF Explorer и другие инструменты

ИнструментНазначение
Dependenciesпоиск зависимостей DLL
ProcMonреальные обращения к файлам
Process Explorerзагруженные DLL
PE Explorerпросмотр структуры EXE
CFF Explorerглубокий анализ PE

CFF Explorer часто используют при сложной диагностике старых игр.


📥 Установка CFF Explorer

CFF Explorer входит в пакет:

 
Explorer Suite
 

Основной файл:

 
CFF Explorer.exe
 

Особенности:

  • portable;
  • не требует установки;
  • работает с EXE и DLL.

▶ Открытие игры в CFF Explorer

Шаг 1

Запустить:

 
CFF Explorer
 

Шаг 2

Открыть:

 
File

↓

Open

↓

Game.exe
 

После загрузки появится дерево:

 
NT Headers

+

Sections

+

Import Directory

+

Resource Directory

+

.NET Directory
 

🟦 NT Headers — информация о файле

Один из важных разделов.

Показывает:

  • архитектуру;
  • параметры загрузки;
  • характеристики файла.

🏗 Проверка x86 / x64

Раздел:

 
NT Headers

↓

File Header

↓

Machine
 

Пример:

 
IMAGE_FILE_MACHINE_I386
 

Это:

 
32-bit x86
 

Пример:

 
IMAGE_FILE_MACHINE_AMD64
 

Это:

 
64-bit
 

⚠ Почему это важно для игр

Старая игра:

 
Game.exe

x86
 

Требует:

 
DLL x86
 

Ошибка при смешивании:

 
0xc000007b
 

Причина:

несовместимая архитектура.


📚 Import Directory — поиск DLL

Самый полезный раздел.

Путь:

 
NT Headers

↓

Data Directories

↓

Import Directory
 

Показывает:

какие библиотеки нужны игре.


Пример:

 
Imports

├── ddraw.dll
├── dsound.dll
├── winmm.dll
└── mss32.dll
 

Вывод:

игра использует:

  • DirectDraw;
  • DirectSound;
  • Windows Multimedia;
  • Miles Sound System.

🎮 Определение графического API

DirectDraw

Если найдено:

 
ddraw.dll
 

Типичные игры:

  • Windows 95/98;
  • стратегии;
  • старые RPG;
  • 2D-движки.

Возможные решения:

  • DDrawCompat;
  • cnc-ddraw;
  • DxWrapper.

🎮 Direct3D 8

Если:

 
d3d8.dll
 

Возможны проблемы:

  • Windows 10/11;
  • новые драйверы;
  • старый рендер.

Используются:

  • dgVoodoo2;
  • D3D8 wrappers.

🎮 Direct3D 9

Если:

 
d3d9.dll
 

Проверять:

  • DirectX 9 Runtime;
  • драйвер;
  • совместимость.

🖥 DXGI

Если:

 
dxgi.dll
 

Используется:

  • DirectX 10;
  • DirectX 11;
  • DirectX 12.

🔊 Анализ звуковых библиотек

CFF Explorer помогает найти:


DirectSound

 
dsound.dll
 

Windows Multimedia

 
winmm.dll
 

Miles Sound System

 
mss32.dll
 

Bink Video

 
binkw32.dll
 


🔍 Проверка функций DLL

CFF Explorer показывает:

какие функции импортируются.

Пример:

 
DirectDrawCreate
 

Можно понять:

что игра действительно использует DirectDraw.


Другой пример:

 
DirectSoundCreate
 

Значит:

используется DirectSound.


🧪 Практический пример 1

Игра 1998 года

CFF Explorer:

 
Imports:

ddraw.dll

winmm.dll
 

Диагноз:

старый 2D движок.


Решение:

проверять:

  • DirectDraw;
  • оконные режимы;
  • DDrawCompat.

🧪 Практический пример 2

Ошибка запуска

Игра:

 
Game.exe
 

CFF Explorer:

 
Imports:

MSVCP90.dll
 

Вывод:

требуется:

 
Visual C++ 2008
 


🧪 Практический пример 3

Проверка модифицированной DLL

Есть:

 
d3d9.dll
 

Открываем её:

CFF Explorer показывает:

  • компанию;
  • экспорт;
  • размер;
  • структуру.

Можно понять:

это:

  • оригинальная DLL;
  • wrapper;
  • модификация.

📦 Sections — анализ частей файла

PE-файл состоит из секций:

Пример:

 
.text

.rdata

.data

.rsrc
 

Основные:

.text

Код программы.


.rdata

Константы и строки.


.rsrc

Ресурсы:

  • иконки;
  • меню;
  • версии.

🛡 Обнаружение упаковки и защиты

CFF Explorer может помочь заметить:

  • необычные секции;
  • упаковщики;
  • изменённый PE Header.

Например:

 
UPX0
UPX1
 

Возможен:

UPX packer.


Это важно, потому что:

упакованные EXE могут скрывать реальные зависимости.


⚠ Ограничения CFF Explorer

Он показывает:

✅ структуру файла;
✅ импорты;
✅ архитектуру;
✅ PE Header.

Но не показывает:

❌ реальные попытки загрузки DLL;
❌ ошибки запуска в момент работы;
❌ динамические LoadLibrary вызовы.

Для этого:

  • ProcMon;
  • Process Explorer.

🧪 Правильный порядок использования

Для диагностики игры:

 
1. CFF Explorer

↓

2. Проверить архитектуру

↓

3. Посмотреть Imports

↓

4. Найти нужные DLL

↓

5. Dependencies

↓

6. ProcMon

↓

7. Process Explorer

Import Directory

Один из наиболее полезных разделов CFF Explorer — Import Directory.

Он позволяет увидеть импортируемые модули и связанную с ними информацию.

Схема:

 
GAME.EXE
   ↓
Import Directory
   ↓
Imported DLL
   ↓
Imported Functions
 

Например:

 
d3d9.dll

Imported:
Direct3D-related functions
 

Это помогает определить, какие внешние API и библиотеки ожидает программа.


Import Table не равна полному списку DLL

Здесь важно не делать слишком сильный вывод.

Если CFF Explorer показывает:

 
GAME.EXE
→ imports ddraw.dll
 

это означает, что DLL присутствует в статической структуре импорта.

Но приложение может дополнительно загружать библиотеки динамически через механизмы Windows.

Поэтому:

статические импорты ≠ полный список всех DLL, которые будут загружены при работе.

Для динамического поведения нужны:

Process Monitor и Process Explorer.


Export Directory

CFF Explorer также позволяет изучать экспортируемые функции DLL.

Схема:

 
example.dll
     ↓
Export Directory
     ↓
Exported Functions
 

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

Однако само наличие функции в Export Table ещё не гарантирует корректную работу игры с этой DLL.


PE Headers

CFF Explorer позволяет исследовать заголовки PE-файла.

Среди интересных параметров:

  • архитектура;
  • тип файла;
  • точка входа;
  • параметры образа;
  • характеристики загрузки;
  • сведения о секциях.

Для диагностики старых игр особенно важен вопрос архитектуры:

 
GAME.EXE
   ↓
Machine
   ├── x86
   └── x64
 

Большинство старых Windows-игр — 32-битные x86-приложения.


PE Sections

Внутри PE-файла находятся секции.

Часто встречаются:

 
.text
.rdata
.data
.rsrc
 

Упрощённо:

СекцияНазначение
.textисполняемый код
.rdataданные только для чтения
.dataизменяемые данные
.rsrcресурсы

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


Resources

CFF Explorer позволяет посмотреть встроенные ресурсы PE-файла.

Например:

 
Resources
│
├── ICON
├── VERSION
├── MANIFEST
└── STRINGS
 

Это может помочь определить:

  • версию приложения;
  • наличие manifest;
  • встроенные значки;
  • строковые ресурсы;
  • другие данные, встроенные в EXE/DLL.

CFF Explorer и архитектура

Для диагностики DLL это особенно важно.

Например:

 
GAME.EXE
32-bit / x86
 

и библиотека:

 
example.dll
64-bit / x64
 

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

Поэтому при анализе старых игр полезно проверять архитектуру не только EXE, но и подозрительной DLL.


CFF Explorer vs PE Explorer

Эти инструменты относятся к одной категории — статическому анализу PE-файлов.

ИнструментОсновная задача
CFF Explorerподробное исследование PE-структур
PE Explorerпросмотр и анализ PE-файлов
Dependenciesдерево зависимостей и проблемы DLL
Process Monitorреальные обращения процесса к файлам
Process Explorerзагруженные модули работающего процесса

CFF Explorer vs Dependencies

Например:

CFF Explorer:

 
GAME.EXE
↓
Import Directory
↓
ddraw.dll
d3d8.dll
mss32.dll
 

Dependencies:

 
GAME.EXE
↓
Dependency Tree
↓
ddraw.dll
↓
API dependencies
 

CFF Explorer полезен для более низкоуровневого изучения PE-структуры, а Dependencies удобнее для быстрого анализа дерева зависимостей.


CFF Explorer + Process Monitor

Эта связка особенно полезна при проблемах запуска.

CFF Explorer

Показывает:

что записано в PE-файле.

Process Monitor

Показывает:

что процесс реально пытается найти или открыть.

Например:

 
CFF Explorer
GAME.EXE
→ imports mss32.dll
 

затем:

 
ProcMon
GAME.EXE
→ C:\Game\mss32.dll
→ NAME NOT FOUND
 

Теперь статическая и динамическая информация дополняют друг друга.


CFF Explorer + Process Explorer

Если игра запускается, можно добавить третий этап:

 
CFF Explorer
↓
Статические импорты

Process Explorer
↓
Реально загруженные модули
 

Например:

 
CFF Explorer:
GAME.EXE → ddraw.dll

Process Explorer:
GAME.EXE → ddraw.dll → Loaded
 

Это позволяет проверить соответствие между структурой EXE и фактической загрузкой.


Пример комплексной диагностики старой игры

Представим игру эпохи Windows XP.

Шаг 1 — CFF Explorer

Обнаруживаем:

 
ddraw.dll
d3d8.dll
mss32.dll
binkw32.dll
 

Шаг 2 — Dependencies

Проверяем дерево зависимостей.

Шаг 3 — ProcMon

Запускаем игру и ищем:

 
NAME NOT FOUND
 

Шаг 4 — Process Explorer

Если процесс остаётся запущенным:

 
Loaded Modules
 

Получаем полную картину:

 
CFF Explorer
→ что EXE содержит

Dependencies
→ какие зависимости связаны

ProcMon
→ что игра ищет

Process Explorer
→ что уже загружено
 

Когда CFF Explorer особенно полезен

Инструмент пригодится, если нужно:

  • изучить структуру EXE;
  • проверить PE Headers;
  • определить x86/x64;
  • посмотреть секции;
  • изучить Import Directory;
  • посмотреть импортируемые DLL;
  • изучить Export Directory;
  • проверить ресурсы;
  • исследовать старый игровой движок;
  • сравнить две версии EXE;
  • подготовить данные для дальнейшей диагностики.

Когда CFF Explorer не подходит

CFF Explorer не заменяет инструменты динамического анализа.

Если вопрос звучит:

«Какую DLL игра пытается найти прямо сейчас?»

лучше использовать Process Monitor.

Если вопрос:

«Какие DLL уже загружены в работающий процесс?»

лучше использовать Process Explorer.

Если вопрос:

«Какие зависимости у EXE?»

удобнее использовать Dependencies.


Важное предупреждение

Не следует воспринимать CFF Explorer как средство автоматического исправления игры.

Анализ PE-файла помогает понять структуру и зависимости, но не означает, что найденную DLL нужно скачивать отдельно и заменять вручную.

Правильная цепочка:

 
Найти зависимость
      ↓
Определить её происхождение
      ↓
Проверить архитектуру
      ↓
Проверить реальную загрузку
      ↓
Определить необходимый Runtime / компонент
      ↓
Использовать корректный способ восстановления

📊 CFF Explorer — краткая таблица

НайденоЗначение
ddraw.dllDirectDraw
dsound.dllDirectSound
d3d8.dllDirect3D 8
d3d9.dllDirect3D 9
dxgi.dllDirectX 10/11/12
opengl32.dllOpenGL
mss32.dllMiles Sound
binkw32.dllBink
MSVCP*.dllVisual C++
dotnet.NET

Итог

CFF Explorer — инструмент глубокого анализа EXE и DLL.

Он помогает:

✅ определить архитектуру игры;
✅ найти импортируемые библиотеки;
✅ понять используемые API;
✅ анализировать старые игровые движки;
✅ проверять сторонние DLL.

1. Главное

GAME.EXE → CFF Explorer → PE Headers → Sections → Imports → DLL

2. Сравнительное

 
CFF Explorer
→ структура PE-файла

Dependencies
→ дерево зависимостей

ProcMon
→ реальные попытки доступа

Process Explorer
→ реально загруженные DLL

Главная схема:

 
Game.exe

↓

CFF Explorer

↓

PE Header + Imports

↓

DLL/API

↓

Причина проблемы

↓

Исправление