Защита статических базовых значений в игре.
-
Это онлайн игра. Без проблем нахожу нужный адрес, но они динамические, соответственно начинаю искать смещения до статического адреса. Но все статические адреса имеют странный вид "xxxxx.exe + 0Xсмещение" по началу привязывался к ним. На некоторое время это помогает, но потом либо это статическое значение исчезает, либо по данному адресу просто лежит 0X0. Я так понимаю это некая защита, но что за защита, как она называется! где есть информация об ее обходе. Я-бы и погуглил сам но даже не могу понять что это. Помогите пожалуйста, где прочитать про ее обход или хотя-бы что это 44444.png
-
Я узнал что это называется ASLR но как это обходить.
-
Скорее всего, то, что ты принял за статический адрес, на самом деле таковым не является. Это всё, что я могу тебе сказать, так как со взломом онлайн игр мы не помогаем.
-
@StoneWeaver это пиратские сервера и не имеют никакого отношения к правообладателям. Прошу подскажите хотя-бы что искать по данной теме.
-
@StoneWeaver Я просто хочу написать бота, и даже не ради игры, а потому что сам процесс интересен но я застрял. Помоги пожалуйста.
-
@sasha21l, Ты пробовал сделать сначала pointer map, а затем делать pointer scan, поставив галочку на пункте "compare with other saved pointer map"?
-
А почему не сделать примерно так.
Написать скрипт который будет писать указатель в переменную. А дальше строить цепочки от этой переменной.[ENABLE] aobscanmodule(CharacterPointer,Game.dll,F2 0F ? ? ? ? ? ? 0F 57 ? F2 0F ? ? 66 0F ? ? F3 0F ? ? ? BA) alloc(newmem,$1000,CharacterPointer) label(return) label(PlayerPointer) registersymbol(PlayerPointer) registersymbol(CharacterPointer) newmem: mov [PlayerPointer],rsi movsd xmm1,[rsi+00000DD0] jmp return PlayerPointer: dq 00 CharacterPointer: jmp newmem nop 3 return: [DISABLE] CharacterPointer: db F2 0F 10 8E D0 0D 00 00 unregistersymbol(*) dealloc(newmem)
Жизни [PlayerPointer]+DD0
Мана [PlayerPointer]+DEC
Ну и тд.
-
@__fastcall сравнивал нету не 1 совпадения. Все указатели меняются через 1-2 часа.
-
@sasha21l Тогда можно сделать поиск по сигнатуре, можно вообще через хук какой-нибудь функции получать игрока, много вариантов вообщем. Можно ещё пореверсить структуры игры, может там вообще что-то такое будет: CWorld -> CEntityList -> CPlayer, это просто пример. И тогда можно получать структуру CWorld или Entitylist и от туда получать игрока своего.
-
Это сообщение удалено!