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

Проблемы с Cheat Engine 6.1


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

о_О

ВВеди в гугле RocketDock и посмотри что это за чудо)

просто в ваших уроках вы сами говорили что указатель должен быть только 1 (ну или мне показалось)

Я не ддружу с гуглом, яндекс или бинг.

Указатель бывает и 8 штук.

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

Я не ддружу с гуглом, яндекс или бинг.

Указатель бывает и 8 штук.

Ладно буду курочить дальше....Буду пробывать добивать игру.

Уже сделал 2 трейнера к игре C&C generals v 1.8 +Zero Hour v 1.4 (это так...повыкалвался))

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

Показалось! А может, я ошибся.

Один и всегда только один может быть адрес какого-то значения - здоровья, патронов и так далее. Указателей же (рабочих) на этот один-единственный адрес может быть и много. Скажем, есть у нас количество здоровья:


Player {
health = 100;
}

И есть несколько разных функций для работы с этим значением:


SpawnPlayer() {
positionX = 20;
positionY = 50;
positionZ = 10;
player = new Player();
player.Place(positionX, positionY, positionZ);
}

KillPlayer(Player player) {
if(player.health == 0) {
player.body.Explode();
player.weapon.Drop();
}
}

Получается, что две разных функции работают с нашим адресом здоровья. Ну, абстрактно говоря. Я не сильно хочу углубляться и рассказывать, откуда берётся много цепочек указателей, но абсолютно не страшно, если их несколько и они работают.

Т.е. по факту, указатель - это просто адрес, хранящий адрес какого-то объекта. Например, переменной здоровья. Как только у нас получается, к примеру, объект, хранящий этот объект, скажем, массив игроков:

playerList = { player1, player2, player3 };

То указатель становится на уровень больше, т.е. было:

player1.health;

А стало:

playerList[0].health;

Штука в том, что предыдущий указатель при этом никуда не девается (пока его не убьёт сам код игры или сборщик мусора, если решит, что такой указатель больше игре не нужен).

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

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

В общем для себя я решил, что я криворукий бот(

Пробывал в автоматическом режиме нашёл несколько сот указателей

Перезапустил игру

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

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

Желательно именно этот репак...тут ещё пару десятков модов вшили...да и я пробую ломать именно её. (взламываю полоску азота)

[CENSORED]

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

Ваши уроки просматривал уже десятки раз.

У вас всё так просто находиться чуть не с 1 раза...а у меня вечно проблемы (а научиться очень хочу)

Хотя может быть проблема и в другом:

например можеть быть что я ЛОЛКА..Может где-то туплю.

Но ошибки своей найти не могу :mad:

Замечание: Не мешало бы еще и правила форума почитать!

На первый раз без предупреждения.

//Xipho

игра

Burnout Paradise: The Ultimate Box 1.1.0.0 + Russian Vanity 1.4

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

....И искать указатели надо в статических адресах, а не по всей памяти игры.

Upd.: Или я неправильно понял эту тему?

Первый адрес в цепочке указателей должен располагаться в области памяти Image файла exe или dll-ки по пути Image Base + смещение = статический адрес.. Где смещение не превышает размер модуля или exe. Все остальные смещения "внутри статического адреса", которых может быть много могут располагаться в памяти процесса с разными правами доступа - в динамической памяти. Хотя может быть и исключение - не только в динамической, но и в Image области могут находится адреса из цепочки указателей.

Статическая память это область Image файла exe или dll-ки, подразумевается что адрес в этой памяти не поменяет своего места положения во время игры.

Динамическая память - это память, в которой адреса могут менять своё место положение. Это касается памяти, которая выделяется во время работы процесса игры.

Отсюда следует, что искать указатель через автоматический поиск нужно :

1) настроить области статической памяти для поиска первого адреса в цепочке указателей (это можно сделать в CE задавая промежуток поиска статического адреса и исключая указанные ранее модули, адресное виртуальное пространство которых не будет входит в поиск);

2) указать область сканирования для адресов цепочки вложенных в первый адрес. Эта область может захватить как динамическую память так и может затронуть области статической памяти;

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

Ну а далее отсев, отсев, отсев...

Короче совет тем у кого проблема с автоматическим поиском. У CE есть программа для тренировки. Там точно должно быть задание по поиску указателей. Так что можно потренироваться в поисках указателей как через отладку, отладку+сканер памяти так и через автоматический поиск указателей ;)

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

Возник ещё 1 вопрос.

При внедрении кода..вылазит ошибка о том что "некоторые функции не могут быть ведрены" как быть?

Даже если код не меняешь новый код не внедряеться.

Это говорит о том что игра защищена?

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

Скорее всего скрипт "внедрения кода" неправильный.

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

Следующий раз я КОД ВООБЩЕ НЕ МЕНЯЛ и попытался внедрить. Вывод таже ошибка о невозможности внедрения.

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

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

Следующий раз я КОД ВООБЩЕ НЕ МЕНЯЛ и попытался внедрить. Вывод таже ошибка о невозможности внедрения.

Код-то покажи. :)

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

это оригинальный (тоже не внедряется)


