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

Поиск статического указателя в игре


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

Всем доброго времени суток! Прошу помощи во взломе онлайн игры с установленным клиентом на PC. Вообщем суть такая - игра - обычная рыбалка. Я нахожу нужный адрес в памяти и в боте просто читаю его значение. Но как всегда проблема в том что после перезапуска клиента заново приходится искать адрес. Посмотрев кучу видеоуроков по нахождению указателей - попытался сам найти. Но ни в какую. При поиске через Pointer Scan - указателей либо совсем не находит, либо находит, но после перезапуска при отсеивании - показывает ноль. При поиске в ручную - тож возникли проблемы. Ставлю отладчик, вижу инструкцию - делаю новый поиск адреса который значится в описании инструкции - не находит такого. Подскажите что я делаю не так? могу видео записать как и что я делаю...

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

Привет! Пожалуйста, создавай темы в правильном разделе. Я перенес твою тему в раздел о взломе ММО-игр, но если твоя игра (название тоже было бы неплохо указывать) имеет другой жанр, то скажи об том - перенесу в нужный раздел.

 

Лучше всего, конечно, посмотреть видео твоих действий.

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

Сорри за тему не в том разделе. Такс..вот сделал видео. Закинул на яндекс диск. Вообщем - сначала ищу нужный мне адрес. в данном случае это адрес который реагирует на событие в игре - а именно когда стоят три удочки и на первой происходит поклевка - на видео видно что я отсеиваю именно когда поплавок уходит под воду (да и еще - когда на удочке нет поклевки нужное значение равно 0, на видео видно что я потом отсеиваю используя и это знание тоже). В данном случае нашлось два адреса (я беру для чтения поклевки всегда верхний). Но пробовал искать указатели на оба адреса - не получалось. https://yadi.sk/i/fiWWjc8JvCHkP вот видео. Название игры Fantastic Fishing

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

  • 3 недели спустя...

Спустя кучу времени нашел я нужную инструкцию. Написал вот такой вот скрипт: 

Скрытый текст

{ Game   : FClient.exe
  Version: 
  Date   : 2016-10-09
  Author : NickGrava
  This script does blah blah blah
}
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
 
 
aobscanmodule(Adress,FClient.exe,D9 5F 6C 5E 5B) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
label(my_flag)
registersymbol(my_flag)
newmem:
  cmp byte ptr [my_flag],1
  jne code
  push eax
  mov eax,110280FC
  mov [eax],edi
  add [eax],6C
  pop eax
  mov byte ptr [my_flag],0
code:
  fstp dword ptr [edi+6C]
  pop esi
  pop ebx
  jmp return
my_flag:
  db 0
Adress:
  jmp newmem
return:
registersymbol(Adress)
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
Adress:
  db D9 5F 6C 5E 5B
unregistersymbol(Adress)
unregistersymbol(my_flag)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "FClient.exe"+151F38
"FClient.exe"+151F13: 8B 8F 88 00 00 00  -  mov ecx,[edi+00000088]
"FClient.exe"+151F19: 89 5F 64           -  mov [edi+64],ebx
"FClient.exe"+151F1C: 8B 49 04           -  mov ecx,[ecx+04]
"FClient.exe"+151F1F: B8 06 00 00 00     -  mov eax,00000006
"FClient.exe"+151F24: E8 97 40 ED FF     -  call FClient.exe+25FC0
"FClient.exe"+151F29: 89 45 F4           -  mov [ebp-0C],eax
"FClient.exe"+151F2C: DB 45 F4           -  fild dword ptr [ebp-0C]
"FClient.exe"+151F2F: D9 5D F4           -  fstp dword ptr [ebp-0C]
"FClient.exe"+151F32: D9 45 F4           -  fld dword ptr [ebp-0C]
"FClient.exe"+151F35: D9 57 70           -  fst dword ptr [edi+70]
// ---------- INJECTING HERE ----------
"FClient.exe"+151F38: D9 5F 6C           -  fstp dword ptr [edi+6C]
"FClient.exe"+151F3B: 5E                 -  pop esi
"FClient.exe"+151F3C: 5B                 -  pop ebx
// ---------- DONE INJECTING  ----------
"FClient.exe"+151F3D: 8B E5              -  mov esp,ebp
"FClient.exe"+151F3F: 5D                 -  pop ebp
"FClient.exe"+151F40: C3                 -  ret 
"FClient.exe"+151F41: CC                 -  int 3 
"FClient.exe"+151F42: CC                 -  int 3 
"FClient.exe"+151F43: CC                 -  int 3 
"FClient.exe"+151F44: CC                 -  int 3 
"FClient.exe"+151F45: CC                 -  int 3 
"FClient.exe"+151F46: CC                 -  int 3 
"FClient.exe"+151F47: CC                 -  int 3 
}

 

Из скрипта понятно что нужная мне инструкция:

Скрытый текст

"FClient.exe"+151F38: D9 5F 6C           -  fstp dword ptr [edi+6C]

 

Моим же кодом я пытаюсь в известный мне адрес 110280FC (который был найден через Code Caves в CE, с правами на доступ Исполняемый\Чтение\Запись) вставить адрес который содержится в [edi+6C]. Ну и сделал флаг чтобы скрипт срабатывал всего один раз. 

 

При запуске скрипта - игра вылетает.

 

Прошу помощи - может я чего не так сделал в скрипте? оригинальную инструкцию мне нужно сохранить. она мне не мешает. цель которую я преследую в этом скрипте - просто получать автоматически адрес нужного мне значения.

 

 

 

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

19 минуту назад, NickSpirit сказал:

При запуске скрипта - игра вылетает.

Попробуйте так сделать:

Скрытый текст

{ Game   : FClient.exe
  Version:
  Date   : 2016-10-09
  Author : NickGrava
  This script does blah blah blah
}
[ENABLE]
aobscanmodule(Adress,FClient.exe,D9 5F 6C 5E 5B) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(Adress)

newmem:
  lea ebx,[edi+6C]
  mov [110280FC],ebx

code:
  fstp dword ptr [edi+6C]
  pop esi
  pop ebx
  jmp return

Adress:
  jmp newmem
return:

[DISABLE]
Adress:
  db D9 5F 6C 5E 5B

unregistersymbol(Adress)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "FClient.exe"+151F38
"FClient.exe"+151F13: 8B 8F 88 00 00 00  -  mov ecx,[edi+00000088]
"FClient.exe"+151F19: 89 5F 64           -  mov [edi+64],ebx
"FClient.exe"+151F1C: 8B 49 04           -  mov ecx,[ecx+04]
"FClient.exe"+151F1F: B8 06 00 00 00     -  mov eax,00000006
"FClient.exe"+151F24: E8 97 40 ED FF     -  call FClient.exe+25FC0
"FClient.exe"+151F29: 89 45 F4           -  mov [ebp-0C],eax
"FClient.exe"+151F2C: DB 45 F4           -  fild dword ptr [ebp-0C]
"FClient.exe"+151F2F: D9 5D F4           -  fstp dword ptr [ebp-0C]
"FClient.exe"+151F32: D9 45 F4           -  fld dword ptr [ebp-0C]
"FClient.exe"+151F35: D9 57 70           -  fst dword ptr [edi+70]
// ---------- INJECTING HERE ----------
"FClient.exe"+151F38: D9 5F 6C           -  fstp dword ptr [edi+6C]
"FClient.exe"+151F3B: 5E                 -  pop esi
"FClient.exe"+151F3C: 5B                 -  pop ebx
// ---------- DONE INJECTING  ----------
"FClient.exe"+151F3D: 8B E5              -  mov esp,ebp
"FClient.exe"+151F3F: 5D                 -  pop ebp
"FClient.exe"+151F40: C3                 -  ret
"FClient.exe"+151F41: CC                 -  int 3
"FClient.exe"+151F42: CC                 -  int 3
"FClient.exe"+151F43: CC                 -  int 3
"FClient.exe"+151F44: CC                 -  int 3
"FClient.exe"+151F45: CC                 -  int 3
"FClient.exe"+151F46: CC                 -  int 3
"FClient.exe"+151F47: CC                 -  int 3
}

 

 

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

Только что, NickSpirit сказал:

Попробовал, скрипт запускается, но когда доходит дело до этой инструкции игра вылетает. 

Тогда вопрос - а что это за адрес?

 

42 минуты назад, NickSpirit сказал:

известный мне адрес 110280FC

Может в него и нельзя вовсе записывать адрес.

 

И ещё вопрос - что Вы хотите сделать в игре этим скриптом? Я пока не уловил сути.

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

По поводу адреса - искал его с помощью Code Caves в CE и смотрел чтобы он был доступен для Read\Write. Сейчас нажал просмотреть этот регион памяти - на этом адресе и на всех соседних - одна и та же инструкция add [eax],al. 

 

А скрипт - все просто - каждый раз искать адрес нужного параметра в игре - тяжко и долго. А код игры всегда один и тот же. Посмотрев урок про автоматический поиск указателя - решил сделать также. 

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

57 минут назад, NickSpirit сказал:

По поводу адреса - искал его с помощью Code Caves в CE и смотрел чтобы он был доступен для Read\Write. Сейчас нажал просмотреть этот регион памяти - на этом адресе и на всех соседних - одна и та же инструкция add [eax],al. 

 

А скрипт - все просто - каждый раз искать адрес нужного параметра в игре - тяжко и долго. А код игры всегда один и тот же. Посмотрев урок про автоматический поиск указателя - решил сделать также. 

Понял, т.е. Вы просто взяли какой-то левый адрес.

Переписал скрипт и вставил адрес в таблицу, скачайте табличку и попробуйте скрипт -жду резюме.

 

Таблицу перезалил ниже 

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

у меня СЕ 6,5 

Может из-за того что я сохранял таблицу без подключения к процессу, сейчас подключусь к тутуроиалу СЕ и попробую пересохранить таблицу.

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

Табличка ещё раз:

 

ЗЫ: Если не получиться с таблицей и в этот раз, то выложу сам скрипт и объясню как забить адрес в таблицу.

 

Таблицу выложил в этом сообщении.

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

Табличка прицепилась. Но адреса там нет. Что сделать дальше??? 

 

Судя по скрипту нужно добавить адрес Pointer?

 

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

Эмм...вообщем активировал скрипт - попробовал - игра подвисла и потом вылетела. Кстати - можно такой вопрос - вот у нас при такой инъекции оригинальная инструкция остается или нет?

 

Для наглядности могу видео записать что я делаю и что происходит.

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

3 минуты назад, NickSpirit сказал:

Для наглядности могу видео записать что я делаю и что происходит.

Да запишите, будет более понятно.

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

Блина) стал записывать видео на другом компе) там все получилось...а вот на основном - щас попробую все перезапустить и еще раз попробовать. 

 

 

Да реально, не работает на ноутбуке..работает на стационарном компе. Версии CE правда разные на компах. и на ноутбуке при активации срипта адрес появляется не оч похожий на правду...

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

8 минут назад, NickSpirit сказал:

Блина) стал записывать видео на другом компе) там все получилось...а вот на основном - щас попробую все перезапустить и еще раз попробовать. 

Как я понял - мой скрипт заработал? :D

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

1 минуту назад, Garik66 сказал:

Как я понял - мой скрипт заработал? :D

Да, но не пойму почему только на одном компе....))) А так - огромное спасибо конечно! Теперь буду знать как для других инструкций сделать по аналогии. Только вот как заставить работать его везде...надо подумать. Игра реально виснет на ноуте и вылетает. 

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

5 минут назад, NickSpirit сказал:

Игра реально виснет на ноуте и вылетает. 

Ну это скорее всего где-то проблема на ноуте, а не в скрипте. Может нужно СЕ переустановить на ноуте. Как я видел на записи - у Вас СЕ 6,4. Поставьте 6,5 или самую свежую 6,6

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

Кстати на ноуте адрес не изменяется при перезапуске игры. Лан попробую переустановить CE.

 

Не понимаю...то ли я не вижу какую то простую проблему..то ли делаю что-то не так))

 

но на ноуте не работает. Нужный адрес скрипт всегда выдает один и тот же. что врятли правильно.

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

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

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

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