Senpai Опубликовано 23 июня, 2019 Поделиться Опубликовано 23 июня, 2019 Почему-то данный код работает очень долго, если использовать на процессе x64 while (VirtualQueryEx(hndl, (LPCVOID)(0 + offset), &mbi, sizeof(MEMORY_BASIC_INFORMATION))) { if (mbi.State == MEM_COMMIT) { cc++; } offset += mbi.RegionSize; } на x32 работает нормально Ссылка на комментарий Поделиться на другие сайты Поделиться
TechnoBOY Опубликовано 23 июня, 2019 Поделиться Опубликовано 23 июня, 2019 (изменено) Большее адресное пространство памяти. Больше памяти для сканирования. Для примера: В CheatEngine должен был заметить начало и конец адресов сканирования. x32 - 0 до 7FFFFFFF x64 - 0 до 7FFFFFFFFFFFFFFF Изменено 23 июня, 2019 пользователем TechnoBOY Ссылка на комментарий Поделиться на другие сайты Поделиться
Senpai Опубликовано 23 июня, 2019 Автор Поделиться Опубликовано 23 июня, 2019 12 минут назад, TechnoBOY сказал: x64 - 0 до 7FFFFFFFFFFFFFFF но ведь процесс не обязательно занимает столько памяти. Нужно как-то определить количество памяти, выделенной под x64 процесс Ссылка на комментарий Поделиться на другие сайты Поделиться
Senpai Опубликовано 23 июня, 2019 Автор Поделиться Опубликовано 23 июня, 2019 Я понял свою ошибку, тогда вопрос, как сканировать только память процесса и не перебирать все страницы памяти? Ссылка на комментарий Поделиться на другие сайты Поделиться
Hack Опубликовано 23 июня, 2019 Поделиться Опубликовано 23 июня, 2019 Скомпилировал как 32bit или 64bit? Ссылка на комментарий Поделиться на другие сайты Поделиться
Senpai Опубликовано 23 июня, 2019 Автор Поделиться Опубликовано 23 июня, 2019 1 минуту назад, Hack сказал: Скомпилировал как 32bit или 64bit? 32 бит, не думаю, что это влияет. while (VirtualQueryEx(hndl, (LPCVOID)(0 + offset), &mbi, sizeof(MEMORY_BASIC_INFORMATION))) { if (mbi.State == MEM_COMMIT) { cc++; } offset += mbi.RegionSize; } в цикле перебираются все страницы памяти. Если перебирать их в процессе x64, то это окажется невероятно долго ,вот в чём проблема. Нужно как-то перебирать только страницы определённого процесса Ссылка на комментарий Поделиться на другие сайты Поделиться
Hack Опубликовано 23 июня, 2019 Поделиться Опубликовано 23 июня, 2019 Как же не влияет. Сколько весит переменная где ты хранишь адрес? 32bit? он может хранить такой адрес 7FFFFFFFFFFFFFFF? VirtualQueryEx и эта функция не может принять 64bit адрес. На сколько долго он у тебя сканирует, бесконечно? Ссылка на комментарий Поделиться на другие сайты Поделиться
Senpai Опубликовано 23 июня, 2019 Автор Поделиться Опубликовано 23 июня, 2019 Только что, Hack сказал: На сколько долго он у тебя сканирует, бесконечно? Примерно да Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 23 июня, 2019 Поделиться Опубликовано 23 июня, 2019 5 часов назад, Senpai сказал: тогда вопрос, как сканировать только память процесса и не перебирать все страницы памяти? if(mbi.State != MEM_FREE) плюс цикл не верный, ты вообще в курсе как будет такой цикл работать? while (VirtualQueryEx(hndl, (LPCVOID)(0 + offset), &mbi, sizeof(MEMORY_BASIC_INFORMATION))) Ссылка на комментарий Поделиться на другие сайты Поделиться
Senpai Опубликовано 24 июня, 2019 Автор Поделиться Опубликовано 24 июня, 2019 9 часов назад, partoftheworlD сказал: if(mbi.State != MEM_FREE) плюс цикл не верный, ты вообще в курсе как будет такой цикл работать? while (VirtualQueryEx(hndl, (LPCVOID)(0 + offset), &mbi, sizeof(MEMORY_BASIC_INFORMATION))) А а как? while(offset<size) ? Я не понял, почему так много страниц памяти? Мне нужна только память процесса Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 24 июня, 2019 Поделиться Опубликовано 24 июня, 2019 4 часа назад, Senpai сказал: Мне нужна только память процесса https://github.com/x64dbg/x64dbg/blob/7d53b1ae08814665405e84bf39d0a016ab911df5/src/dbg/memory.cpp Ссылка на комментарий Поделиться на другие сайты Поделиться
Senpai Опубликовано 24 июня, 2019 Автор Поделиться Опубликовано 24 июня, 2019 54 минуты назад, partoftheworlD сказал: https://github.com/x64dbg/x64dbg/blob/7d53b1ae08814665405e84bf39d0a016ab911df5/src/dbg/memory.cpp не понял, но очень интересно, почему, когда я вывожу в цикле размеры страниц памяти, их получается так много? Это нормально чи не? 5 часов назад, Senpai сказал: Ссылка на комментарий Поделиться на другие сайты Поделиться
Senpai Опубликовано 24 июня, 2019 Автор Поделиться Опубликовано 24 июня, 2019 кто-то может объяснить? Ссылка на комментарий Поделиться на другие сайты Поделиться
imaginary Опубликовано 24 июня, 2019 Поделиться Опубликовано 24 июня, 2019 44 минуты назад, Senpai сказал: кто-то может объяснить? А что ты сделать то хочешь ?? Ссылка на комментарий Поделиться на другие сайты Поделиться
Senpai Опубликовано 24 июня, 2019 Автор Поделиться Опубликовано 24 июня, 2019 9 минут назад, imaginary сказал: А что ты сделать то хочешь ?? получить адреса страниц памяти определённого процесса Ссылка на комментарий Поделиться на другие сайты Поделиться
imaginary Опубликовано 25 июня, 2019 Поделиться Опубликовано 25 июня, 2019 11 часов назад, Senpai сказал: получить адреса страниц памяти определённого процесса Тогда 18 часов назад, Senpai сказал: их получается так много? Это нормально чи не? Нормально Ссылка на комментарий Поделиться на другие сайты Поделиться
Senpai Опубликовано 26 июня, 2019 Автор Поделиться Опубликовано 26 июня, 2019 В 25.06.2019 в 10:38, imaginary сказал: Тогда Нормально почему получается 34 мб? Хотя GetProcessMemoryInfo(hndl, &pmc, sizeof(PROCESS_MEMORY_COUNTERS)); cout << pmc.WorkingSetSize/1024 << endl; выдаёт 6512 кб Ссылка на комментарий Поделиться на другие сайты Поделиться
imaginary Опубликовано 26 июня, 2019 Поделиться Опубликовано 26 июня, 2019 Только что, Senpai сказал: почему получается 34 мб? В комментарии к RegionSize"Размер области, начинающейся с базового адреса, в котором все страницы имеют одинаковые атрибуты, в байтах." Там ещё есть cb "Размер структуры в байтах." Посмотри это, хотя я не особо понимаю зачем тебе, если и так можно получить размер рабочей области Ссылка на комментарий Поделиться на другие сайты Поделиться
Senpai Опубликовано 29 июня, 2019 Автор Поделиться Опубликовано 29 июня, 2019 В 26.06.2019 в 18:19, imaginary сказал: В комментарии к RegionSize"Размер области, начинающейся с базового адреса, в котором все страницы имеют одинаковые атрибуты, в байтах." Там ещё есть cb "Размер структуры в байтах." Посмотри это, хотя я не особо понимаю зачем тебе, если и так можно получить размер рабочей области нет, вы не поняли. Вопрос в том, почему в сумме страницы памяти процесса (mem_commit) занимают 34 мб? Ссылка на комментарий Поделиться на другие сайты Поделиться
imaginary Опубликовано 30 июня, 2019 Поделиться Опубликовано 30 июня, 2019 20 часов назад, Senpai сказал: почему в сумме страницы Потому что " Размер области, начинающейся с базового адреса, в котором все страницы имеют одинаковые атрибуты, в байтах" Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения