igrik, чтобы узнать откуда они копируются, нужно в дебагере (подойдет OllyDbg) поставить точку останова (breakpoint) на эту область памяти и посмотреть какой код когда и что туда пишет. как увидишь, что записываются дефолтные значения - смотри откуда они записываются (если они прямо в коде прописаны, то посмотри на байтовое представление (в OllyDbg слева от кода) и там будет это число). как найдешь место - можно уже искать так, как я говорил.
Спасибо. Хоть вообще в данной области не разбираюсь, но попоробую.
***********
Пробовал, ничего не получилось хоть тресни

Ламо я в этом деле.
Пытался по адресу
0022A0CC - размер карты чегось надыбать. Чёрт с ним в общем.
это же точка останова для кода. чтобы поставить точку останова для памяти нужно выделить интересующую область памяти (в просмотрщике памяти внизу слева) и нажать пкм. в открывшемся меню и будет точка останова (кажется, в каком-то подменю).
Как я понимаю "Точка остановки" - это "Breakpoint". С тем как поставить брекпоинт я разобрался. Да, он есть в подменю. Я его поставил на интересующий меня адрес памяти - на втором скрине он выделен красным. Но я не понимаю, что делать дальше.
Впрочем не буду парить себе и Вам мозг. Для меня эта "Оля" (читал о ней) темный лес как и все эти:"add", "bite", "PTR", "DS:", "[EAX]". Так что закрою эту тему.
(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».
(24.05.2012 00:01)igrik Wrote: [ -> ]Я его поставил на интересующий меня адрес памяти
нет! ты поставил его на интересующую тебя команду ассемблера! вот только по адресу находится не код.
Ну так что, можно как-нибудь задать стартовые настройки карты (например сложность высокая, 2 команды компьютера, 2 компьютера), чтоб постоянно не изменять на нужные?
В какой именно момент? При старте карты (когда она уже загружается) или в экране выбора карты/случайной карты?
На экране выбора карты, настройки карты и команд
Я могу дать адрес только для настройки сложности (для создания бин патча или редактировании винхексом экзешника). 0x6834A4
Всё остальное не сделать ни скриптом, ни бинарником, ни хексом. Только плагином (dll). Увы.