Лидеры
Популярный контент
Показан контент с высокой репутацией 26.12.2014 во всех областях
-
Данной мне властью выкладываю здесь сиё творение, дабы не испытывал нужды человек в поисках инструкции по байтам. sl = AOBScan("ХХ ХХ ХХ ХХ ХХ"); if(sl == nil) then print("No code found!"); else j = stringlist_getCount(sl); print("Found:",j); for i = 1, j do print(stringlist_getString(sl,i-1)); end object_destroy(sl); end Вместо букв "Х" вписываете нужные байты (не обязательно 5 пар, их может быть больше). Если что-то найдёт, то скажет Found: кол-во_адресов и список их, в обратном случае скажет No code found! Код вставлять в Lua Engine, как его вызывать думаю знаете...2 балла
-
Видимо пока не всё понял. Начнём с первого скрипта, ты поменял условный переход (прыжок): было je Test, теперь jne Test, т.е. теперь чтобы выполнялся скрипт у тебя всегда должно быть, чтобы [esi+928] не было равно (float)350. Думаю первый скрипт можно выкинуть. Он не нужен. А вот во втором, теперь давай посмотрим. Если у тебя в [esi+10] всегда (и также для всех членов команды) лежит 1, то это и есть ID, а условие прыжка: cmp dword ptr [esi+10],00000001je TestЭто и есть нужный фильтр - свой/чужой. Т.е. ты как бы говоришь игре - выполни, если это мои люди (ID=1), то что написано в Test. Теперь по самим характеристикам, то что в Test. почему у тебя всегда съезжают смещения: было mov [esi+194],(float)80 // Cheatersmov [esi+144],(float)80 // Kriticall Killmov [esi+924],(float)60 // SpeedPunchстало mov [esi+314],(float)50 // Cheatersmov [esi+2c4],(float)50 // Kriticall Killmov [esi+aa4],(float)30 // SpeedPunchОни должны быть всегда на одном месте. Ты определись, где у тебя и какое точно значение. Потом ты постоянно записываешь в адрес разные значения (float)50 (float)80 и т.д.- мне это тоже не очень понятно. Проще записывать всегда MAX значение. Посмотри структуру, скорей всего у тебя будет выглядеть так: [esi] // начало структуры // опираюсь на последние данные по смещениям, т.е. смещения из последнего скрипта[esi+aa4] // SpeedPunch (float)какое-то текущее значение (лучше пиши по русски, мне лично не понятно)[esi+aa8] // SpeedPunch (float)MAX - предполагаю, что здесь будет лежать максимум твоего значения).[esi+2c4] // Kriticall Kill,(float)50 - текущее[esi+2c8] // Kriticall Kill,(float)50 - MAX[esi+314] // Cheaters,(float)50 - текущее[esi+318] // Cheaters,(float)50 - MAXНу и т.д.И тогда проще переписать так: // Далее записываем MAX значения для интересующих нас характеристик, здесь же может быть и// здоровье, в этом случае это будет GodMod. push [esi+aa8] pop [esi+aa4] push [esi+2c8] pop [esi+2c4] push [esi+318] pop [esi+314]Но это нужно проверить и поизучать структуру. pushad <<<<< // вот без сохранения регистров игра вылетает popad Тоже не понятно, так как ты регистров не используешь, pushad popad не нужны. А вылет думаю происходит по другой причине. (скорее всего где-то ошибка).1 балл
-
Для Жажда Знаний (который задал вопрос в личке) и тех кто читает, чтобы не повторяться, продолжу развивать тему нахождения фильтров. Использовать буду конкретный пример, выложенный мною сегодня скрипт (см. здесь). Фильтр деньги/товар найден с помощью стандартной методики "Анализ Структуры": 1. В отладчике выделяем Вашу инструкцию (правой кнопкой выбираем из контекстного меню: "Найти адреса, получающие доступ к этой инструкции. ) Откроется новое окошко. 2. Переходим в игру, открываем меню героя или то, что влияет на Вакшу инструкцию. 3. Возвращаемся в СЕ , смотрим что в окошке. 4. Если не только Ваши адреса, то выделяем адрес правой кнопкой показать регистры. Вот здесь, то и нужно будет изучить какой регистр (и какое его значение) использовать для использования фильтром в Вашем коде. 5. Выбираем, интересующие нас адреса (в моём случае - это адреса денег ГГ, денег Торговца и два, три адреса товара для сравнения). 6. Переходим обратно в "Отладчик", выделяем Вашу инструкцию, смотрим на самый верх отладчика, видим "Инструменты", жмём, далее выбираем "Анализ данных/структур". Откроется новое окно "Анализ структуры". 7. Вносим все свои адреса (используя файл/добавить дополнительный адрес), не забывая отнимать Ваше смещение( в моём случае, допустим для инструкции sub [eax+04],esi это 04). 8. Назовём Группу 1 - "Деньги" и добавим в неё деньги торговца и ГГ 9. Добавим Группу 2 - "Товар" и добавим в неё два, три адреса товара для сравнения из п.5. 10. Жмём наверху "Структуры"/Определить новую структуру", указываем название структуры (например "TORG"), дальше подтверждаем, следующее опять подтверждаем. В результате окно заполниться и в нём будут различные строчки разных цветов (для нахождения нашего фильтра нас интересуют строчки фиолетового цвета). 11. В моём случае фиолетового ничего не было, но см. смещения и видим (в моём случае на смещении 08 стоит Pointer (указатель), при раскрытии которого я получил кучу фиолетовых строк. 12. Перебираем варианты (здесь уже больше от интуиции зависит, мне повезло на смещении 0144, у Группы Деньги было значение 2, а у Группы Товар - 0. Это смещение и значения в нём я выбрал для фильтра (см.мой скрипт.) ). 13. Пишем скрипт, проверяем работу. Работает - хорошо. 14 Проверяем стабильность (т.е. правильно ли мы выбрали фильтр) - загружаем вначале сейв игры. Работает - хорошо. 15. Дополнительно (обязательно сделать раза 3) проверяем стабильность - выходим из игры, проверяем, Работает - хорошо. 16. Если в пунктах 14 или 15 не работает , нужно повторить всё с самого начала и выбрать другое фиолетовое смещение. Теперь перейдём к фильтру в моём скрипте - фильтр Торговец/ГГ в данном случае в "Анализе структуры" Группа 1 "Герой", Группа 2 "Торговцы". Но подобрать стандартным методом - методом "Анализа структуры" стабильный фильтр мне не удалось. Поэтому применил свой метод. т.е начинаем с п.1 и заканчиваем п.4 4. Если не только Ваши адреса, то выделяем адрес правой кнопкой показать регистры. Вот здесь, то и нужно будет изучить какой регистр (и какое его значение) использовать для использования фильтром в Вашем коде. Смотрю регистры денег у ГГ и у Торговцев и проверяю, какие из регистров, после загрузок сейвов, перезагрузки игры, остаются стабильными, вот их используем (в моём случае это был регистр ESP, но может быть и другой, в моих скриптах встречался, по моему EAX, найденный этим же способом ну и т.д.) По фильтрам вроде бы всё.1 балл