У вас есть много вопросов в одном. Я постараюсь ответить на некоторые.
OllyDBG - бесплатный дизассемблер. Профессионалы могут платить за IDA-Pro, но это дорогой продукт.
Что касается поиска в памяти, OllyDBG предоставляет эту функцию. В любом окне дампа памяти (например, в панели дампа памяти окна ЦП) вы можете: щелкнуть правой кнопкой мыши, выбрать «Поиск» в контекстном меню, а затем выбрать целочисленную или двоичную строку. В отличие от Cheat Engine, вы не можете искать приблизительное значение с OllyDBG. Вы могли бы искать плагин, который делает это, но я не знаю об этом.
Под "WINAPI" я думаю, что вы имеете в виду Win32 API. Вероятно, в игре, которую вы ищете, есть компонент с именем WINAPI. Чтобы установить точки останова для различных API-интерфейсов Windows, как это любят делать игровые клиент-экстендеры, вам нужно знать, где, собственно говоря, находится API-интерфейс Windows. Функции не все в одном «месте». Существуют различные модули DLL, которые «экспортируют» функции, составляющие Win32 API. Например, MessageBox()
экспортируется из USER32.DLL
, а ExitProcess()
экспортируется из KERNEL32.DLL
.
Чтобы установить точки останова на вызовах Windows API в OllyDBG, вы можете: Просмотреть меню, Исполняемые модули, чтобы увидеть все модули в памяти. Щелкните правой кнопкой мыши модуль USER32.DLL и выберите «Просмотр имен» в контекстном меню. Там вы увидите все функции, экспортированные из USER32.
Если бы игровой клиент был написан на C, был бы список API-функций, используемых в так называемой «таблице импорта». Это можно найти в загруженном в память модуле .EXE или просмотреть в EXE-файле на диске с помощью link /dump /imports
.
.
В случае языка сценариев, как правило, нет таблицы импорта или, если есть таблица импорта, она импортирует широкий спектр функций, доступных через механизм сценариев.
К сожалению, OllyDBG не поддерживает условные точки останова.
Относительно того, с чего начать изучение дизассемблирования, конечно, лучшая инструкция - это использовать немало ассемблера в вашем собственном коде. Даже при написании приложения для Windows, которое отображает только окно сообщений с «Hello World», вам потребуется изучить таблицы импорта, чтобы получить доступ к API MessageBox (). На самом деле, написание такого приложения на Си также может быть информативным для вас. Тем не менее, я рекомендую вам скомпилировать код, используя только инструменты командной строки, а не среду графического интерфейса. GUI будет скрывать от вас слишком много информации и мешать обучению. Чтобы получить доступ к API USER32.DLL, вам необходимо сообщить компоновщику, что вы хотите использовать USER32.LIB «библиотеку импорта», чтобы ваш код на C мог прозрачно вызывать MessageBox()
.
.