Ac1d Опубликовано 30 апреля, 2012 Поделиться Опубликовано 30 апреля, 2012 Nopь Ссылка на комментарий Поделиться на другие сайты Поделиться
ZOCKIR Опубликовано 30 апреля, 2012 Поделиться Опубликовано 30 апреля, 2012 Как и все я тоже предлагаю нопит инструкцию, выбирай нужную инструкцию. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость MachneGin Опубликовано 1 мая, 2012 Поделиться Опубликовано 1 мая, 2012 [ENABLE]alloc(newmem,2048) //2kb should be enoughlabel(returnhere)label(originalcode)label(exit)newmem: //this is allocated memory, you have read,write,execute access//place your code heremov [esp+20],#999 <----- Делать вот так "mov [esp+20],(float)1" нельзя от этого толку малоoriginalcode:mov edx,[esp+20]mov [eax+14],edxexit:jmp returnhere"CryGame.dll"+141F53:jmp newmemnopnopreturnhere:[DISABLE]"CryGame.dll"+141F53:mov edx,[esp+20]mov [eax+14],edx Ссылка на комментарий Поделиться на другие сайты Поделиться
ZOCKIR Опубликовано 1 мая, 2012 Поделиться Опубликовано 1 мая, 2012 MachneGin. под [DISABLE] надо записать dealloc(newmem) засорять в памяти игры за собой не убирать эт очень плохо.NEMO ответ на №20Не во всех скриптах, если в памяти игры создаем новую память в СЕ newmem:. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 1 мая, 2012 Поделиться Опубликовано 1 мая, 2012 Ребята, вы лезете в дебри. Если нужно, чтобы патроны просто перестали отниматься при выстрелах - Нужно:1. Найти адрес патронов какого-либо оружия2. Найти инструкцию, которая выполняется при выстреле (отнимает какое-то количество патронов)3. Забить эту инструкцию нопами безо всяких кейвов.К примеру, на скрине выше (в посте ZOCKIR) такой инструкцией является dec [eax+78] и нопить нужно именно ее, а не ту, которая выбрана на том же скрине. Ибо выбрана "читающая" инструкция, и если ее забить нопами, это может привести к непредсказуемому результату вплоть до вылета игры. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость MachneGin Опубликовано 1 мая, 2012 Поделиться Опубликовано 1 мая, 2012 Скрипт для первой части Crysis (Все патроны и гранаты = 999)[ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048) //2kb should be enoughlabel(returnhere)label(originalcode)label(exit)newmem: //this is allocated memory, you have read,write,execute access//place your code heremov [eax+14],000003E7originalcode:mov eax,[eax+14]pop ecxret 0004exit:jmp returnherecryaction.dll+1C02F:jmp newmemnopnopreturnhere:[DISABLE]//code from here till the end of the code will be used to disable the cheatdealloc(newmem)cryaction.dll+1C02F:mov eax,[eax+14]pop ecxret 0004//Alt: db 8B 40 14 59 C2 04 00 Ссылка на комментарий Поделиться на другие сайты Поделиться
BONU Опубликовано 1 мая, 2012 Поделиться Опубликовано 1 мая, 2012 Странно у MachneGin модуль. адрес cryaction.dll+1C02F:а NEMO "CryGame.dll"+141F53:По разному находили Ссылка на комментарий Поделиться на другие сайты Поделиться
24K Опубликовано 1 мая, 2012 Поделиться Опубликовано 1 мая, 2012 у него наверно не Crysis 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
live_4_ever Опубликовано 3 мая, 2012 Поделиться Опубликовано 3 мая, 2012 NEMO Читай тутор о том как правильно писать скрипты, с нуля. MasterGH хорошо описал. Ссылка на комментарий Поделиться на другие сайты Поделиться
NEMO Опубликовано 12 мая, 2012 Автор Поделиться Опубликовано 12 мая, 2012 Всем привет! Большое спасибо ,что неоставляете мои вопросы,без внимания.(не смотря на то что я некоторое время отсутствовал)Еще раз хочу сказать что речь идет о игре Crysis часть 1(т.к. были рассуждения на эту тему) .Хочу так же сказать что Crysis1 выбран не случайно,т.к. на Crysis1 можно создать свой серв . и сидеть на нем пока не надоест и тебя не удалять за бездействие как например в Crysis 2. Ну а теперь о главном.Я много поэксперементировал и хочу сказать что результатами доволен..Единственное с "этими NOPами" не так все гладко.. После того как включишь скрипт с NOPами все работает,но отключить не получается.Только после выхода из игры.К примеру, на скрине выше (в посте ZOCKIR) такой инструкцией является dec [eax+78] и нопить нужно именно ее, а не ту, которая выбрана на том же скрине. Ибо выбрана "читающая" инструкция, и если ее забить нопами, это может привести к непредсказуемому результату вплоть до вылета игры.Но у меня только одна инструкция..как быть в таком случае? Ссылка на комментарий Поделиться на другие сайты Поделиться
ZOCKIR Опубликовано 12 мая, 2012 Поделиться Опубликовано 12 мая, 2012 После того как включишь скрипт с NOPами все работает,но отключить не получается.Только после выхода из игры.А в CE функция [ENABLE] и [DISABLE] для чего? Ссылка на комментарий Поделиться на другие сайты Поделиться
live_4_ever Опубликовано 13 мая, 2012 Поделиться Опубликовано 13 мая, 2012 Но у меня только одна инструкция..как быть в таком случае?Нажимаешь на эту инструкцию, а потом на кнопку "Показать Дизассемблер" ("Show Disassembler"). Посмотри немного вверх/. Может там будет похожая инструкция dec, sub. Ссылка на комментарий Поделиться на другие сайты Поделиться
NEMO Опубликовано 14 мая, 2012 Автор Поделиться Опубликовано 14 мая, 2012 Всем привет! Не нашел в какой теме про мою ситуацию спросить,решил остановится здесь.(прошу админов не серчать,если решите удалить или перенести,,то пусть по возможности сообщение повисит некоторое время)На следующий день после экспериментов с поиском значений,случилось у меня следующее, Зохожу в игру только начинаю стрелять.Винда выдает ошибку и игра сворачивается,пробовал несколько раз, все одно и тоже,даже после перезагрузки,Затем на некоторое время появился синий экран(экран смерти) ошибки за скринить я не успел.Суть моего вопроса в следующем,в своих скриптах я не прописывал этот пунктdealloc(newmem)Очень полезная штука. Создаем новую память при активации чит а при деактивации очищаем ранее создаваемую память то ист убираем мусор за собой.Может ли быть причина сбоя в этом?W-7 32bit(оригинал) Специально установил 32 битную систему,т.к. на 64 тренер не всегда создавался,выдавало ошибку, Спасибо за внимание. Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 17 мая, 2012 Поделиться Опубликовано 17 мая, 2012 №38, привет!Фишка тут в том, когда именно скрипт выполняет функцию dealloc. Вкратце, как это работает:1. alloc(size) - выделяет в адресном пространстве процесса игры кусок памяти размером size байт, возвращает адрес первого байта (начала куска).Дальше ты пишешь туда код скрипта, всякие mov, dec, inc, fld, nop и прочие команды.Это всё находится в секции enable редактора скриптов. Когда же ты скрипт отключаешь - вызывается секция disable, которая должна привести игровой код к оригиналу (вместо jmp script_address сделать original code, а память, выделенную под скрипт через alloc - очистить). Очищать память - это вообще круто, потому что она не резиновая. Проблема тут в том, что если игра попытается обратиться к памяти, которой нету (её уже очистили) - игра умрёт. Т.е. всегда нужно сначала восстанавливать оригинальную инструкцию и только после этого очищать память под скрипт, выделенную через alloc, т.е. вызывать dealloc.Проверь код скрипта, возможно проблема в этом. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 17 мая, 2012 Поделиться Опубликовано 17 мая, 2012 post 38: "в своих скриптах я не прописывал этот пункт dealloc(newmem). ..Может ли быть причина сбоя в этом?"Нет. Могут быть причины: античиты, вирусы и системные ошибки в Windows или кривые дрова у видеокарты, или перегрев оборудования... У синего экрана есть код ошибки. Было бы возможно яснее если бы ты его привёл. Ссылка на комментарий Поделиться на другие сайты Поделиться
ZOCKIR Опубликовано 17 мая, 2012 Поделиться Опубликовано 17 мая, 2012 NEMO зачем трогать инструкцию mov edx,[esp+20] когда есть mov eax,[eax+14]получается если изменять [esp+20] получаем вылет или что то другое при загрузке карты в игре, при активации. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 18 мая, 2012 Поделиться Опубликовано 18 мая, 2012 Я уже где-то писал, что работать с инструкциями, содержащими регистр ESP нужно очень внимательно и аккуратно. Ибо ESP - это указатель на вершину стэка, а смещение - это, естественно, локальная для функции переменная, или же вообще параметр, переданный в функцию, который, кстати, может быть помечен как константа. При попытке записи в такою "переменную" (так ее условно назовем), или "константу" (выяснить точно это нет возможности), будет стопроцентный вылет из игры.И вообще, по возможности с такими инструкциями лучше не связываться. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 18 мая, 2012 Поделиться Опубликовано 18 мая, 2012 Изменение данных стека и регистров актуально сразу после вызова call. Обычно ближайшие к вершине стека данные фиксированы по смещениям от начала вершины стека. Или использовать изменения данных стека ближе к ret-ам. Как бы там не было надо проводить эксперименты. Ссылка на комментарий Поделиться на другие сайты Поделиться
NEMO Опубликовано 24 мая, 2012 Автор Поделиться Опубликовано 24 мая, 2012 Всем привет!NEMO зачем трогать инструкцию mov edx,[esp+20] когда есть mov eax,[eax+14]получается если изменять [esp+20] получаем вылет или что то другое при загрузке карты в игре, при активации.В одном из видео уроков ( взлом закись азота) , keng перешел на адрес выше по списку.Вот и я поступил так же.просто не задумываясь перешел на другой адрес.Только потом когда поискал значения для патронов и для гранат я стал понимать что так не пойдет .Да и в этой теме не раз писалось почему у меня такой адрес а должен быть другой. Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 24 мая, 2012 Поделиться Опубликовано 24 мая, 2012 Всем привет!В одном из видео уроков ( взлом закись азота) , keng перешел на адрес выше по списку.Вот и я поступил так же.просто не задумываясь перешел на другой адрес.Только потом когда поискал значения для патронов и для гранат я стал понимать что так не пойдет .Да и в этой теме не раз писалось почему у меня такой адрес а должен быть другой.Привет!В том видео я перешёл на инструкцию выше, т.к. там был вот такой код (сейчас пишу псевдокод):fsubr blabla,10 fstp blablaПервой строчкой мы отнимаем из blabla десяточку, второй - сохраняем новое значение blabla. Нужно это затем, что для работы с типом float (грубо говоря) нужно слегка другое, нежели для работы с обычными типами, например, целое 4 байта. В этом случае было бы:sub blabla,10И всё. Суть в том, что не надо делать "так, как кенг в уроке", а надо понимать, что происходит в отладчике, а только потом делать что-то. Попробую скачать игру и выяснить, что у тебя не так. Тэкс. Для начала, решительно не понимаю, откуда вы в своих скриптах взяли float, когда патроны хранятся в виде 4 байта целого. В общем, ищем точное значение, отсеиваем, получаем в конце два адреса, заморозкой выясняем, какой верный, ставим брейкпоинт на запись, получаем такую инструкцию:Не вдаваясь в подробности, edx - новое значение патронов (уже после выстрела), [eax+14] - указатель на эти самые патроны. Эта инструкция работает со всем оружием, так что элементарнейший скрипт:"Crysis.exe"+13ABC7:nopnopnop[DISABLE]"Crysis.exe"+13ABC7:mov [eax+14],edx[ENABLE]Позволяет стрелять из любого оружия без перезарядки и потери патронов, если в обойме есть хотя бы один патрон. Это всё, или ещё какие-то проблемы были? Ссылка на комментарий Поделиться на другие сайты Поделиться
NEMO Опубликовано 29 мая, 2012 Автор Поделиться Опубликовано 29 мая, 2012 Всем привет!Спасибо KENG что так подробно все расписал.Вопросы конечно есть)).Я все не могу понять .почему на пистолете или любом автомате при стрельбе количество патронов не уменьшается( остается не изменным) а на пулемете (Hurricane) убовляется до 1 шт и потом останавливаетя(не кончается).В этой теме писали ,что нужно искать другой адресс,Я попытался найти адрес заного и при поиске я использовал пулемет,но как ни странно все повторилось.Вот скрипт [ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048) //2kb should be enoughlabel(returnhere)label(originalcode)label(exit)newmem:add edx ,#1 - ЗДЕСЬ Я ЭКСПЕРЕМЕНТИРОВАЛ С РАЗНЫМИ ЗНАЧЕНИЯМИ INC MOVoriginalcode:mov [eax+14],edxjmp CryGame.CryModuleGetMemoryInfo+119F2Dexit:jmp returnhere"CryGame.dll"+13B117:jmp newmemreturnhere:[DISABLE]//code from here till the end of the code will be used to disable the cheatdealloc(newmem)"CryGame.dll"+13B117:mov [eax+14],edxjmp CryGame.CryModuleGetMemoryInfo+119F2D//Alt: db 89 50 14 EB 21Может быть дело в том что пулемет имеет в магазине колличество патрон 500(трех значное число) а другое оружие 20 ,40 или 60( двух значное) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения