CHBS Опубликовано 17 ноября, 2017 Поделиться Опубликовано 17 ноября, 2017 (изменено) Приветствую пользователей форума, ковыряю игру из названия темы Скрытый текст Под спойлером картинка Цель изменить значение адреса 0BD2CE88, выделено в рамку помечено как Addr Value Я пытался сделать Code injection по конкретному адресу, пользователь @ReWanet поправил меня, и сказал что стоит делать AOBScan, я сделал AOBScan рамка справа, но проблема заключается в том, что если автомобиль стоит на месте, и у адреса значение скорости будет 0, соответственно и сигнатура будет одна, обусловим ее так "C7 78 A6 42", если машина будет стоять, и я активирую скрипт, то в теории все сработает, но что делать если машина поедет, а ведь у адреса сменится значение скорости, а соответственно изменится сигнатура, она станет например такой "0A D7 23 3C C8 EB 07", а значит AOBScan не сработает в этом случае, как быть? Если я не понятно объяснил, то сигнатура AOBScan постоянно меняется по ходу игры, и AOBScan теоретически применить нельзя, либо я не знаю каких то тонкостей с работой AOBScan'a Когда я делал Code Injection @Garik66 поправил меня, указав на то что так делать нельзя в метку newmem: я записал команду mov ebx, #1000, надеясь что в ebx запишется флоат значение 1000, но как мне сказали, это не так и я задаю вопрос по поводу занесения значений через автоассемблер 1. Как в регистр в автоассемблере записать флоат значение? 2. Что значит решетка перед записываемым числом? 3. Какая разница между #1000 и float(1000)? Изменено 17 ноября, 2017 пользователем CHBS Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 ноября, 2017 Поделиться Опубликовано 17 ноября, 2017 13 минуты назад, CHBS сказал: 1. Как в регистр в автоассемблере записать флоат значение? 2. Что значит решетка перед записываемым числом? 3. Какая разница между #1000 и float(1000)? 1. mov reg, (float)1000, где reg - любой регистр конечно 2. # число в десятичной системе 3. #1000 = 000003E8 (HEX) float(1000) = 447A0000 (HEX) 13 минуты назад, CHBS сказал: Под спойлером картинка Картинки нет. Ссылка на комментарий Поделиться на другие сайты Поделиться
CHBS Опубликовано 17 ноября, 2017 Автор Поделиться Опубликовано 17 ноября, 2017 1 минуту назад, Garik66 сказал: 1. mov reg, float(1000) newmem: mov eax, float(1000) Почему-то не может скомпилировать такую инструкцию Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 ноября, 2017 Поделиться Опубликовано 17 ноября, 2017 26 минут назад, CHBS сказал: Почему-то не может скомпилировать такую инструкцию С недосыпа я не там скобки поставил. mov eax, (float)1000 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 ноября, 2017 Поделиться Опубликовано 17 ноября, 2017 18 минут назад, CHBS сказал: Под спойлером картинка Ну наконец то раскрылась картинка. Брат ты не то совсем делаешь. Ссылка на комментарий Поделиться на другие сайты Поделиться
CHBS Опубликовано 17 ноября, 2017 Автор Поделиться Опубликовано 17 ноября, 2017 4 минуты назад, Garik66 сказал: mov eax, (float)1000 Заработало, сам запамятовал правильное приведение в флоат))) Еще пару вопросов, колеса у меня 4, и нужно записать в 4 адреса это флоат значение, как я могу это сделать одним code injection? ведь я выполняю инъекцию в определенный адрес, а таких подобных адреса еще 3, но у них есть смещение от первого колеса по (28 + 1A0) Далее, если я запишу значение в эти 4 адреса, как мне заморозить их на постоянно\на время? Я делаю буст авто, нужно в эти 4 адреса получается кратковременно подержать флоат 1000 едениц Ссылка на комментарий Поделиться на другие сайты Поделиться
CHBS Опубликовано 17 ноября, 2017 Автор Поделиться Опубликовано 17 ноября, 2017 1 минуту назад, Garik66 сказал: Брат ты не то совсем делаешь. А можешь написать конкретно что я не так делаю, хотелось бы исправится, и сделать все правильно)) Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 ноября, 2017 Поделиться Опубликовано 17 ноября, 2017 1. Добавь нужный адрес в таблицу. 2. ПКМ по адресу "Найти инструкции. записывающие по этому адресу. 3. Из инструкции, которая появиться в новом окне, перейти в дизсамблер. 4. И вот уже здесь писать скрипт. Лучше посмотри любое видео по взлому.Быстрее поймешь. Ну например глянь эту тему. А мне пора спать - завтра в пять опять. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 ноября, 2017 Поделиться Опубликовано 17 ноября, 2017 PS: А ошибка твоя - ты в отладчике перешёл на адрес 0BD2CE88 (а значение в нём конечно динамическое), а тебе нужно перейти на адрес инструкции работающий с адресом 0BD2CE88. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 17 ноября, 2017 Поделиться Опубликовано 17 ноября, 2017 Я же тебе говорил в дискорде про это? ( Или нет? Я не помню ) Ты перешел по адресу в окно дизассемблера конечно у тебя будет меняться значение.. Тебе нужна инструкция которая работает с этим адресом и уже с нее делать AOB инъекцию. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
CHBS Опубликовано 17 ноября, 2017 Автор Поделиться Опубликовано 17 ноября, 2017 53 минуты назад, ReWanet сказал: Я же тебе говорил в дискорде про это? Да вроде, в данный момент я так и поступил, нашел что туда пишет, делаю инъекцию по инструкциям которые пишут в этот адрес Пробовал так: newmem: mov [esi-04], (float)10 originalcode: fstp dword ptr [esi-04] jne SPEED2.EXE+1AA550 Ничего не происходит Попробовал вот так: newmem: mov [esi-04], (float)10 fstp dword ptr [esi-04] jne SPEED2.EXE+1AA550 originalcode: fstp dword ptr [esi-04] jne SPEED2.EXE+1AA550 Вешается игровая отриосвка, становится 1fps, хотя я сразу после включения скрипта выключаю его, вообщем, он вешается, и с одним фпс приходится рестартать гонку, далее все стабилизируются, и кстати, когда крашится отрисовка, ломаются все значения в ранее найденых указателях, у меня есть подозрение, что я смещаю инструкции, и все соответственно ломается, зато не вылетает, вот что интересно)))))) Вот полный код инъекции Скрытый текст [ENABLE] //code from here to '[DISABLE]' will be used to enable the cheat alloc(newmem,2048) label(returnhere) label(originalcode) label(exit) newmem: mov [esi-04], (float)10 fstp dword ptr [esi-04] jne SPEED2.EXE+1AA550 originalcode: fstp dword ptr [esi-04] jne SPEED2.EXE+1AA550 exit: jmp returnhere "SPEED2.EXE"+1AA564: jmp newmem returnhere: [DISABLE] //code from here till the end of the code will be used to disable the cheat dealloc(newmem) "SPEED2.EXE"+1AA564: fstp dword ptr [esi-04] jne SPEED2.EXE+1AA550 //Alt: db D9 5E FC 75 E7 Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 17 ноября, 2017 Поделиться Опубликовано 17 ноября, 2017 1 час назад, CHBS сказал: fstp dword ptr [esi-04] А в этой инструкции небось - ещо 255 адресов да ? Хочешь записать в 1,а получается пишешь во все 255 адресов, а там уже и анимация отпадает и не предсказуемые момент пошли. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 18 ноября, 2017 Поделиться Опубликовано 18 ноября, 2017 6 часов назад, CHBS сказал: Ничего не происходит 1. Судя по твоему уровню, тебе придётся некоторое время позадавать вопросы в этом разделе, поэтому сразу привыкай выкладывать скрипты с аобсканом и стандартными СЕ-ными ЛОГАми. (Об этом у меня тоже есть видео). Также, для читабельности, пользуйся тегами спойлера и кода . (Об этом у меня тоже есть видео). 2. Ничего не происходит потому что у тебя: Стандартнаяошибка в скриптах Cheat Engine всех новичков Нужно так: newmem: originalcode: fstp dword ptr [esi-04] mov [esi-04], (float)10 // или можно и по другому jne SPEED2.EXE+1AA550 3. Фильтр: Скорее всего инструкция, которую ты выбрал, работает не только с 4 колесами твоей машины, но и с колесами противников, т.е. нужно отфильтровывать свою машину от машин соперников. В таких играх обычно это не сложно (ID участников гонок лежат на поверхности в регистрах (в структуре). Об фильтрах у меня практически в каждом видео есть упоминание (по-моему в сумме 6 или 7 способ написания фильтра рассмотрено). Почему в каждом видео - при взломе современных игр 90 % твоих скриптов будут выглядеть так: cmp ..............// сравнение je................// (jne, ja,jb) условный переход (прыжок) mov...............// запись нужного значения в адрес (регистр) Видео находятся в этом рахделе. Статьи для новичков Удачи во взломе!!! 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
CHBS Опубликовано 18 ноября, 2017 Автор Поделиться Опубликовано 18 ноября, 2017 23 часа назад, LIRW сказал: А в этой инструкции небось - ещо 255 адресов да Скорее всего так и есть, или В 18.11.2017 в 01:19, CHBS сказал: у меня есть подозрение, что я смещаю инструкции, и все соответственно ломается, зато не вылетает, вот что интересно)))))) Такой вариант может быть? Ссылка на комментарий Поделиться на другие сайты Поделиться
CHBS Опубликовано 18 ноября, 2017 Автор Поделиться Опубликовано 18 ноября, 2017 18 часов назад, Garik66 сказал: Стандартнаяошибка в скриптах Cheat Engine всех новичков Посмотрел видео, спасибо, решился вопрос все таки, как лучше написать скрипт, но по факту я писал изначально правильно, по второму варианту т.е если в оригинальной инструкции будет такое - mov [ecx+04], ebx То очевидно что лучше записать в регистр ebx, потому что следующая инструкция возьмет из этого регистра данные, поэтому собственно с записью я сделал все верно 18 часов назад, Garik66 сказал: 3. Фильтр: Да, все верно, потому что я зашел в обычную кольцевую гонку, и на мое удивление мои соперники тоже притягивались к дороге, я написал скрипт правильно еще вчера, просто почему то машину не тянуло вперед, а ее тянуло вниз, будто я бустил не координату X/Y а бустил координату Z по вектору 18 часов назад, Garik66 сказал: поверхности в регистрах (в структуре). Ну мне на самом деле проблематично выйти на эту структуру 18 часов назад, Garik66 сказал: Удачи во взломе!!! Спасибо, сейчас буду пробовать, если что напишу результат)) Ссылка на комментарий Поделиться на другие сайты Поделиться
CHBS Опубликовано 18 ноября, 2017 Автор Поделиться Опубликовано 18 ноября, 2017 (изменено) 18 часов назад, Garik66 сказал: fstp dword ptr [esi-04] mov [esi-04], (float)10 // или можно и по дру Еще вопрос такой fstp dword ptr [esi-04] // float store обращается через dword ptr // нужно ли делать тоже самое в измененении значения, т.е mov dword ptr [esi-04], (float)1000 // т.е в каких случаях нужно указывать dword ptr в mov, просто в fstp он указан, а в mov нет сейчас попробовал проверить опытным путем свою инструкцию, все получилось, все значения колес изменились на 1000, все 4 колеса, машина впечаталась в пол, а не вперед, это мой косяк с нужным значением. Но опытным путем выяснилось то что если написать mov dword ptr [esi-04], (float)1000 //будет краш из-за dword ptr mov [esi-04], (float)1000 // полет нормальный Изменено 18 ноября, 2017 пользователем CHBS UPD Ссылка на комментарий Поделиться на другие сайты Поделиться
krocki Опубликовано 19 ноября, 2017 Поделиться Опубликовано 19 ноября, 2017 dword ptr можно не писать, если юзаешь значение 4 байта или сточкой, а вот 1-2 байта нужно писать типа word ptr или byte ptr. Ссылка на комментарий Поделиться на другие сайты Поделиться
CHBS Опубликовано 19 ноября, 2017 Автор Поделиться Опубликовано 19 ноября, 2017 Только что, krocki сказал: dword ptr можно не писать Получается если напишу при использовании флоата, хуже я не сделаю, тогда почему происходит краш? Ссылка на комментарий Поделиться на другие сайты Поделиться
krocki Опубликовано 19 ноября, 2017 Поделиться Опубликовано 19 ноября, 2017 Я в обще пишу так значения в нехе... mov [esi-04],447A0000 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 19 ноября, 2017 Поделиться Опубликовано 19 ноября, 2017 1 час назад, CHBS сказал: но по факту я писал изначально правильно, по второму варианту По какому? из этого сообщения? Если да, то оба варианта в посту не верны. 1 час назад, CHBS сказал: Но опытным путем выяснилось то что если написать mov dword ptr [esi-04], (float)1000 //будет краш из-за dword ptr mov [esi-04], (float)1000 // полет нормальный Оба варианта записи абсолютно одинаковы. В СЕ по умолчанию в [address] - 4 байта ( поэтому я предпочитаю писать без дворд), float значение тоже 4 байта, так что оба варианта верны. Почему у тебя был краш, без приведенных скриптов, сказать не могу. Ссылка на комментарий Поделиться на другие сайты Поделиться
krocki Опубликовано 19 ноября, 2017 Поделиться Опубликовано 19 ноября, 2017 А она точно только с одним адресом робит эта инструкция fstp dword ptr [esi-04] Ссылка на комментарий Поделиться на другие сайты Поделиться
CHBS Опубликовано 19 ноября, 2017 Автор Поделиться Опубликовано 19 ноября, 2017 2 минуты назад, Garik66 сказал: По какому? из этого сообщения? Не, я про то что нужно брать не тот регистр в который пишет инструкция, а из которого она берет, т.е 2-ой вариант в твоем видео, т.е 2-ой способ из твоего видео, я вот про что)) 3 минуты назад, Garik66 сказал: сказать не могу. Понял, спасибо, наверное просто мне таким образом повезло) Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 19 ноября, 2017 Поделиться Опубликовано 19 ноября, 2017 1 минуту назад, CHBS сказал: просто мне таким образом повезло) Скорее всего инструкция работает не только с колесами машин, но и с чем то ещё это уже нужно смотреть в игре при написании фильтра и вот в это что-то ещё писать (f;oat)1000 нельзя. Ссылка на комментарий Поделиться на другие сайты Поделиться
CHBS Опубликовано 19 ноября, 2017 Автор Поделиться Опубликовано 19 ноября, 2017 3 минуты назад, krocki сказал: А она точно только с одним адресом робит Так черт его дери в том то и дело, что она работает с колесами, противника 3+Я(4), колеса 4, 1 колесо = 1 адресс с значением, 4*4=16, 16 адресов с которыми она работает это точно, но я не могу написать фильтр, точнее пока не пойму как мне найти свою машину потому что в первые 8 адресов при бряке на запись, там идут машины противников, и хлам адреса, но колеса моей машины находятся после 8-и этих адресов, и я вот не знаю как мне посмотреть с какими адрессами она работает конкретно моей машины, вот как обойти ограничение в 8 адресов? Картинка с адресами Скрытый текст Ссылка на комментарий Поделиться на другие сайты Поделиться
krocki Опубликовано 19 ноября, 2017 Поделиться Опубликовано 19 ноября, 2017 Пробуй писать фильтр анализа структуры...По натыкай так адреса и анализируй где чё отличается. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения