RisimO Опубликовано 10 апреля, 2013 Поделиться Опубликовано 10 апреля, 2013 И всем опять привет!Спасибо что помогли решить мой предыдущий вопрос. Но появился новый Нашёл функцию:Пытаюсь вешать на AobScan её байтами , не работает. А всё по 1 причине, в инструкции байты изменяются! (выделено красным)F2 0F 5E 05 40 D6 42 02 8B 74 24 50 8B 7C 24 54 8B 5C 24 58 8B 4C 24 5C 2B F3Мой вопрос, как сделать AobScan по маске? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 10 апреля, 2013 Поделиться Опубликовано 10 апреля, 2013 aobscan(aobaddr,F2 0F 5E 05 xx xx xx xx 8B 74 24 50 8B 7C 24 54 8B 5C 24 58 8B 4C 24 5C 2B F3) Ссылка на комментарий Поделиться на другие сайты Поделиться
RisimO Опубликовано 10 апреля, 2013 Автор Поделиться Опубликовано 10 апреля, 2013 Спасибо, но встречный вопрос.Есть инструкцияdivsd xmm0,[01FCCE80]Мне её переделать вdivsd xmm1,[01FCCE80]Но ведь выделенное красным каждый раз меняется! Как тут сделать тогда?Можно конечно занопить, но тогда как вернуть? Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 10 апреля, 2013 Поделиться Опубликовано 10 апреля, 2013 Вам ведь нужно всего-лишь заменить xmm0, на xmm1ваша инструкция выглядит так (на скриншоте)0242D763 - F2 0F 5E 05 40 D6 42 02 - divsd xmm0,[0242D640]вы хотите изменить ее на0242D763 - F2 0F 5E 0D 40 D6 42 02 - divsd xmm1,[0242D640]значит, пишем скрипт:[ENABLE]0242D766: //или "0242d763+3:" --->>> адрес "05" (В вашем же случаем тут нужно использовать aobscan, но принцип, думаю, вы знаете) db 0d[DISABLE]0242D766: db 05Всё!Можно быть более изощрённым (Но в вашем случаем это будет черезчур. Просто как пример привёл)[ENABLE]alloc(newmem,2048)label(returnhere)label(addr)registersymbol(addr)newmem://адрес нашей инструкции "0242d763"//первоначально в скобках указан адрес "0242D640"//оба эти адреса всегда меняются, но они всегда находятся в памяти на одинаковом расстоянии//по отношению друг к другу. "0242d763", больше чем "0242D640", значит//0242D640-0242d763=123//ниже мы установили метку "addr" на оригинальный адрес ориг. иструкции//значит: divsd xmm1,[addr-123] //в данный момент "addr-123" = "0242D640" jmp returnhere0242d763:addr: //данная метка будет находится по адресу 0242d763 (ориг. адрес ориг. инструкции) jmp newmem db 90 90 90returnhere:[DISABLE]addr: divsd xmm0,[addr-123]unregistersymbol(addr)dealloc(newmem) 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
RisimO Опубликовано 10 апреля, 2013 Автор Поделиться Опубликовано 10 апреля, 2013 Спасибо, особенно за 1 способ.Вот такой скрипт получился, почему то вышибает ошибку : Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 10 апреля, 2013 Поделиться Опубликовано 10 апреля, 2013 "ammo+03" - уберите ковычки Ссылка на комментарий Поделиться на другие сайты Поделиться
RisimO Опубликовано 10 апреля, 2013 Автор Поделиться Опубликовано 10 апреля, 2013 Убрал, ничего не изменилось Если я убираю +03 то всё проходит! Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 10 апреля, 2013 Поделиться Опубликовано 10 апреля, 2013 Ну правильно, вам же нужно aob_ammo+3 писать Ссылка на комментарий Поделиться на другие сайты Поделиться
RisimO Опубликовано 10 апреля, 2013 Автор Поделиться Опубликовано 10 апреля, 2013 Всё въехал, нужно так:aob_ammo+03:ammo:Хаха, совпало Я очень туплю, но как тогда вернуть при отключении? Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 10 апреля, 2013 Поделиться Опубликовано 10 апреля, 2013 В вашем скрипте установлена метка "ammo" на адрес, где расположен заменяемый хекс-байт "05", т.е. в данном скрипте эта метка = этот адрес. Следовательно, в секции "[DISABLE]" у вас должен быть кодammo:db 05unregistersymbol(ammo)И никакой дополнительный aobscan не нужен.Тут нужно просто разобраться что к чему.Имеем иснтрукцию0242D763 - F2 0F 5E 05 40 D6 42 02 - divsd xmm0,[0242D640]"0242D763" - адрес инструкции, который постоянно меняется, поэтому мы находим его при помощи массива байт с обозначением "aob_ammo"И получается0242D763 F2 //aob_ammo0242D764 0F //+10242D765 5E //+20242D766 05 //+3 ---> то, что нужно изменять0242D767 40 //+40242D768 D6 //+50242D769 42 //+60242D76A 02 //+7Нам нужен изменить хекс-байт "05", который находится выше на 3 от "aob_ammo", поэтому и пишем "aob_ammo+3" (или можно сразу искать адрес именно этого хекс-байта, а не адрес всей инструкции)С изменением все поняли, а чтобы восстановить оригинальную инструкцию, на опять прийдется искать этот адрес, а т.к. мы уже внесли изменения, то выбранный вами массив байт изменится и не подойдетискали черезF2 0F 5E 05 xx xx xx xx 8B 74 24 50 8B 7C 24 54 8B 5C 24 58 8B 4C 24 5C 2B F3но уже это выглядит какF2 0F 5E 0D xx xx xx xx 8B 74 24 50 8B 7C 24 54 8B 5C 24 58 8B 4C 24 5C 2B F3Поэтому, в секции [DISABLE] нужно делать еще один "aobscan", но с измененным массивом байт.[ENABLE]aobscan(aob_ammo,F2 0F 5E 05 xx xx xx xx 8B 74 24 50 8B 7C 24 54 8B 5C 24 58 8B 4C 24 5C 2B F3)aob_ammo+3:db 0d[DISABLE]aobscan(aob_ammo2,F2 0F 5E 0D xx xx xx xx 8B 74 24 50 8B 7C 24 54 8B 5C 24 58 8B 4C 24 5C 2B F3)aob_ammo2+3:db 05Но чтобы не делать этого (лишняя работа, да и "aobscan" не всегда выполняется быстро) нам нужно просто отметить для Cheat Engine этот адрес и мы ставим метку "ammo" (и зарегистрируем её при помощи "registersymbol")Аналогично тому, если вы будете искать свой дом на карте через Континент->Страна->Город->Улица->Дом, а можете просто отметить точку фломастером.Грубо говоря, получается0242D763 F20242D764 0F0242D765 5Eammo:0242D766 0D //наша точка фломастером0242D767 400242D768 D60242D769 420242D76A 02И получается[ENABLE]aobscan(aob_ammo,F2 0F 5E 05 xx xx xx xx 8B 74 24 50 8B 7C 24 54 8B 5C 24 58 8B 4C 24 5C 2B F3)label(ammo)registersymbol(ammo)aob_ammo+3:ammo:db 0d[DISABLE]ammo:db 05unregistersymbol(ammo)По поводу первой ошибки:Конечно, можно сделать и как вы вначалеaob_ammo:ammo+03: //у вас происходит смещение на 3 выше от метки "ammo", но самой метки то нет нигде...Тогда нужно делать вот такaob_ammo:ammo:ammo+03:...Будет работать, но так делать глупо 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
RisimO Опубликовано 11 апреля, 2013 Автор Поделиться Опубликовано 11 апреля, 2013 Спасибо огромное! Хорошо объяснили, даже я нуб новичок понял.Ещё раз Спасибо! Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения