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

A1t0r

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

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

  • Посещение

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

    39

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

  1. Про создание хоткеев почитай тут, или тут, или тут. Может поможет
  2. Чекбоксы принадлежат элементу tcheat и просто показывают, что чит включён. Активируются по нажатию горячей клавиши, а не курсором мыши. Например, первая строка чита включится при нажатии Home.
  3. Поковырял немного, вот что получилось. Значения ресурсов имеют тип float. После двух отсевов дров остаётся с десяток адресов, но главным получался тот, который начинается с 2XXXXXXX железно. Значение дров получалось выставлять какие угодно. Получилось проследить небольшой путь до корневого указателя. 1307D4B0=>[...]=>[...+0C]=>...+A0 = ... - дрова Значение 1307D4B0 получалось из кода: lua100.luaopen_string+810 - 55 - push ebp lua100.luaopen_string+811 - 8B EC - mov ebp,esp lua100.luaopen_string+813 - 8B 55 08 - mov edx,[ebp+08] lua100.luaopen_string+816 - 8A 4A 07 - mov cl,[edx+07] lua100.luaopen_string+819 - 8B 52 10 - mov edx,[edx+10] lua100.luaopen_string+81C - B8 01000000 - mov eax,00000001 lua100.luaopen_string+821 - D3 E0 - shl eax,cl lua100.luaopen_string+823 - 8B 4D 0C - mov ecx,[ebp+0C] lua100.luaopen_string+826 - 48 - dec eax lua100.luaopen_string+827 - 23 41 08 - and eax,[ecx+08] lua100.luaopen_string+82A - 8D 04 80 - lea eax,[eax+eax*4] lua100.luaopen_string+82D - 8D 04 82 - lea eax,[edx+eax*4] ... lua100.luaopen_string+83F - 8B 40 10 - mov eax,[eax+10] <== здесь 1307D4B0 Дальше просто терпения не хватило) Заблудился в луа библиотеках.
  4. Нет, просто каждый день на форуме кто-то просит помощи. Или просто для себя) Посмотри, например, в вики Fasm. Там примеры простых программ есть
  5. Собачкам и здоровякам походу прописывается много здоровья Туда, это куда?
  6. Попробовал трейнер пользователя keng из 200 строк exe'шник получился на 3,50 КБ (3 584 байт)
  7. На CE тоже хорошо, просто у тебя здесь обёртка Lua+автоасм, а фасм он сам себе луа и асм. Луа всё-таки скриптовой, когда не нужно компилить прогу, а просто менять открытые тексты. CE всё равно компилит exe'шник и никаких .lua я рядом не видел) FASM работает и с 32 и с 64 Визуального редактора не видел, однако вызовы на создание окон, кнопок и др. есть
  8. Пишу пока с помощью CE, сейчас хочу писать на FASM'e. Просто провожу исследования, у меня уже на десяток игр набралось. Статьи пишу для сайта. Помогаю если знаю) Да, и ещё программки ломаю, но здесь писать кажись запрещено)
  9. В дизасме CE есть подсказки, fstp - store single - сохранение из FPU регистра в память, fld - load floating point value - загрузка значения в FPU. Порядок такой сначала fld, потом операции типа fadd,fsub,fsubr, а потом сохранение fstp.
  10. Ок Если по адресу 004C53A6 написать fadd вместо fsubr враги и игрок будут лечить друг друга, вот она СИЛА исцеления)))
  11. Спасибо здоровенное, было самому интересно. Скорее всего модификаций не будет. Что-нибудь другое поломать найдётся)
  12. Почему всем так нравится использовать aobscan в скриптах? здесь же код статичный) только чтобы понимать где что?
  13. Процесс занесения в структуру: 1. Ищем инструкцию, которая модифицирует здоровье врагов и наше 004C53A9 - D9 5D 70 - fstp dword ptr [ebp+70] 2. В дизасме CE жмём правой кнопкой на инструкцию и выбираем Find out what addresses this instruction accesses Теперь когда инструкция будет выполняться(нас бьют или мы их) будет писаться адрес по которому пишется значение 3. Интсрукция обращается к ячейке ebp/ebx + 70. Значит начало структуры 1128E670-70=1128E600, и др. 11204400 11308A00. 4. В окне дизасма меню Tools->Dissect data/structures. В адрес заносим 1128E600. Меню Structures->Define new structure. Оставляем unnamed structure. Yes. Вводим размер структуры в байтах в десятичной системе. Вданном случае можно 1024. (Потом можно менять) Добавляем другие адреса: меню File-> Add extra address, 11204400. И ещё раз 11308A00. Листаем ниже, а вот и наша 4: Вопросы? Спроси что полегче)) Не выяснял) Можешь сам поискать, теперь знаешь как, ставишь слежение на запись в здоровье собаки, а дальше дело техники.
  14. Не знаю как без скриптов, но здоровяки и собачки мочатся с комбо 30-60, либо гранатами.
  15. Можно на ты) где-то читал, что со времён фидо такие правила пошли) Просто применил первую заплатку, поставил отслеживание инструкций, которые пишут по этому адресу, и дал врагам себя сильно побить. Вот она и выплыла. Можно было через поиск инструкций, но здесь они оказались разные ebp и ebx. Проанализировал в CE и не сохранял. Если очень надо, то да. Гранаты, как оказалось не входят в эту структуру или просто не нашёл связи. Обычным поиском отсевом типа byte. Тебе нужен процесс занесения в структуру?
  16. Сейчас пробую на этой) Кажись поддалось) В структуре по смещению +128h у Шенка всегда 4, у противников 0. [ENABLE] alloc(newmem,2048) label(returnhere) label(originalcode) label(exit) newmem: cmp [ebp+128],4 je exit originalcode: fstp dword ptr [ebp+70] exit: call 0040E350 jmp returnhere 004C53A9: jmp newmem nop nop nop returnhere: [DISABLE] dealloc(newmem) 004C53A9: fstp dword ptr [ebp+70] call 0040E350 Как и в прошлый раз не доломал я и d0c. Здоровье всё равно отнималось, это происходило из-за ранений от комбо атак противников. Заплатка: [ENABLE] alloc(newmem2,2048) label(returnhere2) label(originalcode2) label(exit2) newmem2: cmp [ebx+128],4 je exit2 originalcode2: fstp dword ptr [ebx+70] exit2: fld dword ptr [esi+000000D0] jmp returnhere2 004C6B1F: jmp newmem2 nop nop nop nop returnhere2: [DISABLE] dealloc(newmem2) 004C6B1F: fstp dword ptr [ebx+70] fld dword ptr [esi+000000D0] Прошёл весь первый уровень и часть второго на макс. уровне сложности, перезапускал игру - всё работает нормально) P.S. 004C6B37 - D9 5B 70 - fstp dword ptr [ebx+70] - лечение 004841E4 - FF 48 10 - dec [eax+10] - уменьшение гранат P.S.S. Можно было попробовать заморозить гранаты и привязываться к ним, но память под них в данном случае выделяется в другом месте. Так что не вариант) Скрипт 2 в 1 [ENABLE] alloc(newmem,2048) label(returnhere) label(originalcode) label(exit) label(returnhere2) label(originalcode2) label(exit2) newmem: cmp [ebp+128],4 - нет ранений от атак je exit originalcode: fstp dword ptr [ebp+70] exit: call 0040E350 jmp returnhere newmem+30: cmp [ebx+128],4 - нет ранений от комбо-атак je exit2 originalcode2: fstp dword ptr [ebx+70] exit2: fld dword ptr [esi+000000D0] jmp returnhere2 004C53A9: jmp newmem nop nop nop returnhere: 004C6B1F: jmp newmem+30 nop nop nop nop returnhere2: [DISABLE] dealloc(newmem) 004C53A9: fstp dword ptr [ebp+70] call 0040E350 004C6B1F: fstp dword ptr [ebx+70] fld dword ptr [esi+000000D0] Теперь самое интересное: если сделать гранаты бесконечными, то после гибели персонажа скрипт не работает)))
  17. Вот что нашлось, если с английским хорошо: alloc(allocname,sizeinbytes, preferedregion OPTIONAL) //same as label, but allocates the memory it points to itself Похоже на адрес, из которого будет совершён прыжок в выделенную область. И адрес 5 байтовый.
  18. Вряд ли ID персонажа имеет тип float, нужно искать целое 1-4 байт. Можно, если привязаться к какому-нибудь уникальному параметру, который есть только у героя. Например, это мог быть опыт, кол-во гранат, патронов и др. Эти параметры не важны для противников, т. к. они бесконечны или не учитываются.
  19. Я бы сделал так: для начала поискал инструкцию(или функцию в зависимости от сложности игры), которая устанавливает новые координаты игрока. Возможно там будет переход, который и надо занопить. Или, как вариант, есть функция, которая вычисляет новые координаты с учётом столкновений с препятствиями.
  20. d0c, здоровье всё равно отнимается в этом скрипте или в каком-то другом месте. см. пост #9 (float)60 у Шенка всегда?
  21. Кое-что получилось) Здоровье находится по указателям [00B6A2C0]=>[...+3C0]=здоровье [0112F588]=>[...+3C0]=здоровье Скрипт на бессмертие: [ENABLE] alloc(newmem,2048) label(returnhere) label(originalcode) label(exit) newmem: push eax mov eax, [00B6A2C0] cmp esi, eax pop eax je exit originalcode: fst dword ptr [esi+000003C0] exit: jmp returnhere 00492345: jmp newmem nop returnhere: [DISABLE] dealloc(newmem) 00492345: fst dword ptr [esi+000003C0] Дальше решил найти опыт 01118BC0 и 01C6CEC4. При прямой записи игрок погибал как писал MaeStR0. Решил найти откуда вызывается функция уменьшения здоровья. Вот адреса вызовов: 00430E2C, 00446C86, 0049E599 00446C86 - стандартный вызов при ранении 0049E599 - не встречалось 00430E2C - при читерстве вызывается эта Выше был условный переход, сделал так: 00430E15 - E9 D4000000 - jmp 00430EEE 00430E1A - 90 - nop Игра пока не ругалась, бессмертие работает, враги дохнут, опыт начисляется честно и не очень) и уровень повышается. Пока всё)
  22. Создатели Cheat Engine оказывается с юмором : Сейчас поломаем UnEpic)
  23. Действительно не выспался) movss [ebp-1C],xmm6 function: mov [ebp-1C],(float)1 У тебя всегда будет выполняться function, т.к. нет прыжка через неё. Сделай: movss [ebp-1C],xmm6 jmp exit function: mov [ebp-1C],(float)1 exit: jmp returnhere Если же ты говорил по поводу нерабочего перехода на je function, то всё работает нормально. 00 01 не переходит, 00 00 переходит.
×
×
  • Создать...

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

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