А на счет передвижения, я тоже сейчас над этим работаю, но пока нет результата. Пытался искать float значения, но они ни к чему не привели. Самый лучший вариант – поиск Unknown initial value, с последующим отсеиванием changed/unchanged, - долго, трудоемко, но вероятность получить требуемый результат выше.
Координаты перса и точку перемещения я нашел именно с помощью float (встроенная в клиент консоль помогла), но только в теме несколько страниц назад написано, что чара еще пнуть надо. А для этого надо знать несколько смещений. Мне пока удалось найти только общее смещение относительно объекта перса ($BASE_ADD+$20): $BD6010. Однако для версии 1,4 тут уже писали, что этот адрес имеет вид Base($0095BAA4)+$20+$BF4+$30+$4+$20. То есть не известны как минимум 4 конечных смещения. Логично предположить, что последние 3 с версией клиента не поменялись, а вот $BF4 скорее всего да. Как его найти, я пока не вдуплил - это первый мой опыт в отладке, так что ковыряние идет очень медленно...
раньше для поиска оффсетов хп пета работала эта схема
а сейчас почему-то оно при первом же отсеивании ничего не находит... кто может объяснить на пальцах как искать этот адрес? остальные нткидом находятся нормально.
ps
я не программер, поэтому для меня строки вроде Base($0095BAA4)+$20+$BF4+$30+$4+$20 ничего не говорят.
раньше для поиска оффсетов хп пета работала эта схема
а сейчас почему-то оно при первом же отсеивании ничего не находит... кто может объяснить на пальцах как искать этот адрес? остальные нткидом находятся нормально.
ps
я не программер, поэтому для меня строки вроде Base($0095BAA4)+$20+$BF4+$30+$4+$20 ничего не говорят.
Все ведь просто. Туториал для Cheat Engine: . Там все написано, как пользоваться, как искать. Задал первый поиск по значению хп у пета, изменилось значение – ищешь снова, и т.п. Через 10 минут непринужденной работы, у тебя будут все смещения.
Вроде как это В первой строчке нет опечатки? Мне кажется, предпоследнее $04 должно быть. И, если не трудно, поделись алгоритмом, как это сделать. Лучше в аську: 200905259
Нельзя, потому что это разрушит текущий ход выполнения кода игры и вызовет AV. Запись в память игры только через WriteProcessMemory.
Давайте уж сказавши А, скажем и Б и не будем пудрить мозги людям.
Во-первых, WriteProcessMemory целесообразно использовать при записи из чужого процесса. В контексте собстенного процесса WriteProcessMemory имеет ровно такой же эффект как и прямая запись в память.
Во-вторых, вызывая из отдельного потока свой инжектируемый код, который дергает непонятные функции, легко можно напороться на различного рода эффекты гонок между потокм клиента и вашим новосозданным потоком. Хотя и большинство обьектов в клиенте защищаются критическими секциями, в общем случае вам этого никто не гарантирует.
Все ведь просто. Туториал для Cheat Engine: . Там все написано, как пользоваться, как искать. Задал первый поиск по значению хп у пета, изменилось значение – ищешь снова, и т.п. Через 10 минут непринужденной работы, у тебя будут все смещения.
еще раз - оно ничего не находит при изменении. до этого в течении нескольких патчей я вызывал разных петов, искал хп, находил оффсет. так как показано на картинке в туториале. сейчас СЕ на втором поиске тупо ничего не находит. но ладно, уже не актуально. индусы оказались добрее. кроме советов они еще и програмку сделали, которая показывает все нужные для читера-любителя оффсеты.
Давайте уж сказавши А, скажем и Б и не будем пудрить мозги людям.
Во-первых, WriteProcessMemory целесообразно использовать при записи из чужого процесса. В контексте собстенного процесса WriteProcessMemory имеет ровно такой же эффект как и прямая запись в память.
А как ты думаешь, процесс из которого идёт инжект - свой ?? Естественно, нет. Поэтому из него мы и юзаем WriteProcessMemory, а не извращаемся с инжектом кода, кторый что-то подставляет в память.
Quote:
Originally Posted by silkytail
Во-вторых, вызывая из отдельного потока свой инжектируемый код, который дергает непонятные функции, легко можно напороться на различного рода эффекты гонок между потокм клиента и вашим новосозданным потоком. Хотя и большинство обьектов в клиенте защищаются критическими секциями, в общем случае вам этого никто не гарантирует.
А вот не надо дёргать "непонятные функции" и всё будет хорошо. Делая инжект надо максимально похоже воспроизводить поведение клиента - дестроить объекты, которые создал, юзать его критические секции и всё будет замечательно.
В клиенте дофигища преинтереснейшего кода, которым мржно с лёгкостью рулить, если делать это правильно.
Указанный пример с таргетом показателен свой простотой и гарантированно заработает без падения клиента, поэтому я его тут и рассмотрел. Вещи типа перемещения к заданным координатам или вызов автопилота по квестовому неписю гораздо сложнее.
Так что не стоит теоретизировать впустую. Есть что сказать по делу - вэлкам, а так лучше оттачивайте умение пользоваться отладчиком.
Странно, мой пример абсолютно рабойчий. Сам использую именно то, что тут выложил.
Сомнений нет, код рабочий. Возможно все дело в компиляторе дельфи 2009, в дельфи 7 подобных трудностей не замечал, а тут… Но, как бы там не было, теперь все функционирует