Псевдослучайные генераторы могут быть очень разными, поэтому разберитесь какую функцию Вам нужно перехватить, и перехватывайте ее обычным способом (перехват функций тема изъезженная)
да эт ясно, читал статьи Ms-Rem когда он еще был жив. просто думал есть уже готовые примеры хука рандома дельви функции, да хоть любого языка, многие же виндовые вызовы используют. думал есть уже что универсальное. бум думать
на сколько я помню у delphi random не импортируемая функция, она встраивается в саму программу, так-что Вы можете просто для конкретной программы эту функцию найти и переписать код, или переменную которая используется для последующей итерации.
вот моя функция рэндом Код (Text): UINT Random_uint16() { RandSeed = (214013* RandSeed +2531011); return (RandSeed >> 16); } могу ещё 100 таких написать и ни одну не будет похожа на предыдущую, ring4, как ты их перехватишь? понял суть? рэндом функция это не CreateFile и не OpenProcess, это креатифф прогера
rpy3uH Если вы делаете srand от time() то перехват GetLocalTime сделает ваш "random" константной последовательностью. Поэтому идет (в защитах) паранойя типа rdtsc.
Смотрите как в сорцах дисккриптора сделан рандом (энтропия общая просто огромная) - там есть все возможные методы. ну или почти все.
Malfoy А это реально работает? Я давно потратил часов 6 на это но исключения так и не удалось наблюдать. Может это не для всех CPU?
PSR1257II Что я вам могу ответить. Сам я это не юзаю, может быть когдато давно и проверял(когда я начинал изучать x86 и NT я юзал всякие извращения для проверки манов и своих идей, но это было так давно, что я не могу даже сказать юзал я это или нет). Когдато я даже вроде задавал вопрос про отслеживание тск, хотя не уверен. Вы поймите меня, я каждый день перевариваю стока инфы, что спустя года я не могу вспомнить что было. В манах я недавно смотрел, перед ответом тс, хотя я и знал, но чтобы убедиться и не допустить ошибки, которая введёт в заблуждение человека. Я так всегда поступаю. Это к стати позволяет их запомнить, фактически я занаю их наизусть. Что касается вашего вопроса - мы можем это проверить. Элементарная загрузка своего шлюза. Думаю никаких проблем не будет(или небыло ?). Для написания движка мы можем найти KiDebugRoutine и обработать фолт, это примитивно.
Malfoy В то время когда я это делал я делал это с softice+win98, только так я мог получить полный контроль над системой. Далее я грузил sys который поставит этот флажок/или патчил из ice'а и из user32 (потом я пытался вроде и в r0) вызывал rdtsc. Вначале вроде были исключения но я перепроверил и нашел что это была моя ошибка. Все мои последующие проверки ничего не дали. Так что проверить я щас это прямо не смогу, мне нужно будет некоторое время (на освоение как это сделать в xp), я тут извиняюсь. Если я правильно помню, нужно ожидать 0xD? Или #UD? Уже забыл
PSR1257II #GP будет. Немного протрезвею, закодю сие в виде двигателя. В принципе есть тонна кода готового.