[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048) //2kb should be enough
label(returnhere)
label(originalcode)
label(exit)
newmem: //this is allocated memory, you have read,write,execute access
//place your code here
originalcode:
mov [ecx+000000A0],edx
exit:
jmp returnhere
"Burnout Paradise. The Ultimate Box.exe"+9205F:
jmp newmem
nop
returnhere:



[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"Burnout Paradise. The Ultimate Box.exe"+9205F:
mov [ecx+000000A0],edx
//Alt: db 89 91 A0 00 00 00

хочу убрать 1 функцию (но при попытке внедрения ошибка)


originalcode:
mov [ecx+000000A0],edx//////хочу заменить на nop

63f21ea069f28c30762dedd513c3f3f6.jpg

данная проблема наблюдается пока что только в игре Burnout Paradise: The Ultimate Box 1.1.0.0 + Russian Vanity 1.4

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

А если просто:


[ENABLE]
"Burnout Paradise. The Ultimate Box.exe"+9205F:
nop
nop
nop
nop
nop
nop

[DISABLE]
"Burnout Paradise. The Ultimate Box.exe"+9205F:
mov [ecx+000000A0],edx
//Alt: db 89 91 A0 00 00 00

?

Т.е. не обязательно делать code-cave с jmp-инструкциями туда-сюда, если тебе надо одну-единственную инструкцию затереть nop-ами. Тут главное баланс байт сохранить (оригинальная инструкция = 6 байт длиной, затираем шестью nop-ами по одному байту каждая).

А ругаться он может просто потому, что СЕ иногда глючит со своим дизассемблером\ассемблером - не знает, как обратно в память записать "mov [eax+123], ebx". На других версиях СЕ та же картина наблюдается?

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

А если просто:


[ENABLE]
"Burnout Paradise. The Ultimate Box.exe"+9205F:
nop
nop
nop
nop
nop
nop

[DISABLE]
"Burnout Paradise. The Ultimate Box.exe"+9205F:
mov [ecx+000000A0],edx
//Alt: db 89 91 A0 00 00 00

?

Т.е. не обязательно делать code-cave с jmp-инструкциями туда-сюда, если тебе надо одну-единственную инструкцию затереть nop-ами. Тут главное баланс байт сохранить (оригинальная инструкция = 6 байт длиной, затираем шестью nop-ами по одному байту каждая).

А ругаться он может просто потому, что СЕ иногда глючит со своим дизассемблером\ассемблером - не знает, как обратно в память записать "mov [eax+123], ebx". На других версиях СЕ та же картина наблюдается?

1. Пробывал вписать ваш код...Вывод та же ошибка

2.Сейчас скачаю CE 6.1 ENG и попробую снова

Скачал попробывал...всё тоже самое (ну ошибка....только на английском языке o_0 )

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

Burnout Paradise. The Ultimate Box.exe переименую название игры на орг. название

так:

BurnoutParadise.exe

Поправь скрипт.

Без толку.В диспетчере отображаеться как Burnout Paradise. The Ultimate Box.exe.

На скольк я понял.В корне папки с игрой лежит в лаунчер. И файл запуска игры

Но сам испольнаемый файл висит ...точнее запокован в DAT файл.

заметил это потому что при запуске игры появляеться табличка VMMARE//.....Ещё раз говорю это не оригинальная игра.А игра перепакованная и с модами. Неужели CE е дружит с пробелами?

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

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

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

ANT' timestamp='1340715641' post='9756']

А что если занопить инструкцию вручную, не используя скрипт ?

Возможно присутствует какая-либо защита. Настройки от обнаружения CE включены ?

1.Как это сделать?

2 Ес оф кос

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

ANT' timestamp='1340717315' post='9758']

в отладчике двойной клик на инструкцию и в появившемся окошке пишешь "nop" (без кавычек)

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

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

Проблема решена...Игра лахачная...поставил норм репак всё запахало.

Возник ещё один вопрос

вот есть КОД (взято с уроков Keng'a)

push edx

lea edx,dword ptr [eax]*4

cmp edx,00534A9C

pop edx

je returnhere

Дело в том что адресс 00534A9C и после перезапуска он меняеться

вопрос вот в чем..Допустим я найду указатель на этот адресс....как засандалить указатель в код?..чтобы скрипт все время рабочий был.

и 2 вопрос

как видно из кода кенг использует регистры которые не использует игра. Но как быть если все регистры используются?. (в качестве примера взял игру counter strike sourse мод MW3)

Помогите.Я только начинаю разбираться в этом деле

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

Это никак не "проблема cheat Engine", а ваша...

Допустим мы нашли адрес со здоровьем "7654321"

Поставили бряк и нашли инструкцию, которая что-то делает со здоровьем mov ecx,[eax+12345]

Потом нашли указатель на этот адрес [[[["name.exe"+123]+4]+56]+12345]

пишем скрипт


[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)

newmem:
push ebx //Помещаем регистр ebx в стек
mov ebx,["name.exe"+123] //Вначале помещаем в ebx базовый адрес
mov ebx,[ebx+4] //теперь первое смещение
mov ebx,[ebx+56] //и еще одно
//В итоге, в ebx будет находится значение указателя на игрока
cmp ebx,eax //Сравниваем значение указателя с текущим значением регистра eax
pop ebx //Убераем ebx из стека
jne originalcode //Если если значения регистров ebx и eax не равны,
//(значит, в данный момент, выполняется действие не со структурой нашего игрока).
//то выполняется оригинальный код
//А если ebx и eax равны, то
//сначала меняем значение адреса "[eax+12345]" на "999", а затем выполняем оригинальный код
mov [eax+12345],#999
originalcode:
mov ecx,[eax+12345] //Оригинальная инструкция
jmp returnhere

"ADDRESS":
jmp newmem
nop
returnhere:

[DISABLE]
dealloc(newmem)
"ADDRESS":
mov ecx,[eax+12345]

Можно написать этот скрипт и так


[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)

newmem:
cmp [[["name.exe"+123]+4]+56],eax
jne originalcode
mov [eax+12345],#999
originalcode:
mov ecx,[eax+12345]
jmp returnhere

"ADDRESS":
jmp newmem
nop
returnhere:

[DISABLE]
dealloc(newmem)
"ADDRESS":
mov ecx,[eax+12345]

А можно и вот так

http://forum.gamehac...%B0-id-players/

А можно и самому найти еще много всего интересного.

И для ответа на 2 вопрос возьмем ту же выдуманную инструкцию "mov ecx,[eax+12345]"

В расчетах используется только 2 регистра - ecx и eax, а все остальные (разве, что кроме esp) мы может использовать для наших нужд

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

ANT' timestamp='1341677069' post='9999']

Это никак не "проблема cheat Engine", а ваша...

Допустим мы нашли адрес со здоровьем "7654321"

Поставили бряк и нашли инструкцию, которая что-то делает со здоровьем mov ecx,[eax+12345]

Потом нашли указатель на этот адрес [[["name.exe"+123]+4]+56]

пишем скрипт


[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)

newmem:
push ebx //Помещаем регистр ebx в стек
mov ebx,["name.exe"+123] //Вначале помещаем в ebx базовый адрес
mov ebx,[ebx+4] //теперь первое смещение
mov ebx,[ebx+56] //и еще одно
//В итоге, в ebx будет находится значение указателя на игрока
cmp ebx,eax //Сравниваем значение указателя с текущим значением регистра eax
pop ebx //Убераем ebx из стека
jne originalcode //Если если значения регистров ebx и eax не равны,
//(значит, в данный момент, выполняется действие не со структурой нашего игрока).
//то выполняется оригинальный код
//А если ebx и eax равны, то
//сначала меняем значение адреса "[eax+12345]" на "999", а затем выполняем оригинальный код
mov [eax+12345],#999
originalcode:
mov ecx,[eax+12345] //Оригинальная инструкция
jmp returnhere

"ADDRESS":
jmp newmem
nop
returnhere:

[DISABLE]
dealloc(newmem)
"ADDRESS":
mov ecx,[eax+12345]

Можно написать этот скрипт и так


[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)

newmem:
cmp [[["name.exe"+123]+4]+56],eax
jne originalcode
mov [eax+12345],#999
originalcode:
mov ecx,[eax+12345]
jmp returnhere

"ADDRESS":
jmp newmem
nop
returnhere:

[DISABLE]
dealloc(newmem)
"ADDRESS":
mov ecx,[eax+12345]

А можно и вот так

http://forum.gamehac...%B0-id-players/

А можно и самому найти еще много всего интересного.

И для ответа на 2 вопрос возьмем ту же выдуманную инструкцию "mov ecx,[eax+12345]"

В расчетах используется только 2 регистра - ecx и eax, а все остальные (разве, что кроме esp) мы может использовать для наших нужд

попробую первые 2 способа...3 пока не для меня

а насчёт второго вопроса...я недавно посмотрел урок...КЕНГ прал тот регистр где были все 0...При этом сказав что он не используеться. Когда я тоже действовал по уроку оказалось что во всех регистрах есть какие-то значения...поэтому я подумал что их нельзя использовать.Ладно спасибо...буду курочить дальше

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

Я допустил небольшую оплошность:

ANT' timestamp='1341677069' post='9999']

Допустим мы нашли адрес со здоровьем "7654321"

Поставили бряк и нашли инструкцию, которая что-то делает со здоровьем mov ecx,[eax+12345]

Потом нашли указатель на этот адрес [[["name.exe"+123]+4]+56]

Указатель на адрес должен выглядить вот так: [[[["name.exe"+123]+4]+56]+12345], а [[["name.exe"+123]+4]+56] - это указатель на структуру.

Но в скриптах все верно, т.к мы сравниваем [[["name.exe"+123]+4]+56] с eax (начало структуры игрока) и поэтому последнее смещение "12345" нам не нужно

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

  • 6 месяцев спустя...

Я скачал Cheat Engine 6.1 И хочу разогнать браузер Он выдает ошибку Failure enabling speedhack (DLL injection failed) подскажите что делать буду благодареН..

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

×
×
  • Создать...

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

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