You are not logged in.
В общем раньше экзешники никогда не копал и не доганяю, как получить нужный адрес (допустим адрес активирования чита 6 звёзд розыска) объясните кто-нибудь пожалуйста
Offline
Объяснить непросто, хотя ничего особосложного там нет. Здесь лучший учитель - собственный опыт.
В exe есть 2 основных типа адресов - data и text (есть и другие типы). Если проводить аналогию со скриптами, то адреса типа data можно сравнить с глобальными переменными - в них хранятся различные значения (например, 0xB7CB84 - [dword] Глобальный таймер в ms, 0x8D2530 - [float] Плотность движения пешеходов). В ходе игры отдельные процедуры exe читают эти значения или записывают в эти адреса новые значения. Эти адреса (не все) можно читать/перезаписывать и в скрипте с помощью опкодов 0A8C/0A8D. Назначение некоторых часто употребляемых data-адресов, а также смещений в структурах можно найти тут: http://gtamodding.ru/wiki/Адреса_Памяти_(SA)
Что касается адресов типа text, то в них записаны отдельные команды, из которых в свою очередь состоят процедуры exe. Сами по себе значения этих адресов во время игры не меняются, но их, как и адреса data, можно (не все) менять скриптом - в этом случае в опкодах 0A8C/0A8D следует ставить значение параметра virtual protect, равное 1. Понятно, что в случае изменения значения text-адреса, процедура, которой он принадлежит, станет работать уже по новому алгоритму.
Для поиска нужных адресов и процедур незаменима idb-база от listener. Открыть её можно с помощью IDA 5. В окне программы есть несколько вкладок, которые представляют код exe в различном виде. Основные из них: "IDA View-A" - основной вид. Если текущий участок exe состоит из адресов типа data, то они отображаются в виде списка, а если текущий участок является какой-то процедурой (text-адреса), то она отобразится в виде блок-схемы. "Hex View-A" - побайтовое отображение кода.
Многие data-адреса и процедуры в базе проименованы, при активной вкладке "IDA View-A" можно осуществлять их поиск по названию (Search - Text).
Есть ещё полезная вкладка Functions - список всех процедур exe. Если эта вкладка активна, то можно осуществить поиск процедуры по названию (Search). Например, осуществив поиск по слову train, можно найти процедуры, имеющие отношение к поездам. При щелчке по названию процедуры, активируется вкладка "IDA View-A" и появится блок-схема этой процедуры, по которой можно исследовать, как она работает (какие процедуры вызывает, со значениями каких адресов оперирует и т.д.).
Last edited by Den_spb (17-09-2010 23:46)
Offline
Den_spb, спасибо большое, буду пробывать
Offline
Ну вот допустим нашёл адрес 0x438E40 (чит добавляет броню,деньги и здоровье), но как только его в игре не использовал, ничего не происходит, потом немного покапавшись по сайтам нашёл 0x969133 - вот этот работает, а который я нашёл нет, почему?
Offline
0x438E40 - адрес начала процедуры _cheatHeathArmor250k, а не data-адрес. Поэтому не надо было пытаться записать по этому адресу значение, а следовало вызвать эту процедуру. Для вызова процедур используются опкоды 0AA5 - 0AA8 (как определить, когда какой опкод надо использовать, смотри тут: http://sannybuilder.com/forums/viewtopic.php?id=941 ). В данном случае процедура не является методом, параметров она не возвращает, поэтому используем 0AA5:
0AA5: call 0x438E40 num_params 0 pop 0
Второй способ активации чита - data-адрес 0x969133. В него просто записывается значение с помощью 0A8C.
Кстати, в IDA есть способ быстрого перехода к нужному адресу. При активной вкладке "IDA View-A" жмём G и вводим нужный адрес.
Last edited by Den_spb (17-09-2010 23:43)
Offline
Den_spb, спасибо братишка, очень выручаешь
p.s.
дай пожалуйста ссыль на свой сайт
Offline
Самый простой вариант, это вызвать функцию игры, но поскольку надо знать ее память, точнее адрес где она расположена, и знать надо как передать параметры, а так сложности особой нет.
Offline