Kiorn Опубликовано 17 апреля, 2018 Поделиться Опубликовано 17 апреля, 2018 10 минут назад, Garik66 сказал: Приведи свой скрипт - > объясню где у тебя ошибка и почему валится игра. В своих уроках я неоднократно этот вопрос затрагивал и показывал. Спойлер [ENABLE] aobscan(Items_Condition,D9 80 64 01 00 00 DE) // should be unique alloc(IC,$256) label(return) label(metka1) label(IC_1) registersymbol(IC_1) IC: mov ecx,[eax+0000011C] cmp [ecx+0C],'Play_Snd' jne metka1 add [IC_1],1 metka1: mov ecx,0 fld dword ptr [eax+00000164] jmp return IC_1: dd 0 Items_Condition: jmp IC nop return: registersymbol(Items_Condition) [DISABLE] Items_Condition: db D9 80 64 01 00 00 unregistersymbol(Items_Condition) unregistersymbol(IC_1) dealloc(IC) Причину краша я нашел. Лишняя 1 в адресе была. Теперь счетчик не могу заставить работать(( А уроки я посмотрю, обязательно. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 апреля, 2018 Поделиться Опубликовано 17 апреля, 2018 2 минуты назад, Kiorn сказал: Теперь счетчик не могу заставить работать(( Счетчик не работает понятно почему - позже объясню. Вначале культура задания вопросов, принятая на форуме: 1. Если просят привести скрипт, то приводите его с стандартными СЕ-ными ЛОГами, которые внизу скрипта. Теперь вопросы по скрипту: 1. В регистре ecx - ты уверен, что он свободный? Если нет, лучше юзать push ecx/pop ecx. 2. Ты уверен, что в адресе [eax+0000011C] у всех адресов с которыми работает выбранная тобою инструкция (fld dword ptr [eax+00000164]), есть указатели (поинтеры)? Если не уверен, то хотябы нужно поставить проверку на 0, прежде чем пытаться писать такую инструкцию mov ecx,[eax+0000011C]. Чаще всего именно здесь и происходит вылет из игры. Теперь почему не работает счетчик: Вот так cmp [ecx+0C],'Play_Snd' [ecx+0C] всегда будет не равно 'Play_Snd' Потому что [ecx+0C] - это 4 байта, а Play_Snd это 8 байт. Я уже и ранее писал, но вы читаете не внимательно, т.е. варианты: либо как у меня в скрипте в том сообщении перевести в HEX и сравнивать по 4 байта, либо можно сделать ещё так: cmp [ecx+0C],'Play' // Первые 4 байта jne..... cmp [ecx+0C+04],'_Snd' // Следующие 4 байта строчка нужна, если недостаточны первые 4 байта для сравнения. jne...... Отпишись о результатах. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 апреля, 2018 Поделиться Опубликовано 17 апреля, 2018 ЗЫ: забыл, у тебя там строка в уникоде, поэтому скорее всего это cmp [ecx+0C],'Play' // Первые 4 байта jne..... тоже не сработает, т.к. 'привет' слеши для обычного текста, поэтому скорее всего нужно будет перевести в HEX. Ссылка на комментарий Поделиться на другие сайты Поделиться
Kiorn Опубликовано 17 апреля, 2018 Поделиться Опубликовано 17 апреля, 2018 8 минут назад, Garik66 сказал: ЗЫ: забыл, у тебя там строка в уникоде, поэтому скорее всего это cmp [ecx+0C],'Play' // Первые 4 байта jne..... тоже не сработает, т.к. 'привет' слеши для обычного текста, поэтому скорее всего нужно будет перевести в HEX. Garik66, спасибо большое! Проблема была в [eax+0000011C] (Play уплыл от туда). Нашел другое значение и без Sting'ов. Проблема решена. Ребята! Всем СПАСИБО за помощь!!! 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 апреля, 2018 Поделиться Опубликовано 17 апреля, 2018 6 минут назад, Kiorn сказал: СПАСИБО Люблю вот такие посты. От мене плюс. Удачи во взломе!!! Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 17 апреля, 2018 Поделиться Опубликовано 17 апреля, 2018 (изменено) 1 час назад, Garik66 сказал: 1. В регистре ecx - ты уверен, что он свободный? Если нет, лучше юзать push ecx/pop ecx. Забыл про push / pop А так вообще не понимаю проверки по тексту. Хотя иногда сам ей грешил. Ну это ИМХО. Изменено 17 апреля, 2018 пользователем ReWanet Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 апреля, 2018 Поделиться Опубликовано 17 апреля, 2018 6 минут назад, ReWanet сказал: Забыл про push / pop Кто забыл? Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 17 апреля, 2018 Поделиться Опубликовано 17 апреля, 2018 (изменено) 2 минуты назад, Garik66 сказал: Кто забыл? Я в своем сообщение забыл упомянуть про них. Изменено 17 апреля, 2018 пользователем ReWanet Ссылка на комментарий Поделиться на другие сайты Поделиться
X86Jumps Опубликовано 20 апреля, 2018 Поделиться Опубликовано 20 апреля, 2018 строки нельзя сравнивать через cmp это будет сравнение как чисел, разве что указатель на него сравнивать (если это const строка) а так строки сравнивают через cmps-инструкции или другие (хотя не знаю зачем сроки сравнивать для чита)) чаще работаем с указателями или некими перечислениями) 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
DimaZ Опубликовано 22 июня, 2018 Поделиться Опубликовано 22 июня, 2018 Помогите.Делаю в программе то что нужно,сохраняю таблицу,а при след. заходе в игру таблица уже не работает,что я делаю не так? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 22 июня, 2018 Поделиться Опубликовано 22 июня, 2018 37 минут назад, DimaZ сказал: что я делаю не так? то что не нужно 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 22 июня, 2018 Поделиться Опубликовано 22 июня, 2018 39 минут назад, DimaZ сказал: Делаю в программе то что нужно Лучше создай отдельную тему с указанием игры и объяснениями, что именно делаешь, а в идеале приложи скрипт, обычно если таблица не работает после перезапуска, то проблема с сигнатурами, придется ручками делать её длиннее Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 22 июня, 2018 Автор Поделиться Опубликовано 22 июня, 2018 Много информации в этой теме и сложно разбираться без заголовков тем. Закрываю Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения