NickSpirit

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

93 сообщения в этой теме

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

Все отработало. Игра не вылетела. 

Скрипт 2 ?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, Garik66 сказал:

Скрипт 2 ?

Скрипт 3 ну второй тож норм отработал. 

Изменено пользователем NickSpirit
0

Поделиться сообщением


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

Проверьте и Скрипт 3 тоже. Отпишитесь. Жду результатов.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, NickSpirit сказал:

Скрипт 3 ну второй тож норм отработал. 

ОК!!!

Рад!!!

Люблю - когда всё работает.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, Garik66 сказал:

Проверьте и Скрипт 3 тоже. Отпишитесь. Жду результатов.

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

0

Поделиться сообщением


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

Ну правда я не понял что они делают))) ну лан) Есть шанс что основной скрипт будет работать?))

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
47 минуты назад, Garik66 сказал:

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

Обещанное объяснение:

1. Обратите внимание на эти 3 строчки кода:

"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]

2. Из [ebp-0C] идёт выгрузка значения в FPU регистр. Кстати значения у Вас в игре во float.

3. И оно выгружаются в два соседних адреса [edi+70] и [edi+6C].

4. [edi+6C] - это наш адрес.

5. А [edi+70] - я думаю это контрольный адрес.

Т.е. скорее всего, где то дальше по коду игры идёт проверка - а равно ли значение в адресах [edi+70] и [edi+6C] и, если не равно, то вылет.

 

Так что потестите ещё и Скрипт 2 и Скрипт 3.

Скорее всего при активном Скрипт 2 через некоторое время произойдёт вылет.

А на Скрипт 3 вылета не должно быть. 

0

Поделиться сообщением


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

Вылет вылетом...только мне этот скрипт нужен не для того чтобы что-то писать в память. мне важно просто иметь адрес который я потом просто буду читать в боте. Так что по идее - вылета не должно быть. 

 

Скрипты поюзаю. 

 

Ну вроде как второй скрипт вылета не вызывает пока. 

Изменено пользователем NickSpirit
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
8 минут назад, NickSpirit сказал:

Ну правда я не понял что они делают)))

Всё просто, поясню:

У Вас на видео значение в адресе, который Вы нашли вручную было в DEC -  1102577664, что в Hex -  41B80000 или во float - 23.

Так вот я в скрипте просто записываю это значение:

в Скрипт 3:

mov dword ptr [ebp-0C],(float)23

и в Скрипт 2:

mov [edi+6C],41B80000

 

0

Поделиться сообщением


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

Сейчас поставил CE 6.6 подгрузил таблицу последнюю. Скрипт 2 не активируется. Скрипт 3 работает.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, NickSpirit сказал:

Скрипт 2 не активируется. Скрипт 3 работает.

Скрипт 3 более правильный, хотя опять странно - почему не активируется Скрипт 2 - должен.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
35 минуты назад, Garik66 сказал:

Скрипт 3 более правильный

Хм...щас буду пытаться значение [ebp-0C] куда нить в известное место засовывать. думаю так прокатит. 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, NickSpirit сказал:

Хм...щас буду пытаться значение [ebp-0C] куда нить в известное место засовывать. думаю так прокатит. 

Так это же просто мы это уже делали в первом скрипте, сейчас сделаю Скрипт 4 и выложу таблицу.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, Garik66 сказал:

Так это же просто мы это уже делали в первом скрипте, сейчас сделаю Скрипт 4 и выложу таблицу.

Это да, я уже сделал. Щас буду пробовать. Ой, чет напрямую не дает копирнуть. Надо через что-то.

Изменено пользователем NickSpirit
0

Поделиться сообщением


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

Попробуйте Скрипт 4.

ForNickSpirit.CT

0

Поделиться сообщением


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

Опа...вроде прокатило. Только я строчку про mov float 23 стер. дабы ничего не писать в память.

 

 Щас адрес ручками найду - и буду сверять те ли данные мы получаем.

Изменено пользователем NickSpirit
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, NickSpirit сказал:

Щас адрес ручками найду

Опять же - зачем ручками? Есть же инструкция.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, Garik66 сказал:

Опять же - зачем ручками? Есть же инструкция.

Точно!))) обалдеть) я чет и не подумал что теперь можно так адрес находить...

0

Поделиться сообщением


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

1. Перейдите в "Отладчик" или "Редактор памяти".

2. Перейдите на Вашу инструкцию 

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

я уже описывал, ка это делать ранее.

3. ПКМ по инструкции "Найти адреса к которым обращается инструкция".

4. В новом окне будет Ваш адрес.

0

Поделиться сообщением


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

Спасибо!!!!

1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
5 минут назад, NickSpirit сказал:

Спасибо!!!!

Не за что. Рад, что всё работает.

1

Поделиться сообщением


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

По факту значение что выдает скрипт и то что есть на самом деле разные. Попытаюсь разобраться почему так. 

0

Поделиться сообщением


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

Вообщем вот рабочий вариант скрипта! 

 

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

[ENABLE]
registersymbol(myAddr)
alloc(newmem,64)
alloc(myAddr,4)
label(returnhere)
newmem:
fstp dword ptr [edi+6C] // Оригинальный код игры
lea ebx,[edi+6C]        // Загружаем в EAX адрес EDI+6C
mov [myAddr],ebx        // Сохраняем адрес в myAddr, скопировав его из EAX
pop esi
pop ebx
jmp returnhere
"FClient.exe"+151F38:
jmp newmem
returnhere:
[DISABLE]
"FClient.exe"+151F38:
db D9 5F 6C 5E 5B
dealloc(newmem)
dealloc(myAddr)
unregistersymbol(myAddr)

 

Как дошел до такого)) - 1) сначала перенес мои действия после оригинальной инструкции. Игра вылетала. 2) А потом заметил одну малость и добавил строчку dealloc(myAddr) которой не было - и ведь заработало!!! P.S. в комментах к скрипту от Keng - регистр EAX - c ним не пошло почему то. Пошло с EBX.

Изменено пользователем NickSpirit
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
39 минуты назад, NickSpirit сказал:

добавил строчку dealloc(myAddr)

А для чего вообще нужно было выделять отдельную память.

Сделали бы просто так:

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

[ENABLE]
registersymbol(myAddr)
alloc(newmem,64)
label(myAddr)
label(returnhere)


newmem:
fstp dword ptr [edi+6C] // Оригинальный код игры
lea ebx,[edi+6C]        // Загружаем в ebx адрес EDI+6C
mov [myAddr],ebx        // Сохраняем адрес в myAddr, скопировав его из EAX
pop esi
pop ebx
jmp returnhere

myAddr:
dd 0

"FClient.exe"+151F38:
jmp newmem
returnhere:

[DISABLE]
"FClient.exe"+151F38:
db D9 5F 6C 5E 5B

unregistersymbol(myAddr)
dealloc(newmem)
 

 

И не нужно тогда строки dealloc(myAddr)

Зы: Вернул назад - не обратил внимание, что keng делал скрипт без аобскана.

Изменено пользователем Garik66
0

Поделиться сообщением


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

Ну скрипт делал не я изначально. Его предложил Keng. Я просто немного переделал. А главное он заработал) 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость
Эта тема закрыта для публикации сообщений.