-
Постов
351 -
Зарегистрирован
-
Посещение
-
Победитель дней
39
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент A1t0r
-
Бесконечные вещи (использовать на свой страх!!!):
-
Вот что получилось Risen 3 - Titan Lords CharModer by A1t0r (CT and EXE).rar
-
Ну чтоб уж так всё серьёзно было, чтобы совсем не за что зацепиться, бывает чертовски редко. Можно цепляться не за конкретное число, а, например, у игрока отлично от 0 у врага 0. Или в структуре игрока указатель ведёт не в пустоту P->00000000. Что-нибудь да можно придумать.
-
Так вот в 8 посте пример О_о Risen докачался, ща ломанём) Указатель на героя [[[Risen3.exe+DD6CC0]+1C]+1С]+X X: +14 - ближний бой +18 - дальний бой +1C - проворность +20 - влияние +24 - выносливость +28 - Ловкость +2C - магия +30 - дух +34 - число+20 = макс. здоровье +38 - здоровье +3C - слава +40 - репутация Скрипт на бессмертие(вариант с записью 100 здоровья):
-
В этом случае всегда пишешь по адресам близким к нулю ebp в данном случае не больше размера структуры. И надо всё-таки фильтровать что есть что.
-
Так как mov [esi+ebp*4+10],edi занимает 4 байта, то захватится ещё одна инструкция. Также предполагается, что инструкция работает только со структурой игрока(что маловероятно) Примерно так: [ENABLE] alloc(newmem,2048) label(returnhere) label(life) label(points) newmem: cmp ebp,0 //например ebp = 0 - жизни, 1 - очки je life cmp ebp,1 je points mov [esi+ebp*4+10],edi ещё_одна_инструкция jmp returnhere life: //что-то делаем с жизнями //mov [esi+10],#100 jmp returnhere points: //что-то делаем с очками //mov [esi+14],#10 jmp returnhere адрес_инъекции: jmp newmem нопы_будут returnhere: [DISABLE] dealloc(newmem) адрес_инъекции: mov [esi+ebp*4+10],edi ещё_одна_инструкция Кривовато, но смысл правильный)
-
Давай, только чётко опиши задачу и CT-шку.
-
Скрипт будь он на луа или автоассемблере тоже можно подсадить в то же место.
-
Абсолютно без разницы, ведь скрипт никакой не присоединяется. Я ставил Toggle Freeze. Мы пишем его в тело сами. Если совсем плохо, кинь в личку я посмотрю.
-
В окошке на скрине написано 11111111111, убери одну 1111111111 тогда попробуй так writeInteger(0x047415D0, tonumber(CETrainer_CHEAT2.EditValue)) Если не поможет, то первые два хоткея работают? У меня lua распознавал и переводил текст из окна в число
-
Это слишком большое число. Integer это 4 байта. Убери одну единичку
-
Да. И исправь номер writeInteger(0x047415D0, CETrainer_CHEAT2.EditValue) это у тебя №2 чит
-
Передвинь на одну строку ниже
-
Как таковых обработчиков для этого элемента написать нельзя, так написано в справке. Но можно дополнять то что создал CE автоматически. С самого начала. Открываем CE и присоединяемся к процессу. Добавляем пустой адрес в таблицу: Add address manually, OK. File->Generate generic... Add Hotkey. Предложит нам единственный пустой адрес. Забиваем комбинацию клавиш, эффект и описание. Добавили, теперь перейдём к визуальному редактору и добавим для нашего чит-элемента editbox. Теперь обязательно надо сохранить всё это дело в виде CT. В окошке Trainer generator выбираем тип CT и генерить трейнер. После этого активируем главное окно CE и жмём Ctrl+Alt+L. Появится скрипт формы с настройками чит-элемента на lua. Нас интересует строка cheatcomponent_setActive(CETrainer_CHEAT0, isActive) CETrainer_CHEAT0 - это имя элемента. Чтобы получить доступ к его эдитбоксу лезем в справку и видим свойство Editvalue:string - The string of the optional edit field Тогда пишем на следующей строке например так writeInteger(0x037CF898, CETrainer_CHEAT0.EditValue) Я писал введённое значение из эдитбокса по адресу 0x037CF898(в качестве подопытного был калькулятор)))) Хоть и собрано "на коленке", зато работает)
-
Процесс вписал, там где название процесса? например openProcess("calc.exe")
-
А можно поконкретнее: что в esi(скорее всего указатель на игрока), в ebp(номер 4-байтовой ячейки? с жизнями и очками?), и 2F4 - это ebp*4? В идеале - что за игра?)
-
В главном окне CE: меню Table->Show cheat Table lua script(или Ctrl+Alt+L) туда скопируй скрипт, заполни что я сказал и выполни. Появится формочка с полем, кнопкой и событием привязанным к ней.
-
Переписал проще. Заполни в 3 местах: название процесса и адрес с патронами 2 раза и будет тебе счастье) Form = createForm(true) Btn1 = createButton(Form) Edit1 = createEdit(Form) control_setCaption(Form, 'trainer') control_setCaption(Edit1, '') control_setCaption(Btn1, 'Write') control_setPosition(Btn1, 50, 40) control_setPosition(Edit1, 50, 5) control_setSize(Form, 180, 80) openProcess(--[["название процесса"]]--) form_centerScreen(Form) function Save() ammo = control_getCaption(Edit1) check = readInteger(--здесь пишем адрес в виде'[[006313a0]+4b8]+4' ) if (check ~= nil) then writeFloat(--здесь пишем адрес в виде'[[006313a0]+4b8]+4' , ammo) else messageDialog('Не найден процесс или неверная цепочка указателей!', 1, 2) end end function CloseTrainer() --closeCE() return caFree end form_onClose(Form, CloseTrainer) control_onClick(Btn1, Save) form_show(Form) На визуальный редактор забил сразу же, как выучил функции из main.lua)
-
Что-то похожее написал Vlad2 здесь. Допилишь под свои цели чуток)
-
Заготовка под трейнеры для CE на Lua
A1t0r опубликовал тема в Создание трейнеров в специальных студиях
Решил сделать для себя заготовку под трейнеры для CE. Для не особо привередливых подойдёт. Весь скрипт состоит из условных двух частей: таблицы с параметрами и функциями контролов(пока только форма и чекбокс) и циклы, которые по заданным параметрам создают объекты и устанавливают соответствие между событием и их обработчиками. Для примера на форме расположены 2 чекбокса. По умолчанию трейнер присоединятся к калькулятору ("calc.exe"), что попалось))) Если запущен калькулятор, то при установке и снятии галочек выскакивают сообщения. При завершении процесса калькулятора манипуляции с чекбоксами не будут иметь эффектами. Если открыть calc снова, то перезапуск трейнера не потребуется. Версия 0.1. Нужно будет допиливать, а возможно и перепиливать) Trainer template v0.1.CT -
Хотелось бы дополнить. Версия та же. Разброс пуль(прицел не увеличивается)
-
Тебе нужно искать ecx. В esi должен находиться номер ячейки(0, 1, 2 и т.д.). Такая адресация используется для доступа к адресу или количеству по номеру персонажа, существа в армии, ресурса и др. Например ecx = 01234500 начало стека армии персонажа, тогда при esi = 0, [01234500] - первый монстр, esi = 1, [01234504] - 2-ой и т.д. Также может использоваться такой приём для перезаписи большого массива данных: ... mov ecx,4 mov esi,XXXXXXXX mov edi,YYYYYYYY repe movsb ... В ecx заносится кол-во перезаписываемых байт. esi - адрес откуда пишем(считывание)(s - source, источник), edi - адрес куда пишем(запись)(d - destination, назначение), repe movsb - повторить перезапись ecx байта с адреса esi в edi. Можно также перемещать 2 байта(word, слово) - movsw, и 4 байта(double word, двойное слово).