Перейти к содержанию

Что За Адрес Такой? Вернее Модульная Адресация В Се


Рекомендуемые сообщения

CE в отладчике при включенной модульной адресации отображает не как обычно "SimSalabim.exe+offset" а вот так "SimSalabim.Game::SuperMagic+15"

Можете объяснить что это значит? И как этим воспользоваться при написании трейнера?

Обычно:

DWORD base = get_base(address);

DWORD function = base + get_offset(address);

А сейчас как быть то?

Изменено пользователем exorcise
Ссылка на комментарий
Поделиться на другие сайты

Поковыряй настройки в окне дизассемблера. Меню View -> Show Symbols. Если нужная модульная адресация, то там же рядом. 

Да, если отключить "метки" то показывает как обычно.

Но дело в том что всегда в играх встречал только такой вид адресов: "SimSalabim.exe+offset" и тут мне всё понятно. SimSalabim - точка входа в игру, offset - смещение до нашего адреса.

Но вот впервые я вижу это: "SimSalabim.Game::SuperMagic+15" и мне не понятно что тут и как? поэтому прошу чтобы мне объяснили что это и как использовать при написании трейнера? чтобы сразу в трейнере переходить к SimSalabim.Game::SuperMagic а от него уже смещаться.

Изменено пользователем exorcise
Ссылка на комментарий
Поделиться на другие сайты

В трейнере нужно использовать простую модульную адресацию. А это - это смещение от найденной ближайшей функции, имя найдено в ходе анализа файла дизассемблером се. То есть, в своём трейнере ты это применить не сможешь.

Ссылка на комментарий
Поделиться на другие сайты

В трейнере нужно использовать простую модульную адресацию. А это - это смещение от найденной ближайшей функции, имя найдено в ходе анализа файла дизассемблером се. То есть, в своём трейнере ты это применить не сможешь.

 

тоесть такой вид "SimSalabim.Game::SuperMagic+15" в трейнере совсем никак заюзать нельзя? так вроде красивше =)

 

 

А это - это смещение от найденной ближайшей функции, имя найдено в ходе анализа файла дизассемблером се

Тогда почему раньше, в предыдущей версии игры дизассемблер СЕ ничего не нашёл, в смысле названия функций, а сейчас в новой он вдруг уже нашёл?

Ссылка на комментарий
Поделиться на другие сайты

Тут 4 варианта:

 

1. Адрес через поиск байт по сигнатуре

2. Получение адреса из getAddress(string, local OPTIONAL). Это если на CE трейнер ваяешь

3. Отключить символы/метки как я писал, включить модульную адресацию. Тогда будет  game.exe+offset

4. Отключить символы/метки как я писал, отключить модульную адресацию. Тогда будет тупо адрес

 

Если пишешь на С++ смотри хелп по получению имени функции и адресов. Там вроде по отладочной информации из файла рядом.

 

Да, если не ошибаюсь на АА будет

SimSalabim.Game::SuperMagic+15:

// тут твой код

 

Да и еще можно юзать новые директивы

 

{$LUA}/{$ASM} :  Code between {$LUA} and {$ASM} (separate lines) will execute that lua script. If it returns a string, the result will be handled as an auto assembler commands.

Note: The lua code is executed before anything else of the auto assembler is parsed.

 

Переменные Lua в АА скриптах с префиксом доллара $ (если я перепутал, давно не юзал)

Изменено пользователем MasterGH
Ссылка на комментарий
Поделиться на другие сайты

Тут 4 варианта:

 

1. Адрес через поиск байт по сигнатуре

2. Получение адреса из getAddress(string, local OPTIONAL). Это если на CE трейнер ваяешь

3. Отключить символы/метки как я писал, включить модульную адресацию. Тогда будет  game.exe+offset

4. Отключить символы/метки как я писал, отключить модульную адресацию. Тогда будет тупо адрес

Я уже нашёл адрес. Мне в трейнере теперь надо запилить этот адрес. Хотелось бы в виде той метки.

 

 

Если пишешь на С++ смотри хелп по получению имени функции и адресов. Там вроде по отладочной информации из файла рядом.

А можно ссылку где можно посмотреть?

 

Пишу на C++. 

Изменено пользователем exorcise
Ссылка на комментарий
Поделиться на другие сайты

Ссылок у меня нет. Пиши в гугль и в соответствующие специализированные форумы по программированию и отладке. 

 

Отладочная информация в виде наличия названий функций это рудимент от дебажной версии. Иными словами это мусор, который от версии к версии игры может меняться не понятно как или вообще может быть удален в локализованных играх. Это нужно для ведения логов, поиска багов и прочей рутины как обратная связь в случаях критических ошибок. Это информация может быть полезна для исследования кода, но для читов, для поиска адресов инъекций это сомнительно на мой взгляд. Требуются проверки на разных играх, версиях, ломалок, официалок, локализациях и прочего. 

 

Предположительно поиск по сигнам без статик адресов и смещений в сигнах дает правильный результат в большинстве игр и патчах к ним. В редких случаях код значительно меняется, тогда сигна не находиться. Если сигну построить по первым байтам инструкций размером больше трех байт, то можно строить инъекции АА автоматически, не зная какие регистры на адресе, а зная шаблон инструкции. Например, шаблоны: левая и правая части дизассемблированной интсрукции (mov r32, r32, mov [r32],r, mov r, [r32]), только одна часть fld [r32], или несколько частей (imul r32,r32,h)...

Ссылка на комментарий
Поделиться на другие сайты

Ссылок у меня нет. Пиши в гугль и в соответствующие специализированные форумы по программированию и отладке. 

 

А что в гугле то писать?  :mellow:

 

 

Отладочная информация в виде наличия названий функций это рудимент от дебажной версии. 

А почему тогда у меня в релизной версии трейнера тоже есть названия функций, если смотреть через дизасм? Вроде же не должно быть. Как их спрятать? Пишу в VC++ clr

Изменено пользователем exorcise
Ссылка на комментарий
Поделиться на другие сайты

>> А что в гугле то писать? 

 

Напиши "view pdb file". Специализированный форум.

 

Названия функций в pdb файлах. Если они есть (указаны были в настройках компиляции), то функции можно прочитать.

Ссылка на комментарий
Поделиться на другие сайты

Названия функций в pdb файлах. Если они есть (указаны были в настройках компиляции), то функции можно прочитать.

Я уже опытным методом это понял =))) 

Спасибо. Я думал сначала просто что в коде это, можно заюзать. Но получается что не в коде. Тогда получается что если к трейнеру добавить возможность читать этот файл, то и поставлять его нужно вместе с трейнером, так? а иначе откуда он читать то будет. Верно?

 

Ссылка на комментарий
Поделиться на другие сайты

Что за фигня у вас с форумом? то недоступен, то не существует, то вот ответы пропали.

Я писал что уже разобрался и тему можно закрыть.

Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.