gamehikker Опубликовано 19 октября, 2017 Поделиться Опубликовано 19 октября, 2017 Ребята , недавно задался вопросом (возможно глупым) .Все знают функцию findpattern ? Но многие точно пользовались и знают , зачем она нужна . У меня вопрос , что если одна часть сигнатуры находится в одной странице памяти , а другая часть в другой ? Найдёт ли функция сигнатуру в таком случае ? код: Скрытый текст DWORD FindSignature(HANDLE m_hProc,DWORD base, DWORD size, BYTE* sign, char* mask) { LoadNTFunction(); MEMORY_BASIC_INFORMATION mbi = { 0 }; DWORD offset = 0; while ((offset < size)) { VirtualQueryEx(m_hProc, (LPCVOID)(base + offset), &mbi, sizeof(MEMORY_BASIC_INFORMATION)); if (mbi.State != MEM_FREE) { BYTE* buffer = new BYTE[mbi.RegionSize]; ReadProcessMemory(m_hProc, mbi.BaseAddress, buffer, mbi.RegionSize, NULL); for (size_t i = 0; i < mbi.RegionSize; i++) { if (DataCompare(buffer + i, sign, mask)) { delete[] buffer; return (DWORD)mbi.BaseAddress + i; } } delete[] buffer; } offset += mbi.RegionSize; } return 0; } bool DataCompare(BYTE* data, BYTE* sign, char* mask) { for (; *mask; mask++, sign++, data++) { if (*mask == 'x' && *data != *sign) return false; } return true; } Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 19 октября, 2017 Поделиться Опубликовано 19 октября, 2017 12 минуты назад, gamehikker сказал: аходится в одной странице памяти , а другая часть в другой ? 2 сигнатуры выходит? Возможно не найдет т.к сканер сигнатур внешний у тебя, ведь байты перебираются по определенной странице памяти и если не находит их, то переходит на следующую страницу. Но вот с длл это сработает. Ссылка на комментарий Поделиться на другие сайты Поделиться
gamehikker Опубликовано 19 октября, 2017 Автор Поделиться Опубликовано 19 октября, 2017 10 минут назад, partoftheworlD сказал: 2 сигнатуры выходит? Да . Но ведь такое может быть , если я нашёл одну сигнатуру , но её части в разных страницах памяти . Это недоработка получается и все используют это код . Эх... @gamehikker прочтите -> жмяк Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 19 октября, 2017 Поделиться Опубликовано 19 октября, 2017 1 минуту назад, gamehikker сказал: Да Поправил прошлое сообщение, а вообще редко такое бывает чтобы сигнатура была на границе регионов, возможно стоит взять чуть дальше сигнатуру от конца региона, а после перемещаться прибавляя или отнимая байты уже от найденного адреса. Ссылка на комментарий Поделиться на другие сайты Поделиться
gamehikker Опубликовано 19 октября, 2017 Автор Поделиться Опубликовано 19 октября, 2017 Мде...Придётся фиксить \\ Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 19 октября, 2017 Поделиться Опубликовано 19 октября, 2017 Если мне не изменяет моя память, то страницы памяти выравниваются по 4-х килобайтной границе. На практике это означает, что вероятность появления какого-либо кода в конце региона весьма и весьма мала. Отсюда, кстати, и работоспособность инструмента поиска код кейвов (да-да, был такой инструмент, искал кейвы, и мы не выделяли память, а использовали готовые "дыры"). Ссылка на комментарий Поделиться на другие сайты Поделиться
gamehikker Опубликовано 20 октября, 2017 Автор Поделиться Опубликовано 20 октября, 2017 (изменено) 19 часов назад, Xipho сказал: Вы хотите сказать , что не о чём волноваться ? Всё нормально работает ? Код сканера менять не нужно ? Изменено 20 октября, 2017 пользователем gamehikker Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 20 октября, 2017 Поделиться Опубликовано 20 октября, 2017 1 час назад, gamehikker сказал: что не о чём волноваться ? Не спеши костыли писать, вот когда перестанет работать, тогда будет проще использовать dll, вместо костылей, да и по времени это куда быстрее. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 20 октября, 2017 Поделиться Опубликовано 20 октября, 2017 1 час назад, gamehikker сказал: Вы хотите сказать , что не о чём волноваться ? Я хочу сказать, что за всю мою практику геймхакинга и программирования я ни разу не сталкивался с тем, чтобы какой-то код в обычных условиях попадал на границу страниц. Собственно, я даже не сталкивался с тем, чтобы какой-то линейный объем данных попадал на стык страниц. Ссылка на комментарий Поделиться на другие сайты Поделиться
gamehikker Опубликовано 20 октября, 2017 Автор Поделиться Опубликовано 20 октября, 2017 А можно как-то найти нужный адрес без сканера ? Я нашёл сигнатуру в игре на движке unity .Эта сигнатура связана с самим движком . Как можно было бы её находить без сканера ? Т.к. сканер ищет довольно таки долго , если по памяти всего процесса (там гигабайт точно ) Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 20 октября, 2017 Поделиться Опубликовано 20 октября, 2017 42 минуты назад, gamehikker сказал: Т.к. сканер ищет довольно таки долго , если по памяти всего процесса (там гигабайт точно ) Это странно, 5 гб в оперативе battlefield 1 ищет меньше 1 секунды. 43 минуты назад, gamehikker сказал: Эта сигнатура связана с самим движком Использовать SDK Unity Ссылка на комментарий Поделиться на другие сайты Поделиться
gamehikker Опубликовано 20 октября, 2017 Автор Поделиться Опубликовано 20 октября, 2017 6 минут назад, partoftheworlD сказал: Это странно, 5 гб в оперативе battlefield 1 ищет меньше 1 секунды. От компа зависит Ссылка на комментарий Поделиться на другие сайты Поделиться
gamehikker Опубликовано 20 октября, 2017 Автор Поделиться Опубликовано 20 октября, 2017 (изменено) Ну мне нужен адрес инструкции . Адрес у неё динамический и после перезапуска игры , адрес поменяется и инструкцию придётся искать снова . Может быть как-то с помощью трассировки можно ? Изменено 20 октября, 2017 пользователем gamehikker Ссылка на комментарий Поделиться на другие сайты Поделиться
temtriss Опубликовано 20 октября, 2017 Поделиться Опубликовано 20 октября, 2017 3 часа назад, gamehikker сказал: От компа зависит эммм... а Вы уверены в правильности Вашей функции поиска сигнатур? для примера 2гб оепативы у меня сканируется около 2-3 сек на планшете!!!(Intel Atom 1.44Ghz) Я почему-то сомневаюсь, что у вас комп слабее моего планшета... Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 21 октября, 2017 Поделиться Опубликовано 21 октября, 2017 5 часов назад, temtriss сказал: Вы уверены в правильности Вашей функции поиска сигнатур Я думаю дело в самой игре, самопальные движки как зря раскидывают память и видимо сканер не сумев найти заданный модуль начинает перелопачивать всю память. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
rtm Опубликовано 21 октября, 2017 Поделиться Опубликовано 21 октября, 2017 1 час назад, partoftheworlD сказал: Я думаю дело в самой игре, самопальные движки как зря раскидывают память и видимо сканер не сумев найти заданный модуль начинает перелопачивать всю память. Исходя из кода - не должен. А вот постоянное выделение и освобождение буфера - затратно. Лучше выделить кусок побольше и с ним работать. И еще б неплохо регион на PAGE_EXECUTE проверять. Ссылка на комментарий Поделиться на другие сайты Поделиться
gamehikker Опубликовано 21 октября, 2017 Автор Поделиться Опубликовано 21 октября, 2017 6 часов назад, rtm сказал: PAGE_EXECUTE проверять. Да , пожалуй , это верно подмечено Ссылка на комментарий Поделиться на другие сайты Поделиться
gamehikker Опубликовано 22 октября, 2017 Автор Поделиться Опубликовано 22 октября, 2017 Нашёл пятиуровневые указатели (очень много) сканер не нужен теперь .Думаю , это успех Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 22 октября, 2017 Поделиться Опубликовано 22 октября, 2017 27 минут назад, gamehikker сказал: Нашёл пятиуровневые указатели (очень много) сканер не нужен теперь .Думаю , это успех Указатели ненадежные Ссылка на комментарий Поделиться на другие сайты Поделиться
gamehikker Опубликовано 22 октября, 2017 Автор Поделиться Опубликовано 22 октября, 2017 3 часа назад, partoftheworlD сказал: Указатели ненадежные их 23000 , игру и пк перезапускал несколько раз . Указатели остаются рабочими .Но нужно проверить на другом компьютере , чтобы быть на 100% уверенным Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 22 октября, 2017 Поделиться Опубликовано 22 октября, 2017 2 часа назад, gamehikker сказал: их 23000 Если чит/трейнер рассчитан на долгое использование, то указатели лучше не использовать 1 обновление и все они отвалятся. Ссылка на комментарий Поделиться на другие сайты Поделиться
gamehikker Опубликовано 23 октября, 2017 Автор Поделиться Опубликовано 23 октября, 2017 21 час назад, partoftheworlD сказал: 1 обновление и все они отвалятся. В моём случае это только плюс . Но я думаю , что всё будет норм и так Ссылка на комментарий Поделиться на другие сайты Поделиться
IzerodayI Опубликовано 23 октября, 2017 Поделиться Опубликовано 23 октября, 2017 (изменено) 1 час назад, gamehikker сказал: В моём случае это только плюс . Но я думаю , что всё будет норм и так а после обновления заново продавать ? Изменено 23 октября, 2017 пользователем IzerodayI Ссылка на комментарий Поделиться на другие сайты Поделиться
gamehikker Опубликовано 23 октября, 2017 Автор Поделиться Опубликовано 23 октября, 2017 55 минут назад, IzerodayI сказал: а после обновления заново продавать ? Ну не XD , хотя было бы забавно . Ссылка на комментарий Поделиться на другие сайты Поделиться
IzerodayI Опубликовано 23 октября, 2017 Поделиться Опубликовано 23 октября, 2017 2 часа назад, gamehikker сказал: Ну не XD , хотя было бы забавно . Тогда какие плюсы ? ))) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения