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

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


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

Вообщем еще раз проверил скрипт там где он работал - не работает. Игра тож виснет и вылетает. Отработал верно скрипт только один раз. 

 

Щас еще гляну с одним ли адресом работает данная инструкция. Есть мысль что если включать скрипт в определенный момент то он работает верно.

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

Вообщем глянул - инструкция работает с одним адресом, а скрипт больше так и не заработал. как бы я его не включал. 

 

Записал видео - как и чего. Видно что скрипт выдает не тот адрес. Кстати когда записывал видео - скрипт не вызвал закрытие игры. https://yadi.sk/i/_5efwqMlwXRXS

 

Кстати, щас глянул по инструкциям как отрабатывает наш код - в регистре EBX действительно находится наш адрес - но вот в Pointer он не попадает судя по всему.

 

Сорри!) Кажись я разобрался - сделал представление HEX)

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

@NickSpirit, попробуй таблицу, которая приложена к этому сообщению. Версия игры - последняя. Скрипт прокомментирован. Включи скрипт и сделай нужное действие, чтобы вызвалась игровая инструкция, я использовал твою же.

FClient.zip

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

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

Автор, попробуй таблицу, которая приложена к этому сообщению. Версия игры - последняя. Скрипт прокомментирован. Включи скрипт и сделай нужное действие, чтобы вызвалась игровая инструкция, я использовал твою же.

FClient.zip

Сделал. Все также - игра зависла и потом вылетела. 

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

7 минут назад, keng сказал:

Это любопытно, потому что в скрипте ошибки нет. Можешь сказать, какое действие в игре нужно сделать?

Конечно могу. Достаточно всего лишь подсечь рыбу нажав пробел когда рыба клюнет. Делаю на доночной снасти. (хотя это думаю роли не играет). Вот когда я жму пробел - то игра вылетает. (инструкция как раз и происходит в этот момент)

 

 

Причем Ваш вариант не работает на обеих машинах. Тогда как вариант от Garik66 более или менее работает на одном компе у меня. Я когда тестил вариант от Garik66  нашел адрес нужный мне руками (при этом выловил порядка 20-40 рыб). и потом включил скрипт - он отрабатывал норм. если же я сразу пытаюсь использовать скрипт - игра вылетает. 

 

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

В общем, нашел указатель на текущее значение опыта, его адрес прекрасно читается. Вот скрипт:

 

Spoiler

[ENABLE]
registersymbol(addr)
alloc(newmem,2048)
alloc(addr,4)
label(returnhere)

newmem:
mov ecx,[eax+60]
push ecx
lea ecx,[eax+60]
mov [addr],ecx
pop ecx
fild dword ptr [eax+60]
jmp returnhere
"FClient.exe"+68946:
jmp newmem
nop
returnhere:

[DISABLE]
"FClient.exe"+68946:
db 8B 48 60 DB 40 60
dealloc(newmem)
unregistersymbol(addr)
dealloc(addr)

 

 

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

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

Инструкция работает только с одним адресом. Это точно. я в видео это проверял. А вот по поводу опыта - не знаю. опыт как то не так важен для меня)) 

 

А вот про защиту я уже задумываюсь. 

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

1 час назад, NickSpirit сказал:

кстати, щас глянул по инструкциям как отрабатывает наш код - в регистре EBX действительно находится наш адрес - но вот в Pointer он не попадает судя по всему.

А как же dec 12614260 - это hex C07A74

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

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

А как же dec 12614260 - это hex C07A74

 

Я потом написал что с этим разобрался)))) Но суть та же - раза с 10 скрипту удается срабатывать нормально. Не знаю..щас попробую ради интереса снова найти руками адрес..посчитать сколько я поймаю рыбы..и включить скрипт снова. Надо же найти причину вылета игры. Скрипты такие полезные ведь!

Изменено пользователем 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:

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

Adress:
  jmp newmem
return:

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

unregistersymbol(Adress)
dealloc(newmem)

 

Только это скрипт не на адрес, а сразу на значение (значение, которое увидел у Вас на видео).

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

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

Не понял...а что в этом скрипте происходит? на метке newmem ничего нет...

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

  fstp dword ptr [edi+6C]
  mov [edi+6C],‭41B80000 

 

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

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

Он мне выдает что инструкция 


mov [edi+6C],‭41B80000 

не может быть откомпилирована.

Странно.

 

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

Скрипт не активируется. по причине указанной мной выше) :(

Ладно. Тогда выложите сюда стандартный СЕ-ный скрипт с аобсканом из инструкции, которая не много выше Вашей, вот из этой:

"FClient.exe"+151F32: D9 45 F4           -  fld dword ptr [ebp-0C]

Кстати видно, где проверка значения идёт. Если сработает скрипт, который я  напишу, то объясню где она.

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

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

Он мне выдает что инструкция 


mov [edi+6C],‭41B80000 

не может быть откомпилирована.

Ещё раз говорю - странно.

Добавил сейчас скрипт в таблицу, которую раньше выкладывал:

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

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

Щас попробую таблицу добавить. Что касаемо скрипта с AOBScan - щас адрес руками найду - выложу. 

 

Добавил - скрипт активировался. Игра не вылетела. 

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

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

Щас попробую таблицу добавить. Что касаемо скрипта с AOBScan - щас адрес руками найду - выложу. 

Зачем руками то, я же дал инструкцию и её адрес:

"FClient.exe"+151F32: D9 45 F4           -  fld dword ptr [ebp-0C]

 

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

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

Зачем руками то, я же дал инструкцию и её адрес:


"FClient.exe"+151F32: D9 45 F4           -  fld dword ptr [ebp-0C]

 

Эммм...если б уметь по другому..))) я ж новичок в этом. я знаю что можно как то найти инструкцию где-то..а как и где - уже не знаю.

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

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

.а как и где - уже не знаю.

1. Перейдите в отладчик.

2. ПКМ (правая кнопка мыши) по окну.

3. Перейти по адресу (верхняя строчка)

4. Замените адрес на адрес инструкции - в нашем случае "FClient.exe"+151F32

5. Нажмите "Подтвердить".

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

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

{ Game   : FClient.exe
  Version: 
  Date   : 2016-10-09
  Author : GravaPC

  This script does blah blah blah
}

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat

 
 
aobscanmodule(Garik66,FClient.exe,D9 45 F4 D9 57 70) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  fld dword ptr [ebp-0C]
  fst dword ptr [edi+70]
  jmp return

Garik66:
  jmp code
  nop
return:
registersymbol(Garik66)

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
Garik66:
  db D9 45 F4 D9 57 70

unregistersymbol(Garik66)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "FClient.exe"+151F32

"FClient.exe"+151F0A: 83 C1 10           -  add ecx,10
"FClient.exe"+151F0D: 89 8F A0 00 00 00  -  mov [edi+000000A0],ecx
"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]
// ---------- INJECTING HERE ----------
"FClient.exe"+151F32: D9 45 F4           -  fld dword ptr [ebp-0C]
"FClient.exe"+151F35: D9 57 70           -  fst dword ptr [edi+70]
// ---------- DONE INJECTING  ----------
"FClient.exe"+151F38: D9 5F 6C           -  fstp dword ptr [edi+6C]
"FClient.exe"+151F3B: 5E                 -  pop esi
"FClient.exe"+151F3C: 5B                 -  pop ebx
"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 
}

 

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

1 час назад, NickSpirit сказал:

Garik66,FClient.exe,D9 45 F4 D9 57 70)

В честь меня адрес назвали - круто!!!;)

 

1. Используйте тег "Кода" внутри спойлера.

2. Скрипт 3 (сразу в таблице) проверьте, но ощущение, что нужен фильтр. Инструкции работают (я уверен) не с одним адресом, как у Вас на видео, та опция СЕ, которую Вы использовали для проверки со сколькими адресами работает инструкция - работает недостаточно хорошо.

 

Всё таже таблица:

// Выложил в этом сообщении.

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

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

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

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