exorcise Опубликовано 17 октября, 2014 Поделиться Опубликовано 17 октября, 2014 (изменено) CE в отладчике при включенной модульной адресации отображает не как обычно "SimSalabim.exe+offset" а вот так "SimSalabim.Game::SuperMagic+15"Можете объяснить что это значит? И как этим воспользоваться при написании трейнера?Обычно:DWORD base = get_base(address);DWORD function = base + get_offset(address);А сейчас как быть то? Изменено 17 октября, 2014 пользователем exorcise Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 18 октября, 2014 Поделиться Опубликовано 18 октября, 2014 Поковыряй настройки в окне дизассемблера. Меню View -> Show Symbols. Если нужная модульная адресация, то там же рядом. Ссылка на комментарий Поделиться на другие сайты Поделиться
exorcise Опубликовано 18 октября, 2014 Автор Поделиться Опубликовано 18 октября, 2014 (изменено) Поковыряй настройки в окне дизассемблера. Меню View -> Show Symbols. Если нужная модульная адресация, то там же рядом. Да, если отключить "метки" то показывает как обычно.Но дело в том что всегда в играх встречал только такой вид адресов: "SimSalabim.exe+offset" и тут мне всё понятно. SimSalabim - точка входа в игру, offset - смещение до нашего адреса.Но вот впервые я вижу это: "SimSalabim.Game::SuperMagic+15" и мне не понятно что тут и как? поэтому прошу чтобы мне объяснили что это и как использовать при написании трейнера? чтобы сразу в трейнере переходить к SimSalabim.Game::SuperMagic а от него уже смещаться. Изменено 18 октября, 2014 пользователем exorcise Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 18 октября, 2014 Поделиться Опубликовано 18 октября, 2014 В трейнере нужно использовать простую модульную адресацию. А это - это смещение от найденной ближайшей функции, имя найдено в ходе анализа файла дизассемблером се. То есть, в своём трейнере ты это применить не сможешь. Ссылка на комментарий Поделиться на другие сайты Поделиться
exorcise Опубликовано 18 октября, 2014 Автор Поделиться Опубликовано 18 октября, 2014 В трейнере нужно использовать простую модульную адресацию. А это - это смещение от найденной ближайшей функции, имя найдено в ходе анализа файла дизассемблером се. То есть, в своём трейнере ты это применить не сможешь. тоесть такой вид "SimSalabim.Game::SuperMagic+15" в трейнере совсем никак заюзать нельзя? так вроде красивше =) А это - это смещение от найденной ближайшей функции, имя найдено в ходе анализа файла дизассемблером сеТогда почему раньше, в предыдущей версии игры дизассемблер СЕ ничего не нашёл, в смысле названия функций, а сейчас в новой он вдруг уже нашёл? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 18 октября, 2014 Поделиться Опубликовано 18 октября, 2014 (изменено) Тут 4 варианта: 1. Адрес через поиск байт по сигнатуре2. Получение адреса из getAddress(string, local OPTIONAL). Это если на CE трейнер ваяешь3. Отключить символы/метки как я писал, включить модульную адресацию. Тогда будет game.exe+offset4. Отключить символы/метки как я писал, отключить модульную адресацию. Тогда будет тупо адрес Если пишешь на С++ смотри хелп по получению имени функции и адресов. Там вроде по отладочной информации из файла рядом. Да, если не ошибаюсь на АА будет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 в АА скриптах с префиксом доллара $ (если я перепутал, давно не юзал) Изменено 18 октября, 2014 пользователем MasterGH Ссылка на комментарий Поделиться на другие сайты Поделиться
exorcise Опубликовано 18 октября, 2014 Автор Поделиться Опубликовано 18 октября, 2014 (изменено) Тут 4 варианта: 1. Адрес через поиск байт по сигнатуре2. Получение адреса из getAddress(string, local OPTIONAL). Это если на CE трейнер ваяешь3. Отключить символы/метки как я писал, включить модульную адресацию. Тогда будет game.exe+offset4. Отключить символы/метки как я писал, отключить модульную адресацию. Тогда будет тупо адресЯ уже нашёл адрес. Мне в трейнере теперь надо запилить этот адрес. Хотелось бы в виде той метки. Если пишешь на С++ смотри хелп по получению имени функции и адресов. Там вроде по отладочной информации из файла рядом.А можно ссылку где можно посмотреть? Пишу на C++. Изменено 18 октября, 2014 пользователем exorcise Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 18 октября, 2014 Поделиться Опубликовано 18 октября, 2014 Ссылок у меня нет. Пиши в гугль и в соответствующие специализированные форумы по программированию и отладке. Отладочная информация в виде наличия названий функций это рудимент от дебажной версии. Иными словами это мусор, который от версии к версии игры может меняться не понятно как или вообще может быть удален в локализованных играх. Это нужно для ведения логов, поиска багов и прочей рутины как обратная связь в случаях критических ошибок. Это информация может быть полезна для исследования кода, но для читов, для поиска адресов инъекций это сомнительно на мой взгляд. Требуются проверки на разных играх, версиях, ломалок, официалок, локализациях и прочего. Предположительно поиск по сигнам без статик адресов и смещений в сигнах дает правильный результат в большинстве игр и патчах к ним. В редких случаях код значительно меняется, тогда сигна не находиться. Если сигну построить по первым байтам инструкций размером больше трех байт, то можно строить инъекции АА автоматически, не зная какие регистры на адресе, а зная шаблон инструкции. Например, шаблоны: левая и правая части дизассемблированной интсрукции (mov r32, r32, mov [r32],r, mov r, [r32]), только одна часть fld [r32], или несколько частей (imul r32,r32,h)... Ссылка на комментарий Поделиться на другие сайты Поделиться
exorcise Опубликовано 18 октября, 2014 Автор Поделиться Опубликовано 18 октября, 2014 (изменено) Ссылок у меня нет. Пиши в гугль и в соответствующие специализированные форумы по программированию и отладке. А что в гугле то писать? Отладочная информация в виде наличия названий функций это рудимент от дебажной версии. А почему тогда у меня в релизной версии трейнера тоже есть названия функций, если смотреть через дизасм? Вроде же не должно быть. Как их спрятать? Пишу в VC++ clr Изменено 18 октября, 2014 пользователем exorcise Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 18 октября, 2014 Поделиться Опубликовано 18 октября, 2014 >> А что в гугле то писать? Напиши "view pdb file". Специализированный форум. Названия функций в pdb файлах. Если они есть (указаны были в настройках компиляции), то функции можно прочитать. Ссылка на комментарий Поделиться на другие сайты Поделиться
exorcise Опубликовано 18 октября, 2014 Автор Поделиться Опубликовано 18 октября, 2014 Названия функций в pdb файлах. Если они есть (указаны были в настройках компиляции), то функции можно прочитать.Я уже опытным методом это понял =))) Спасибо. Я думал сначала просто что в коде это, можно заюзать. Но получается что не в коде. Тогда получается что если к трейнеру добавить возможность читать этот файл, то и поставлять его нужно вместе с трейнером, так? а иначе откуда он читать то будет. Верно? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 18 октября, 2014 Поделиться Опубликовано 18 октября, 2014 Верно. Но иногда часть отладочной информации может идти внутри даже релизного файла, и СЕ ее тоже, естественно, читает. Ссылка на комментарий Поделиться на другие сайты Поделиться
exorcise Опубликовано 19 октября, 2014 Автор Поделиться Опубликовано 19 октября, 2014 Что за фигня у вас с форумом? то недоступен, то не существует, то вот ответы пропали.Я писал что уже разобрался и тему можно закрыть. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 19 октября, 2014 Поделиться Опубликовано 19 октября, 2014 Профилактические работы были. Теперь все нормально. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения