(22.05.2012 01:11)Sav Wrote: Эти все адреса динамические и могут быть разными на разных машинах. Нужно найти, откуда в них копируются значения. Подозреваю, что эти адреса вообще из структуры диалога, тогда поиск по exe не поможет. Но, возможно, и не так.
Это, собственно говоря, стэк.
Начало таблицы с настройками генератора передается в функции которые с ними работают. Например, в программе создания зеркальных карт я получал настройки следующим образом:
Вклинивался по адресу 0x5863ba - в начало функции считывания настроек генератора после нажатия кнопки "начать". Собственно, что там делает эта функция не важно, но адрес начала таблицы с настройками находится в ECX. Дальше адреса настроек, задаются смещением от начала таблицы:
ptrRacePlayer1 = (unsigned int*) (adrTabOptionGen + 0x1088);
ptrRacePlayer2 = (unsigned int*) (adrTabOptionGen + 0x1104);
ptrHeroPlayer1 = (unsigned int*) (adrTabOptionGen + 0x1084);
ptrHeroPlayer2 = (unsigned int*) (adrTabOptionGen + 0x1100);
и т.д.
igrik Wrote:Вопрос: как теперь это можно использовать чтобы автоматически стояли интересующие настройки при запуске игры?
Если нужно менять настройки до запуска генератора, вероятно нужно вклиниваться в код сразу после нажатия кнопки "случайная карта". Найти, где задается адрес начала таблицы, и менять настройки.
А по Оле есть хорошее руководство: «Введение в крэкинг с помощью OllyDbg».