Задался этим вопросом, решил не экспериментировать, а тупо посмотреть дебаггером как это делает СЕ. Увидел интересную картину:
VirtualProtectEx с флагом "PAGE_EXECUTE_READWRITE"
WriteProcessMemory с замороженным значением
VirtualProtectEx с флагом "PAGE_READWRITE"
И так по кругу, разумеется, с огромной скоростью. И собственно не понимаю что за игра флагами идёт? Оба флага позволяют запись, то есть приложение может писать по этому адресу так или иначе. При этом зачем первый флаг, если для WriteProcessMemory флаг исполнения совершенно не важен. В общем, какая логика в этом цикле? И может тупо выставить PAGE_READONLY?
Я не оказываю услуги гаранта!
База данных кидал: blacklist.rf-cheats.ru
Обязательно проверяйте человека через чёрный список прежде чем совершать с ним сделку.
Задался этим вопросом, решил не экспериментировать, а тупо посмотреть дебаггером как это делает СЕ. Увидел интересную картину:
VirtualProtectEx с флагом "PAGE_EXECUTE_READWRITE"
WriteProcessMemory с замороженным значением
VirtualProtectEx с флагом "PAGE_READWRITE"
И так по кругу, разумеется, с огромной скоростью. И собственно не понимаю что за игра флагами идёт? Оба флага позволяют запись, то есть приложение может писать по этому адресу так или иначе. При этом зачем первый флаг, если для WriteProcessMemory флаг исполнения совершенно не важен. В общем, какая логика в этом цикле? И может тупо выставить PAGE_READONLY?
яб сделал так:
сканируем нужный адрес, берём значение, меняем его ну или не меняем, запоминаем получившееся значение, и делаем цикл, внтури цикла чекаем изменилось ли значение по адресу или нет, если изменилось то перезаписать тем, что запомнили, если не изменилось то едем дальше.
яб сделал так:
сканируем нужный адрес, берём значение, меняем его ну или не меняем, запоминаем получившееся значение, и делаем цикл, внтури цикла чекаем изменилось ли значение по адресу или нет, если изменилось то перезаписать тем, что запомнили, если не изменилось то едем дальше.
А зачем чекать?Может тупо присваивать то значение ,которое запомнили и все.
А зачем чекать?Может тупо присваивать то значение ,которое запомнили и все.
Именно, сразу исключаются лишние операции.
to dark, у СЕ исходники открыты скачай с офсайта и посмотри как там реализована заморозка. Правда там на паскале и в некоторых местах тот еще гавнокод.
яб сделал так:
сканируем нужный адрес, берём значение, меняем его ну или не меняем, запоминаем получившееся значение, и делаем цикл, внтури цикла чекаем изменилось ли значение по адресу или нет, если изменилось то перезаписать тем, что запомнили, если не изменилось то едем дальше.
while(1) { memcpy(ptr, &digit, 4); Sleep(50) }
Делов то.. не понятно было зачем СЕ права такие выставляет.
Цитата:
Сообщение от Тигрь
Дарк ты нуб.
Ну а ты можешь объяснить эти манипуляции с правами?
Цитата:
Сообщение от Тигрь
Именно, сразу исключаются лишние операции.
to dark, у СЕ исходники открыты скачай с офсайта и посмотри как там реализована заморозка. Правда там на паскале и в некоторых местах тот еще гавнокод.
Да пофигу, сделал memcpy() в цикле каждые 50 мсек и всё
Я не оказываю услуги гаранта!
База данных кидал: blacklist.rf-cheats.ru
Обязательно проверяйте человека через чёрный список прежде чем совершать с ним сделку.
while(1) { memcpy(ptr, &digit, 4); Sleep(50) }
Делов то.. не понятно было зачем СЕ права такие выставляет.
Ну а ты можешь объяснить эти манипуляции с правами?
Да пофигу, сделал memcpy() в цикле каждые 50 мсек и всё
Неа я тоже нуб честно говоря ума не приложу зачем он это делает, в исхониках смотреть лень ибо там черт ногу сломит.
Ты главное исключения воткни чтоб случайна не обратиться к памяти которая ниможет быть рид, точнее чтоб не крашло если в такую область попадешь по испорченным указателям.
- в случае навеса PAGE_READONLY на перезаписываемый адрес мы словим эксепшен при первой же попытки приложения изменить значение по этому адресу
- сверка значения с тем, которое должно быть заморожено работает гораздо быстрее чем бездумная перезапись. И только когда замороженный адрес программа пытается переписывать по 1000 раз за секунду, вот тогда перезапись без проверки даст выйгрыш на кол-ве операций, в остальных случаях фильтр будет куда быстрее
PjOrion - текстовый редактор для компиляции, декомпиляции и обфускации модов на питоне