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

Лидеры

Популярный контент

Показан контент с высокой репутацией 13.08.2015 во всех областях

  1. Там где видишь cmp там и есть так называемый "фильтр". Мне не известно как автор скрипта сделал этот фильтр. По скрипту не поймешь, надо сравнивать структуры. Сравнение структур в этой теме Как найти идентификатор игрока ( ID players ) [ENABLE]alloc(newmem,512)label(returnhere)label(exit) aobscan(aob_BaseCode, 89 11 8B 50 04 89 ?? ?? B9 ?? ?? ?? ?? 39 ?? ?? 7C 6A)// только автору известно, почему сигнатура такая длинная. Возможно автор экспериментировал или решил подстраховаться и вручную добавил сигнатуру. Знаки вопроса означают, что байт могут быть любыми.label(BaseCode)registersymbol(BaseCode)//регистрировать метку BaseCode нужно чтобы запомнить адрес сигнатуры. Для этого надо распожоложить BaseCode под меткой aob_BaseCode и при деактивации скрипта использовать BaseCode (смотри метку aob_BaseCode и под ней BaseCode). Этот способ придумал DarkByte автор Cheat Engine. Ну или кто-то из его окружения. Почему именно так? Я не знаю. Просто так и все. globalalloc(t_GodMode,4)// Я тоже не знаю, зачем выделять лишнюю память. Вместо globalalloc можно было написать две строки label(t_GodMode) и registersymbol(t_GodMode). Был бы тот же самый эффект. Наверно, автор решил, что ему так удобнее. Т.к. метки сами регистрируются и возможно эти метки никогда не удалятся.globalalloc(t_InfAbility,4)//аналогичноglobalalloc(t_InfMoney,4)//аналогичноlabel(GodMode1)label(GodMode2)label(InfAbility)label(InfMoney) t_GodMode:dd 0// это начало нового куска памятиt_InfAbility:dd 0// это начало еще одного нового куска памятиt_InfMoney:dd 0// это начало и еще одного нового куска памяти (похоже памяти так много, что совсем пофиг на неё) newmem:mov [ecx],edx // под newmem начался код инъекции для этого скрипта, другие скрипты не видят newmem. Данная инструкция необходима как часть оригинального кода, который затерли чтобы игра не вылетела. AOB сигна тут совсем не причем. GodMode1:cmp [t_GodMode],1//тут на сколько я понял сравнивается значение в зарегистрированной метке с единицей (изначально у нас 0, после включения под скрипта №3-один)jne InfAbility//не прыгаем если равно единицеcmp edi,00000001//сравниваем регистр инструкции mov [ecx],edx с единицейjne InfAbility//не прыгаем если равно единицеcmp [ecx+04],00000003//сравниваем значение лежащее по смещению с тройкойjne InfAbility//не прыгаем если равно трёмpush esi//загружаем регистрmov esi,[ecx+08]//кладём в загруженный регистр указатель по смещению [ecx+8]cmp [esi+10],00005048 //"HP"// в моём понимании это что-то вроде фильтра первичного для жизней юнитов отряда игрокаpop esi//восстанавливаем регистрjne InfAbility//не прыгаем если равно 5048push esi//загружаем регистрmov esi,[ecx-0C]//не совсем, но я понимаю что это делается и всё же думаю что лучше бы это дело мне объяснить=)cmp [esi+10],65726966 //"fire"Active (You)//сравниваем с неким числом лежащим в указателе по смещению [ecx-C], но вот от куда это число берётся я так и не понялpop esi//восстанавливаем регистрjne GodMode2//не прыгаем если равно 65726966mov [ecx],(float)999//устанавливаем нужное кол-во жизней GodMode2:push esi//ну это понятно, дальше я буду пропускать эти строкиmov esi,[ecx-0C]//опять же то что я не совсем понимаю, но по сути мы кладём опять же указатель лежащий по смещению [ecx-C] в регистрcmp [esi+10],72677075 //"upgr"adeLevel (Squad)//сравниваем значение лежащее в указателе [ecx-C] по смещению [esi+10]pop esijne InfAbility//далее писать про эти строки я не будуmov [ecx],(float)999//опять же записываем нужное значение здоровья, но для меня не понятно зачем было это делать 2 раза и в таком виде, да и ещё используя аж 3 фильтра InfAbility:cmp [t_InfAbility],1//про это я тоже писать больше не буду и так всё ясноjne InfMoneycmp edi,00000009//сравниваем регистр со значением 9jne InfMoneycmp [ecx+04],00000003//сравниваем значение лежащее по смещению с тройкойjne InfMoneypush esimov esi,[ecx+08]//кладём указатель лежащий по смещению [ecx+8] в регистрcmp [esi+10],72616863 //"char"ges//ещё 1 фильтрpop esijne InfMoneymov [ecx],(float)99//записываем нужное кол-во расходников InfMoney:cmp [t_InfMoney],1jne exitcmp edi,00000001//опять же сравниваем регистр с единицейjne exitcmp [ecx+04],00000003//значение лежащее по смещению [ecx+4] сравниваем с тройкойjne exitpush esimov esi,[ecx+08]//аналогично как было и вышеcmp [esi+10],6F736572 //"reso"urces//ещё фильтpop esijne exitmov [ecx],(float)9999//устанавливаем нужное кол-во денег exit:mov edx,[eax+04]//вторая оригинальная инструкция идущая по кодуjmp returnhere aob_BaseCode:BaseCode:jmp newmem// Как я уже писал aob_BaseCode - это метка сигны. Если поставить под метку другую метку, то нижняя метка копирует адрес под верхней. aob_BaseCode нельзя зарегистрировать чтобы она была доступна под [DISABLE] секцией. Но можно зарегистрировать BaseCode и тогда BaseCode будет доступна под [DISABLE]returnhere:[DISABLE]BaseCode:mov [ecx],edxmov edx,[eax+04]//выполняем оригинальный кодdealloc(newmem)//удаляем выделенную памятьunregistersymbol(BaseCode)//снимаем регистрацию с метки
    1 балл
  2. Kholat Просмотреть файл Телепорт. Супер скорость, а то есть увеличенный скоростью бег. Бесконечная выносливость. Автор LIRW Добавлен 12.08.2015 Категория Трейнеры для PC игр
    1 балл
×
×
  • Создать...

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

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