![]() |
eXeL@B —› Вопросы новичков —› Для знатоков асма |
Посл.ответ | Сообщение |
|
Создано: 24 октября 2007 11:02 · Поправил: tempread · Личное сообщение · #1 В нашем распоряжении есть 4 статичных байта в изменяющемся коде. Есть регистр eax, в котором находится адрес такого вида 0xfd452bc3 (сама программа - это драйвер). Необходимо записать в eax число,как можно более близкое к максимальному положительному числу,используя 4 свободных байта для кода. И желательно, что бы работа кода не зависела от начального значения регистра eax. На данный момент, я использую shr eax,4. Но я точно не могу быть уверен, что ВСЕГДА в eax будет подходящее мне значение... Так что жду предложений ![]() ![]() |
|
Создано: 24 октября 2007 11:47 · Личное сообщение · #2 |
|
Создано: 24 октября 2007 12:37 · Поправил: tempread · Личное сообщение · #3 Прервался на начале выполнения этих четырех байт: [url=http://img81.imageshack.us/img81/3470/driverww4.png ]http://img81.imageshack.us/img81/3470/driverww4.png [/url] В первом посте сделал небольшую ошибочку, там вместо eax следует читать ebx. tnt17 Дело в том, что нельзя сказать,код полностью линейный или нет. Поэтому нельзя быть 100% уверенным,что значения в стеке всегда будут такими. Но если есть какие-то мысли - то сразу говори, а я уж буду их приспосабливать к конкретной ситуации Значение, которое в ebx дальше в коде сравнивается с двордом,полученым функцией KeQuerySystemTime, у меня он равен 1C81623. Таким образом проверяется триал.(и это все в простеньком полиморфике) ![]() |
|
Создано: 24 октября 2007 13:37 · Личное сообщение · #4 |
|
Создано: 24 октября 2007 13:54 · Поправил: tempread · Личное сообщение · #5 tnt17 К сожалению, патчить нельзя - этого кода нету в открытом виде в драйвере, более того, после отработки в памяти он будет затерт другим кодом. В принципе, тот код, что я приводил,работает везде, где я тестил, так что если нет другой возможности, то пусть все остается как есть... Я еще пробовал вариант инлайна, но простой джамп в конец драйвера,правка регистра и возвращения обратно приводило к синему экрану. С работой на нулевом кольце знаком очень плохо, поэтому возможно что-то делал не так... Но это так к слову, если надо будет - разберусь и с этим ![]() ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Для знатоков асма |