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

A1t0r

Ветераны
  • Постов

    351
  • Зарегистрирован

  • Посещение

  • Победитель дней

    39

Весь контент A1t0r

  1. Этот кусок правильный, только допиши e на конце jmp returnhere, метку originalcode и её объявление можешь убрать и если на выходе после метки exit сразу переход на returnhere можно сделать так: [убрать объявление метки exit] ... mov edx,[ebp-54] jmp returnhere branch2: mov [esi+68],(FLOAT)100 mov edx,[ebp-65] jmp returnhere Надеюсь куда return'ить уже написано)
  2. если EDF+47 РАВНО 50 ТО... А ЕСЛИ НЕ РАВНО 1 ТО ВЫПОЛНЯЕМ ДРУГУЮ ИНСТРУКЦИЮ ТИПА... вот это не понял, два противоречивых сравнения, напишу ==50/ !=50 орфография сохранена) cmp [EDF+47],#50 jne branch2 mov DSD+54 //если ==50 mov DFT+78 jmp exit branch2: //если !=50 mov GGR+76 mov FER+84 exit:
  3. В общем-то да. Здесь путей несколько в зависимости от целей. 1. Если параметр (не)равен, то выход. 2. Если параметр (не)равен, то выполняем свои инструкции и выход. 3. Если параметр (не)равен, то выполняем свои инструкции и далее оригинальные, выход.
  4. Тут всё просто. Хорошо если сразу нашёлся правильный параметр. Например, по адресу eax+1C у игрока всегда 1, а у противников любое другое число, тогда скрипт для уменьшения здоровья только у врагов выглядит так: cmp [eax+1C],1 je exit вычитание здоровья exit: ...
  5. А там глядишь и до ассемблера дорастёшь)
  6. А нужные инструкции, которые загружают значения координат XYZ соответственно: 004842EB - DD 00 - fld qword ptr [eax] 004842F3 - DD 40 08 - fld qword ptr [eax+08] 004842F9 - DD 40 10 - fld qword ptr [eax+10] Если править значения double по адресам eax 0 +8 +10 происходит перемещение в заданные мировые координаты. Можно писать телепорт) Всё морозится нормально в типе double
  7. Нажал кнопку и принудительно выполнил какую-либо инструкцию. На примере с телепортацией keng'а: нажал кнопку сохранил координаты, нажал другую - загрузил, и ждать не надо пока игра пройдёт цикл и обратится к нужной инструкции. Или я не понял вопроса)
  8. Или можно использовать хоткеи, а в обработчик нажатия написать процедуру записи нужного значения по адресу либо на чистом lua, либо Lua+AA. Естественно нужно знать всю цепочку указателей на значение, повезёт если значение статичное)
  9. Всё просто, ищешь значение float. Находишь: WormsMayhem.luaopen_table+3293B5 - D9 9E F0000000 - fstp dword ptr [esi+000000F0] Чуть выше заменяем WormsMayhem.luaopen_table+3293A7 - DC 35 F8A58100 - fdiv qword ptr [WormsMayhem.MoviePlayerPC::MoviePlayerPC+5C045] На умножение на 0(0 берём из кода чуть далее): WormsMayhem.luaopen_table+3293A7 - DC 0D AC237600 - fmul qword ptr [WormsMayhem.luaopen_table+32940C] Таким образом при каждом вычислении значения перегрева он умножается на 0 ))) Результат: И сама таблица Worms Ultimate Mayhem - Deluxe Edition.CT
  10. Идея уже появилась, но давай через лилчные сообщения делать, а то унас получится тема на несколько страниц. А потом опишешь свои шаги в этой теме неспеша.
  11. Стирай Text из него Теперь, чтение из памяти будет производиться по нажатию кнопки?
  12. Ты будешь внедрять бессмертие в игру, а я бессмертие в виндовый калькулятор))) Так проще) У тебя появилась стандартная форма с хоткеями справа. Внешний вид менять не будем. Кидай на форму элемент Edit
  13. Зачем тебе два окошка? Там и одного достаточно. Я как-то делал форму и эдитом в который можно было писать название процесса ручками и коннектиться к нему. Это не намного сложнее)
  14. Почти попал. Обрати внимание на readFloat(address) и writeFloat(address,value). read'ом читаешь и заносишь в объект класса edit(для возможности редактирования) будет так ИМЯ_ОБЪЕКТА.Text = readFloat(address)
  15. Я пробовал ковырять недавно обсуждаемую Vietcong 2. Там углы поворота в радианах. Причём они не зациклены - значение накапливается. Нужно брать остаток от деления на 6.315. Так что тебе попался лёгкий случай) Половина дела есть. Теперь ищи как вычисляются значения для инструкций пишущих эти координаты. Там где-то должен использоваться угол поворота персонажа, который тоже для начала надо найти. Можно потренироваться, как в своё время делал keng, на кошках Crimsonland. Только там, насколько помню, был скрипт на телепорт чисто по координатам X или Y. Batman Arkham City это конечно хорошо, но можно сначала отработать теорию на простой практике.
  16. Насколько я понимаю игра в 3D. Да даже если и в 2D, то у каждого объекта мира должны быть локальные координаты. Например, персонаж смотрит вперёд по оси X, верх это пусть Y, а право - Z. Тогда тебе нужно получить доступ к локальной оси X и умножить (X,Y,Z) на (расстояние,0,0). Примерно так это выглядит в Unity3D. Здесь должно быть что-то похожее) Если нет никакой локальной системы, надо знать угол поворота персонажа и положение в глобальной системе. Просто покрутись на одном месте, чтобы найти направление взгляда персонажа. Угол будет либо в градусах, либо в виде единичного вектора. Тогда формула будет такой: (новоеX,новоеY,новоеZ) = (староеX,староеY,староеZ) + единичный_вектор_поворота3 * дистанция_прыжка Примерно так) Это только идея, вроде должно работать
  17. Нужно не [color=#0000FF][font=helvetica, arial, sans-serif]push edx [/font][/color] [color=#0000FF][font=helvetica, arial, sans-serif]push esp[/font][/color] [color=#0000FF][font=helvetica, arial, sans-serif]pop edx[/font][/color] [color=#0000FF][font=helvetica, arial, sans-serif]pop esp[/font][/color] Таким образом кладётся в стек edx, сверху esp, а потом в edx загружается верхнее значение из стека, т.е. esp. Поэтому меняются местами значения регистров и игра вылетает Нужно так push edx lea edx,dword ptr [esi+000000FC] push esp mov esp,[DarkSoulsII.exe+FB3E3C] mov esp,[esp+74] lea esp,[esp+fc] cmp edx,esp pop esp pop edx je returnhere Я писал ранее, что можно использовать pusha/popa. Исправляюсь: эти команды работают с 2 байтами регистров(ax,bx...). Для eax,ebx... нужно использовать pushad/popad
  18. Да и значение edx и esp запарывается, т.к. pushf их не сохраняет. Используйте pusha/popa Есть пара вопросов. 1. Ориганальный код в кейве помещает 0, а в исходнике ecx. Опечатка? originalcode: mov [esi+000000FC],0 ... [DISABLE] dealloc(newmem) "DarkSoulsII.exe"+1BB521: mov [esi+000000FC],ecx 2. Что такое Ь ? [[[DarkSoulsII.exe + FB3E3C] +74] + Ь] Или всё-таки lea esp,[esp+fc] < FC ? 3. Я всё же пока newbie, но pushf сохраняет флаги, в том числе нужный ZF. Но cmp edx,esp popf je returnhere popf загружает старое значение флага до его использования и cmp здесь силы не имеет. 4. Метка originalcode у вас не используется. Можно убрать. Значения регистров esp и edx запарываются, т.к. pushf/popf сохраняют и загружают только регистр флагов. Используйте тогда pusha/popa
×
×
  • Создать...

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

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