Chucky Опубликовано 18 мая, 2011 Поделиться Опубликовано 18 мая, 2011 Пытаюсь взломать общее число патронов в игре Singularity. С помощью TSearch ставлю бряк - находится инструкция 006FCBC8 mov [edi],ecx. Создаю скрипт:offset 006FCBC8jmp 00410A79nopoffset 00410A79mov ecx,0x63mov [edi],ecxjmp 006FCBCD00410A79 - этот адрес я нахожу с помощью CodeCaver.После того, как активирую этот скрипт и перезаряжаюсь - игра просто-напросто вылетает. Хотелось бы узнать почему это происходит и как исправить скрипт, чтоб этого не возникало? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 18 мая, 2011 Поделиться Опубликовано 18 мая, 2011 Я ошибок не увидел.1. Все ошибки проверяются в отладке. Научитесь сами проверять ошибки с помощью отладчика Cheat Engine или другого и ~99% не придётся ни у кого спрашивать почему скрипт не работает.2. Просто к сведению TSearch устаревшая программа. Некоторые инструкции неправильно дизассемблирует, TSearch не умеет обращаться к адресам типа "game.dll + смещение", что бывает важно.3. Ищем в интернете скрипты и на их основе делаем свои Cheat Engine для тренировки:[ENABLE] aobscan(_faddress,8bxxxxxxxxxxxxxxc2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8bxx8bxx8b) alloc(_newmem,2048) label(_returnhere) label(_originalcode) _newmem: mov dword ptr [ecx+eax*4+000002ec],63 _originalcode: mov eax,[ecx+eax*4+000002ec] jmp _returnhere _faddress: // 00FAE657 = GImage::GImage+20CDD7 jmp _newmem nop nop _returnhere: [DISABLE] aobscan(_faddress,9090xxc2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8bxx8bxx8b) _faddress-5: mov eax,[ecx+eax*4+000002ec] dealloc(_newmem)Я писал про способ, когда aobscan(_faddress,9090xxc2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8bxx8bxx8b) под "[DISABLE] " можно не писать. Ссылка на комментарий Поделиться на другие сайты Поделиться
Chucky Опубликовано 18 мая, 2011 Автор Поделиться Опубликовано 18 мая, 2011 Мне просто кажется, что в CE сложно писать скрипты.. Ссылка на комментарий Поделиться на другие сайты Поделиться
Chucky Опубликовано 18 мая, 2011 Автор Поделиться Опубликовано 18 мая, 2011 А вообще, как использовать эти скрипты в трейнере? Как привести их в байты для записи? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 18 мая, 2011 Поделиться Опубликовано 18 мая, 2011 Мне просто кажется, что в CE сложно писать скрипты..Тут я спорить не в праве, но поясню. Преодоление трудностей возможно окупится освоением новых возможностей Cheat Engine в будущем. Не пишите сложных скриптов по началу. Пишите простые[ENABLE]label(метка возврата)Адрес инструкции:// изменяем инструкции на прыжок// нопы если нужныметка возврата:Адрес вашего кейва:// новые инструкции// оригинальный код если нужен// прыжок на метку возврата[DISABLE]Адрес инструкции://восстанавливаем инструкцииПочти всё тоже самое что и в Tsearch. Далее лучше писать скрипты не с кейвом в памяти игры, а с участком новой выделенной памяти. Потом можно писать скрипты с проверочными байтами (как было во втором посте этой темы). Затем можно перейти на LUA поддержку. Если всё делать постепенно и кропотливо, то это реально освоить.А вообще, как использовать эти скрипты в трейнере? Как привести их в байты для записи?Если нужно сгенерировать байты, то копировать их можно только в ручную из дизассемблера при выключенном и включённом скрипте. Выделить байты или инструкции и нажать CTRL+C.НО. Версия CE 5.6 позволит сгенерировать терйнеры только на основе скрипта без особо сложных манипуляций размером ~800кб. CE 6.0 не умеет генерировать трейнеры. CE 6.1 Beta 3 умеет (её можно скачать в теме реализов). Пусть размер трейнера будет большой. Если Вы не согласны, то придётся делать свой трейнер на языке программирования. Даже в этом случае скрипт выше будет много меньше любого трейнера.Вообще на мой взгляд лучше пользоваться скриптами LUA и генерировать форму трейнера с его помощью. В этом случае пользователя должна быть установлена CE требуемой версии.Или на худой конец, если Вам кажется сложным писать на LUA, то можно пользоваться только скриптами автоассемблера Cheat Engine. И советую посмотреть видео на нашем форуме. На видео есть информация о том как и где писать скрипты, и как генерировать трейнеры. Ссылка на комментарий Поделиться на другие сайты Поделиться
Chucky Опубликовано 19 мая, 2011 Автор Поделиться Опубликовано 19 мая, 2011 Дак то есть получается, если я например делаю трейнер на Делфи и использую функцию WriteProcessMemory, то мне не удастся использовать скрипты из СЕ (так например, как из TSearch после нажатия кнопки Tmk в EI). Так? Ссылка на комментарий Поделиться на другие сайты Поделиться
Ac1d Опубликовано 19 мая, 2011 Поделиться Опубликовано 19 мая, 2011 Я тоже фан TSearch, а в CE знаю как искать дыры для инъекции и адреса Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 19 мая, 2011 Поделиться Опубликовано 19 мая, 2011 Я уже неоднократно говорил, но повторюсь еще раз. В скриптах TSearch или CE инструкции кейва ВСЕГДА должны писаться ДО забивания прыжком на кейв оригинальной инструкции. В некоторых случаях это может быть не принципиально, но в большинстве других случаев, из-за того, что забивание оригинальной инструкции прыжком на кейв прописано ДО самого кейва, в память игры этот прыжок пропишется до того, как будут прописаны, собственно, инструкции кейва, что гарантированно вызовет вылет из игры. Отсюда вывод - правильная очередность записи в скрипт делается так:caveaddress:new instructionsoriginal instruction(s)jmp backtogamecodeoriginalgameaddress:jmp caveaddressnop (если нужен) Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 19 мая, 2011 Поделиться Опубликовано 19 мая, 2011 О , я эту ошибку не увидел. Во всяком случае я бы её сразу определил при пошаговой отладке. Так что это для меня пустяк.Дак то есть получается, если я например делаю трейнер на Делфи и использую функцию WriteProcessMemory, то мне не удастся использовать скрипты из СЕ (так например, как из TSearch после нажатия кнопки Tmk в EI). Так?Да, не получится. Т.е. в CE надо идти в дизассемблер и копировать байты вручную. Ссылка на комментарий Поделиться на другие сайты Поделиться
Chucky Опубликовано 19 мая, 2011 Автор Поделиться Опубликовано 19 мая, 2011 О , я эту ошибку не увидел. Во всяком случае я бы её сразу определил при пошаговой отладке. Так что это для меня пустяк.Да, не получится. Т.е. в CE надо идти в дизассемблер и копировать байты вручную.А можно небольшой видеоурок по этому или хотя бы скрин? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 19 мая, 2011 Поделиться Опубликовано 19 мая, 2011 Ребят, извиняйте, конечно, но уж если вы самостоятельно не можете скопировать цепочку байтов из дизассемблера, то что вы вообще в геймхакинге делаете? На нашем ресурсе мы помогаем осваивать геймхакинг новичкам, но для этого должна быть хоть какая-то элементарная подготовка.Так что это для меня пустяк.Для тебя пустяк. Для меня тоже. Для многих пустяк. Но для новичка это может стать непреодолимой проблемой, когда, вроде бы, все сделал правильно, даже по статье или уроку, а вот поди ж ты, игра вылетает, хоть убей. Ссылка на комментарий Поделиться на другие сайты Поделиться
Chucky Опубликовано 19 мая, 2011 Автор Поделиться Опубликовано 19 мая, 2011 MasterGH, то есть чтобы мне скомпилировать трейнер в Делфи и получить бесконечные патроны, нужно в 2 адреса прописать подчеркнутые байты? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 20 мая, 2011 Поделиться Опубликовано 20 мая, 2011 Точно ответить не могу. Во-первых это окно прервавшихся инструкций, а нужно окно дизассемблера на адресе внедрения (адрес на котором ты будешь делать прыжок).Значит нужны байты при деактивации (до создания прыжка на адресе внедрения) и байты активации (сам прыжок с нопами если нужны и тело чит-кода). Выделяешь инструкции в дизассемблере, нажимаешь CTRL+C и выбираешь копирование какое нужно (адреса + байты + инструкции (лучше выбрать байты)) Ссылка на комментарий Поделиться на другие сайты Поделиться
Chucky Опубликовано 22 мая, 2011 Автор Поделиться Опубликовано 22 мая, 2011 Для бесконечных патронов делаю скпипт в TSearch, но игра вылетает.. Вот скрипт:offset 005CD063mov dword ptr [ecx+eax*4+000002ec],0x63mov eax,[ecx+eax*4+000002ec]jmp 00FAE651offset 00FAE657jmp 005CD063nop Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения