lamalamaz Опубликовано 26 декабря, 2013 Поделиться Опубликовано 26 декабря, 2013 Всем привет. Вопрос такой как сделать двойное сравнение вот кусок скрипта:...cmp [eax+00000010],2 //обычная солдатняcmp [eax+00000010],0 //важные персонажиje godjne 1hitjmp returnhere(такой скрипт выполняет только сравнение с 0)...так вот как сделать чтобы проверялся и 0 и 2 в пределах одного скрипта.? Помогите правильно составить сравнение. Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 26 декабря, 2013 Поделиться Опубликовано 26 декабря, 2013 cmp dword ptr [eax+10],0 jne адрес_след_cmp (возможно просто jne +3 (или сколько там след. инструкция байт жрёт) написать)jmp short godcmp dword ptr [eax+10],2 jne returnherejmp short 1hitjmp returnhere Ссылка на комментарий Поделиться на другие сайты Поделиться
lamalamaz Опубликовано 26 декабря, 2013 Автор Поделиться Опубликовано 26 декабря, 2013 В 26.12.2013 в 11:17, Coder сказал: cmp dword ptr [eax+10],0 jne адрес_след_cmp (возможно просто jne +3 (или сколько там след. инструкция байт жрёт) написать)jmp short godcmp dword ptr [eax+10],2 jne returnherejmp short 1hitjmp returnhereЧет я не соображу... Мне нужно чтобы cmp [eax+00000010],2 и cmp [eax+00000010],0 при сравнении шли на god, а все остальные значения на 1hit. Ссылка на комментарий Поделиться на другие сайты Поделиться
lamalamaz Опубликовано 26 декабря, 2013 Автор Поделиться Опубликовано 26 декабря, 2013 [ENABLE]alloc(newmem,2048)label(returnhere)label(god)label(1hit)newmem:cmp [eax+00000010],0je godjne 1hitgod:mov [eax+0000013C],1000jmp returnhere1hit:mov [eax+0000013C],1jmp returnhere"CoD2SP_s.exe"+FF367:jmp newmemnopreturnhere:[DISABLE]//code from here till the end of the code will be used to disable the cheatdealloc(newmem)"CoD2SP_s.exe"+FF367:mov edi,[eax+0000013C]//Alt: db 8B B8 3C 01 00 00Сам скрипт и вот как бы сюда засунуть вот это cmp [eax+00000010],2je godjne 1hit Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 26 декабря, 2013 Поделиться Опубликовано 26 декабря, 2013 cmp [eax+00000010],0je short godcmp [eax+00000010],2je short godjmp short 1hit Ссылка на комментарий Поделиться на другие сайты Поделиться
lamalamaz Опубликовано 26 декабря, 2013 Автор Поделиться Опубликовано 26 декабря, 2013 В 26.12.2013 в 12:54, Coder сказал: cmp [eax+00000010],0je short godcmp [eax+00000010],2je short godjmp short 1hitспасибо большое! заработало! 2 вопроса... Обязательно после каждой метки ставить jmp returnhere и что такое short? Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 26 декабря, 2013 Поделиться Опубликовано 26 декабря, 2013 В 26.12.2013 в 13:03, lamalamaz сказал: спасибо большое! заработало! 2 вопроса... Обязательно после каждой метки ставить jmp returnhere и что такое short?на 1й вопрос ответ Да, на второй вопрос ответ писать лень, скопипастил простенький ответ с какого-то сайтаПрямой короткий (short) переход. Прямым называется переход, в команде которого в явной форме указывается метка, на которую нужно перейти.Разумеется, эта метка должна присутствовать в том же программном сегменте, при этом помеченная ею команда может находиться как до, так и после команды jmp. Достоинство команды короткого перехода заключается в том, что она занимает лишь 2 байт памяти: в первом байте записывается код операции (EBh), во втором - смещение к точке перехода.Расстояние до точки перехода отсчитывается от очередной команды, т.е. команды, следующей за командой jmp.Поскольку требуется обеспечить переход как вперед, так и назад, смещение рассматривается, как число со знаком и, следовательно, переход может быть осуществлен максимум на 127 байт вперед или 128 байт назад. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения