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

5.2 Dependencies — современная замена Dependency Walker

Dependencies — анализ дерева DLL-зависимостей Windows

🧩 Что такое Dependencies

Dependencies — это современный инструмент для анализа зависимостей Windows-программ.

Он является развитием идеи Dependency Walker, но создан с учётом современных версий Windows.

Главная задача:

показать, какие DLL нужны игре и почему Windows не может их загрузить.


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

 
Game.exe

↓

Dependencies

↓

Импортируемые DLL

↓

Отсутствующие библиотеки

↓

Причина ошибки

↓

Установка компонентов
 

🆚 Почему Dependency Walker устарел

Dependency Walker создавался в эпоху:

 
Windows 95

Windows XP
 

Современные Windows используют:

  • API Set;
  • Universal CRT;
  • новые механизмы загрузки DLL;
  • SxS (Side-by-Side) компоненты;
  • современные архитектуры.

Из-за этого Dependency Walker может показывать:

  • ложные ошибки;
  • отсутствующие системные API, которые на самом деле работают;
  • неправильные зависимости.

Пример:

Dependency Walker:

 
API-MS-WIN-CORE-....
Missing
 

Хотя программа:

 
нормально запускается
 

Dependencies лучше понимает современную структуру Windows.


📦 Установка Dependencies

Dependencies обычно распространяется как portable-программа.

Обычно:

 
Dependencies.exe
 

Не требует:

  • установки;
  • регистрации;
  • копирования DLL.

Запускается напрямую.


🖥 Как открыть игру через Dependencies

Шаг 1

Запустить:

 
Dependencies.exe
 

Шаг 2

Открыть:

 
File

↓

Open

↓

Game.exe
 

После анализа программа покажет:

  • дерево DLL;
  • архитектуру;
  • ошибки загрузки.

📋 Главное окно Dependencies

🟦 Дерево зависимостей

Показывает:

 
Game.exe

├── kernel32.dll
├── user32.dll
├── d3d9.dll
├── xinput1_3.dll
├── msvcp120.dll
└── ...
 

Можно определить:

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


🟩 Импорт DLL

Dependencies показывает:

какие библиотеки программа пытается загрузить.

Примеры:


DirectX

 
d3d9.dll
 

означает:

игра использует Direct3D 9.


DirectDraw

 
ddraw.dll
 

означает:

старый графический API.


Звук

 
dsound.dll
 

означает:

DirectSound.


Контроллер

 
xinput1_3.dll
 

означает:

Xbox Controller API.


🔴 Как Dependencies показывает ошибки

Основные варианты:


❌ Missing DLL

Пример:

 
MSVCP120.dll
 

Что означает:

игре нужен:

 
Visual C++ 2013
 


❌ Wrong architecture

Очень важная ошибка.

Пример:

Игра:

 
x86
 

DLL:

 
x64
 

Результат:

 
0xc000007b
 

Причина:

32-битная и 64-битная библиотека смешаны.


❌ Missing export

Ситуация:

DLL есть, но внутри нет нужной функции.


Например:

 
Entry Point Not Found
 

Причина:

  • неправильная версия DLL;
  • старая библиотека;
  • несовместимая замена.

🏗 Определение разрядности игры

Dependencies удобно показывает:

  • x86;
  • x64;
  • ARM.

Пример:

 
Game.exe

Machine:
x86
 

Значит:

нужны:

 
32-bit DLL
 

Даже если Windows:

 
Windows 11 64-bit
 


🔍 Как определить отсутствующий Runtime

Dependencies помогает определить:


Visual C++

Например:

 
MSVCR100.dll
 

Нужно:

 
Visual C++ 2010
 


Visual C++ 2015–2022

Например:

 
VCRUNTIME140.dll
 

Нужно:

 
VC++ Redistributable 2015-2022
 


DirectX

Например:

 
d3dx9_43.dll
 

Нужно:

 
DirectX End-User Runtime June 2010
 


🎮 Диагностика старых игр через Dependencies

Пример 1 — игра 1998 года

Открываем:

 
Game.exe
 

Видим:

 
ddraw.dll

dsound.dll
 

Вывод:

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

  • DirectDraw;
  • DirectSound.

Следующие варианты:

  • DDrawCompat;
  • cnc-ddraw;
  • DxWrapper.


🎮 Пример 2 — игра 2005 года

Dependencies:

 
d3d9.dll

xinput1_3.dll

d3dx9_31.dll
 

Вывод:

нужны:

  • DirectX 9;
  • XInput;
  • старые D3DX библиотеки.


🎮 Пример 3 — ошибка 0xc000007b

Dependencies показывает:

 
Game.exe x86

↓

wrong:
xxx.dll x64
 

Причина:

неправильная библиотека.


Решение:

установить правильную версию.


🔄 Проверка DLL рядом с игрой

Очень полезная возможность.

Dependencies помогает увидеть:

что реально используется:

 
Game folder

├── ddraw.dll

├── dsound.dll

└── Game.exe
 

Например:

игрок установил:

 
dgVoodoo ddraw.dll
 

Dependencies покажет:

какая DLL загружается.


⚠ Что Dependencies делает лучше Dependency Walker

ВозможностьDependency WalkerDependencies
Старые EXE✅✅
Windows 10/11✅
API Set❌✅
x86/x64 анализ✅✅
Современные DLL✅
Portable✅✅
Точностьсредняявыше

⚠ Что Dependencies НЕ показывает

Важно понимать:

Dependencies не всегда увидит DLL, которые игра загружает динамически.

Например:

игра может делать:

 
LoadLibrary("ddraw.dll")
 

во время работы.


Тогда лучше использовать:

  • Process Monitor;
  • Process Explorer.

🔬 Правильный порядок диагностики

Оптимальный алгоритм:

 
1. Открыть EXE в Dependencies

↓

2. Найти подозрительные DLL

↓

3. Проверить Runtime/API

↓

4. Запустить игру через ProcMon

↓

5. Посмотреть реальные ошибки загрузки
 

📊 Быстрая таблица Dependencies

НайденоЧто означает
ddraw.dllDirectDraw
dsound.dllDirectSound
d3d8.dllDirect3D 8
d3d9.dllDirect3D 9
dxgi.dllDXGI / DirectX 10+
xinput1_3.dllконтроллер
x3daudio.dll3D звук
mss32.dllMiles Sound System
binkw32.dllвидео Bink
MSVCPVisual C++
VCRUNTIMEVC Runtime
dotnet.NET

Итог

Dependencies — основной современный инструмент для первичной проверки игры.

Использовать:

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

Не делать:

❌ не скачивать случайные DLL;
❌ не заменять системные файлы Windows;
❌ не исправлять все предупреждения подряд.

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

 
Game.exe

↓

Dependencies

↓

Отсутствующая DLL / Runtime / API

↓

Правильный компонент

↓

Запуск игры