Darth_Brovius Опубликовано 21 мая, 2011 Поделиться Опубликовано 21 мая, 2011 Доброго Всем времени суток!Собственно проблема: при попытке присоединить отладчик CE к игре - вылет игры с ошибкой. Если просто искать значения, то находит, меняет, замораживает без проблем. Но стоит поставить бряк и вылет. Вопрос для гуру: может есть хитрая опция для сокрытия отладчика(подозреваю что это защита рубит)? P.S. Версия CE 6.1 Beta3 и русификатор от SER[G]ANT(отдельная благодарность за труды!). Проверялось на версиях 1.0.0.1 и 1.0.0.2. Если ошибся темой - прошу прощения. Ссылка на комментарий Поделиться на другие сайты Поделиться
ZOCKIR Опубликовано 21 мая, 2011 Поделиться Опубликовано 21 мая, 2011 Darth_Brovius В настройках программы (CE 6.1) установите параметры где "Debugger options" Использовать отладчик в "Режиме Ядра" (Use kernelmode debugger). Вылетов не должно быть.Darth_Brovius переименуйте тему с Ведьмак 2 от 1с и отладчик на Ведьмак 2 и все вопросы относящее к этой игре будут решаться здесь. Думаю так будет норм. Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 22 мая, 2011 Поделиться Опубликовано 22 мая, 2011 http://forum.cheatengine.org/viewtopic.php?t=536704Тут аж на 10 страниц тема расползлась Ссылка на комментарий Поделиться на другие сайты Поделиться
Darth_Brovius Опубликовано 22 мая, 2011 Автор Поделиться Опубликовано 22 мая, 2011 Darth_Brovius В настройках программы (CE 6.1) установите параметры где "Debugger options" Использовать отладчик в "Режиме Ядра" (Use kernelmode debugger). Вылетов не должно быть.Darth_Brovius переименуйте тему с Ведьмак 2 от 1с и отладчик на Ведьмак 2 и все вопросы относящее к этой игре будут решаться здесь. Думаю так будет норм.Думаю тему вообще надо переименовать в "CE и Win7 64". Все мои проблемы от операционки. Указанный способ не работает, пишет что-то об отсутствии цифровой подписи. http://forum.cheatengine.org/viewtopic.php?t=536704Тут аж на 10 страниц тема расползласьЗа таблицу огромное спасибо! Почему бы не выложить на этом форуме?P.S. Что больше всего удручает, так это то, что поставив нодвд игра стала более быстро шевелиться... Ссылка на комментарий Поделиться на другие сайты Поделиться
ZOCKIR Опубликовано 22 мая, 2011 Поделиться Опубликовано 22 мая, 2011 Darth_Brovius перенести в Общие вопросы по Cheat Engine Ссылка на комментарий Поделиться на другие сайты Поделиться
Darth_Brovius Опубликовано 23 мая, 2011 Автор Поделиться Опубликовано 23 мая, 2011 Darth_Brovius перенести в Общие вопросы по Cheat EngineЯ бы с удовольствием, но не знаю как это сделать. P.S. С работой малёк разгребусь, буду пытаться отключить в семёрке блокирование не подписанных драйверов... Ссылка на комментарий Поделиться на другие сайты Поделиться
Ac1d Опубликовано 23 мая, 2011 Поделиться Опубликовано 23 мая, 2011 Кстати kernel debbuger работает хорошо, я с его помощью хакнул злосчастный Xenus2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 23 мая, 2011 Поделиться Опубликовано 23 мая, 2011 блокирование не подписанных драйверов... Отключать блокировку неподписанных драйверов можно при загрузке системы. Надо как только пройдет BIOS POST, сразу нажать F8 и выбрать соответствующий пункт меню. Ссылка на комментарий Поделиться на другие сайты Поделиться
Darth_Brovius Опубликовано 24 мая, 2011 Автор Поделиться Опубликовано 24 мая, 2011 Загрузку не подписанных драйверов включил. Но есть теперь другая проблема: если стоит галочка "использовать процедуру Глобальной Отладки" - выдает BSoD. Если нет - то пишет, что запустить отладчик не удалось. И потом показывает что моя система не поддерживает DBVM(до запуска отладчика показывал что поддерживает). Процессор Core i7 860. Опция "Возможность выполнять код ядра" никакого видимого эффекта не оказывает. Ссылка на комментарий Поделиться на другие сайты Поделиться
Ac1d Опубликовано 25 мая, 2011 Поделиться Опубликовано 25 мая, 2011 Ты включил Kernel debbuger? Ссылка на комментарий Поделиться на другие сайты Поделиться
Akama Опубликовано 25 мая, 2011 Поделиться Опубликовано 25 мая, 2011 у меня вот другой вопрос по этой же игре.[ENABLE]alloc(newmem,2048)label(vitality)label(returnhere)label(originalcode)label(wied)registersymbol(wied)newmem:vitality:push ebxmov ebx,[witcher2.exe+022BC5F4]mov ebx,[ebx+14]mov ebx,[ebx+14]mov ebx,[ebx+8]mov [wied],ebxpop ebxcmp eax,[wied]jne originalcodepush [eax+4]pop [eax]originalcode:fld dword ptr [eax]mov eax,[ebp+08]jmp returnherewied:dd 0witcher2.exe+8CA4:jmp vitalityreturnhere:[DISABLE]dealloc(newmem)unregistersymbol(wied)witcher2.exe+8CA4:fld dword ptr [eax]mov eax,[ebp+08]//Alt: db D9 00 8B 45 08Почему оно не работает? Краха нету, игра не вылетает, но и то, что надо, тоже не делает... Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 25 мая, 2011 Поделиться Опубликовано 25 мая, 2011 ...newmem:vitality:push esipush ebxmov ebx,[witcher2.exe+022BC5F4]mov ebx,[ebx+14]mov ebx,[ebx+14]mov ebx,[ebx+8]mov esi,ebxpop ebxcmp [eax],esipop esijne originalcode... Ссылка на комментарий Поделиться на другие сайты Поделиться
Akama Опубликовано 26 мая, 2011 Поделиться Опубликовано 26 мая, 2011 SER[G]ANT а может и esi тогда использовать не надо? просто cmp eax,ebx ну и тд... Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 26 мая, 2011 Поделиться Опубликовано 26 мая, 2011 Можно всегда сразу с ebx (или др. выбранным регистром) сравнивать. Просто я привык по шаблону делать.После внедрения твоего скрипта, текущее здоровье принимает текущее макс. значение, однако, стоит шевельнуться и герой умирает.только такой вариант у меня нормально работает[ENABLE]alloc(newmem,2048)label(vitality)label(returnhere)label(originalcode)newmem:vitality: push ebx mov ebx,[witcher2.exe+022BC5F4] mov ebx,[ebx+14] mov ebx,[ebx+14] mov ebx,[ebx+8] cmp [eax],ebx pop ebx jne short originalcode push esi mov esi,[witcher2.exe+022BC5F4] mov esi,[esi+14] mov esi,[esi+14] mov esi,[esi+0C] mov [eax],esi pop esioriginalcode: fld dword ptr [eax] mov eax,[ebp+08] jmp returnherewitcher2.exe+8CA4: jmp vitalityreturnhere:[DISABLE]dealloc(newmem)witcher2.exe+8CA4: fld dword ptr [eax] mov eax,[ebp+08] Ссылка на комментарий Поделиться на другие сайты Поделиться
Akama Опубликовано 27 мая, 2011 Поделиться Опубликовано 27 мая, 2011 SER[G]ANT пасиб за подсказку, я тогда по тому же принципу и энергию сделаю и всё остальное... Ссылка на комментарий Поделиться на другие сайты Поделиться
Akama Опубликовано 27 мая, 2011 Поделиться Опубликовано 27 мая, 2011 Не бывает игр без сюрпризов )))Здесь все переменные обрабатываются одной и той же инструкцией по адресу witcher2.exe+8CA4. Имея статические указатели можно творить безумие ))) Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 28 мая, 2011 Поделиться Опубликовано 28 мая, 2011 ...Здесь все переменные обрабатываются одной и той же инструкцией по адресу witcher2.exe+8CA4...В таких ситуациях я всегда заходил в тупик.Как должен выглядеть код, что опции работали независимо друг от друга, хоть и используют одну инструкцию. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 29 мая, 2011 Поделиться Опубликовано 29 мая, 2011 Нужен массив булевых данных(1 байт, значение ноль или один) в выделенной памяти, которые изменяет пользователь по хоткеям.Нужные сравнения и прыжки. Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 29 мая, 2011 Поделиться Опубликовано 29 мая, 2011 это понятно, ноДопустим, у нас есть инструкция "fld dword ptr [eax]", на ее основе нам нужно сделать, к примеру, 3 опции - бессмертие (option1), убийство с 1 удара (option2), бесконечная энергия (option3), чтобы их можно было аткивировать в любом порядке и любом сочетанииПишем скриптoption1: //бессмертиеcmp [flag1],1 // активирована ли опция "Бессмертие" ?jne short option2 //если нет, то проверяем активацию опции "Убийство с 1 Удара"cmp [eax],_health //указатель на здоровье игрока ?jne short option2 //если нет, то переходим к option2mov [eax],63option2: //убийство с 1 удараcmp [flag2],1 // активирована ли опция "Убийство с 1 Удара" ?jne short option3 //если нет, то проверяем активацию опции "Бесконечная Энергия"cmp [eax],_ohk //указатель на здоровье противника ?jne short option3 //если нет, то переходим к option3mov [eax],1option3: //энергияcmp [flag3],1 // активирована ли опция "Бесконечная Энергия" ?jne short originalcode //если нет, то выполняем оригинальный кодcmp [eax],_energy //указатель на здоровье энергию ?jne short originalcode //если нет, то выполняем оригинальный кодmov [eax],63originalcode: fld dword ptr [eax] mov eax,[ebp+08] Меня терзают смутные сомнения по поводу написанного мной... Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 29 мая, 2011 Поделиться Опубликовано 29 мая, 2011 Вроде, может работать ) Сомнения развеиваются на практике в отладчике. Мне лень проверять этот скрипт от и до, т.к. проще прогнать под пошаговой отладкой и даже там же исправлять инструкции и регистры если потребуется переписывать инструкции в реальном времени.Вообще можно попробовать сделать циклом на ассемблере (хорошее упражнение по программированию) И ещё может потребоваться сохранять/восстанавливать регистр флагов pushfd/popfd до и после тела чит-кода. Ссылка на комментарий Поделиться на другие сайты Поделиться
Akama Опубликовано 7 июня, 2011 Поделиться Опубликовано 7 июня, 2011 SER[G]ANT именно так всё и работает, а так себе сделал, нагромождений куча, но главное что пашет... Ссылка на комментарий Поделиться на другие сайты Поделиться
ZOCKIR Опубликовано 28 августа, 2011 Поделиться Опубликовано 28 августа, 2011 ANT' date='27 Май 2011 - 00:04' timestamp='1306440261' post='3117']Можно всегда сразу с ebx (или др. выбранным регистром) сравнивать. Просто я привык по шаблону делать.После внедрения твоего скрипта, текущее здоровье принимает текущее макс. значение, однако, стоит шевельнуться и герой умирает.только такой вариант у меня нормально работает[ENABLE]alloc(newmem,2048)label(vitality)label(returnhere)label(originalcode)newmem:vitality: push ebx mov ebx,[witcher2.exe+022BC5F4] mov ebx,[ebx+14] mov ebx,[ebx+14] mov ebx,[ebx+8] cmp [eax],ebx pop ebx jne short originalcode push esi mov esi,[witcher2.exe+022BC5F4] mov esi,[esi+14] mov esi,[esi+14] mov esi,[esi+0C] mov [eax],esi pop esioriginalcode: fld dword ptr [eax] mov eax,[ebp+08] jmp returnherewitcher2.exe+8CA4: jmp vitalityreturnhere:[DISABLE]dealloc(newmem)witcher2.exe+8CA4: fld dword ptr [eax] mov eax,[ebp+08]Скрипт работает нормально но при переходе в другой уровень игры, (в локации при загрузках) игра вылетает. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 28 августа, 2011 Поделиться Опубликовано 28 августа, 2011 Возможные причины:1) По этому указателю: mov ebx,[witcher2.exe+022BC5F4] mov ebx,[ebx+14] mov ebx,[ebx+14] mov ebx,[ebx+8]где-то на уровнях отсутствует указатель, например, там где [ebx+8] бывает ноль. Чтение этого значения вызовет вылет. Чтобы этого не было, нужно проверять указатели. 2) Причина, может быть вызов перемещённой инструкции:witcher2.exe+8CA4: fld dword ptr [eax]mov eax,[ebp+08] // например код пытался вызвать эту перемещённую инструкцию Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения