Красноглазим дальше
[info]the_bizarro
http://rapidshare.de/files/48739241/ntoskrnp.7z.html

По настоятельной просьбе гражданина proxis с forums.overclockers.ru, кернел от w7/2008R2 с отломанными DSE и PatchGuard версии 6.1.7600.20555.

OCZ не говно
[info]the_bizarro
Сабж )







Метки:

Изврат в процессе
[info]the_bizarro


/me таки не оставляет надежд написать нормальный драйвер для перехвата HalGetBusDataByOffset на платформе AMD64. Кое-что уже получилось, резалт на скрине с отладчиком... Цитаты из него же:

До установки хука:

kd> u hal!HalGetBusDataByOffset
hal!HalGetBusDataByOffset:
fffff800`019eaa70 48895c2408      mov     qword ptr [rsp+8],rbx
fffff800`019eaa75 4889742410      mov     qword ptr [rsp+10h],rsi
fffff800`019eaa7a 57              push    rdi
fffff800`019eaa7b 4881ece0000000  sub     rsp,0E0h
fffff800`019eaa82 498bf9          mov     rdi,r9
fffff800`019eaa85 418bf0          mov     esi,r8d
fffff800`019eaa88 8bda            mov     ebx,edx
fffff800`019eaa8a 85c9            test    ecx,ecx


После:

kd> u hal!HalGetBusDataByOffset
hal!HalGetBusDataByOffset:
fffff800`019eaa70 48b838211a0580f8ffff mov rax,offset x58_amd64!RetAddrPointer (fffff880`051a2138)
fffff800`019eaa7a 488920          mov     qword ptr [rax],rsp
fffff800`019eaa7d 48b860031a0580f8ffff mov rax,offset x58_amd64!MyHalGetBusDataByOffset (fffff880`051a0360)
fffff800`019eaa87 50              push    rax
fffff800`019eaa88 c3              ret
fffff800`019eaa89 da85c9746a83    fiadd   dword ptr [rbp-7C958B37h]
fffff800`019eaa8f f9              stc
fffff800`019eaa90 0475            add     al,75h

Адрес возврата и управление корректно получаем, над остальным будем думать завтра... Собственно, само творение:

http://rapidshare.de/files/48473770/x58.7z.html

Собирается как для х86, так и для амд64... Но на амд64 для работы надо ядро без патчгуарда.

Метки:

Вот такие дела
[info]the_bizarro
Ставлю на виртуалбокс версию NT 6.1 для хомячков... Посмотрим, что из этого выйдет :)



Метки:

Полуночные багфиксы
[info]the_bizarro
Малость обновил кернел...

http://rapidshare.de/files/48455950/ntoskrnl_no_testsigning_no_patchguard_6.1.7600.20510_rev3.7z.html

Версия оригинала 6.1.7600.20510. По сравнению с предыдущим вариантом пофиксена пара потенциальных глюков, если у кого перестанет бсодить при старте (было несколько жалоб) -не удивлюсь.
Метки:

Продолжаем потрошить патчгуард :)
[info]the_bizarro
PatchGuard вроде как представляет собой защиту от модификации ядра драйверами. Нужен он вам, или нет-решайте сами.

   Ядро с отключенными проверкой подписей и PatchGuard для 64-битного севена, версия 6.1.7600.20510. Обновлено, устранен бсод 0х7E при некоторых обстоятельствах.

Об использовании можно прочитать в предыдущей заметке, в этом плане ничего не изменилось.

З.Ы. патченные ядра для висты более не поддерживаю, в виду неактуальности. Удалено, пост пока оставил.
Метки:

О ненавистных подписях и тестовом режиме, про севен.
[info]the_bizarro
Собственно, суть та же что и в предыдущем посте, только речь пойдет о W7 и Win 2008 R2. За тем лишь исключением, что на железе пока не оттестировано, но на виртуальной машине работает замечательно.



Уже все выяснилось, работает:

тыц1


тыц2


Для работы модифицированного ядра требуется загрузчик, описанный в предыдущей заметке, в версии для NT 6.1. Скачать подходящий вариант модифицированного ядра и загрузчик можно ссылке:

http://people.overclockers.ru/HertZ/record5

О том, что такое PatchGuard, можно прочитать в предыдущем посте.

Об установке:

1) Копируем файлы ntoskrnp.exe и winload.exe в Windows\System32.

2) открываем окно командной строки от имени администратора, и набираем следующие команды:

bcdedit /copy {current} /d "Patched kernel"

В ответ утилита должна сказать что-то вроде:

The entry was successfully copied to {01234567-89ab-cdef-00ff-fff000ffffff}.

Выделенное-это идентификатор новой записи, его требуется использовать для дальнейших операций. А именно, аналогичных тому что было в предыдущем посте:

bcdedit /set {01234567-89ab-cdef-00ff-fff000ffffff} nointegritychecks 1

bcdedit /set {01234567-89ab-cdef-00ff-fff000ffffff} path \Windows\system32\osloadw7.exe

bcdedit /set {01234567-89ab-cdef-00ff-fff000ffffff} kernel ntoskrnp.exe

bcdedit /set {01234567-89ab-cdef-00ff-fff000ffffff} TESTSIGNING off

Перезагружаемся, выбираем новую запись. Если все работает нормально, то при желании можно сделать новую запись используемой по умолчанию.

bcdedit /default {01234567-89ab-cdef-00ff-fff000ffffff}

Если не работает, желательно сообщить с подробным описанием проблемы. Если вы увидите предупреждение о неподписанном драйвере, не пугайтесь, ядру на отсутствие подписи пофигу, драйвер все равно будет работать. Можно его подписать самостоятельно, и предупреждение не будет выдаваться. 
Метки:

О ненавистных подписях и тестовом режиме, часть вторая.
[info]the_bizarro
Наконец-то разобрался с проверкой подписей драйверов в Server 2008 SP2 amd64, и модифицировал ядро должным образом. Теперь как и в 32-битной висте, подписи драйверов и системных файлов не проверяются. Например, без извратов можно пользоваться такими утилитами, как Ati Tray Tools:




Для работы модифицированного ядра требуется загрузчик, описанный в предыдущей записи. Скачать подходящий вариант модифицированного ядра и загрузчик можно ссылкам:

Ядро с отключенной проверкой подписей, PatchGuard оставлен.
Ядро с отключенными проверкой подписей и PatchGuard.

Теперь об установке.

1) Сначала копируем файлы из архива в Windows\System32.

2) Далее открываем окно командной строки от имени администратора, и набираем следующие команды:

bcdedit /copy {current} /d "Patched kernel"

В ответ утилита должна сказать что-то вроде:

The entry was successfully copied to {01234567-89ab-cdef-00ff-fff000ffffff}.

Выделенное-это идентификатор новой записи, его требуется использовать для дальнеших операций. А именно:

bcdedit /set {01234567-89ab-cdef-00ff-fff000ffffff} nointegritychecks 1

bcdedit /set {01234567-89ab-cdef-00ff-fff000ffffff} path \Windows\system32\osloader.exe

bcdedit /set {01234567-89ab-cdef-00ff-fff000ffffff} kernel ntoskrnp.exe

Если был включен тестовый режим, то выключаем его для новой записи, он нам больше не понадобится:

bcdedit /set {01234567-89ab-cdef-00ff-fff000ffffff} TESTSIGNING off

3) Затем идем в пуск-> выполнить-> services.msc, и обязательно отключаем службу "Software Licensing", или "Лицензирование программного обеспечения". Если не отключить, то при загрузке с модифицированным ядром система будет падать. Эта служба использует функции проверки подписи, которые модифицированным ядром не предоставляются. Над устранением сего досадного недоразумения подумаем. Под W7 такой проблемы нет.


Перезагружаемся, выбираем новую запись в появившемся меню. Если все работает нормально, то при желании можно сделать новую запись используемой по умолчанию. Посмотреть ID записи можно с помощью команды bcdedit /v (для текущей записи можно писать просто {current}):

bcdedit /default {01234567-89ab-cdef-00ff-fff000ffffff}

Ну и установить нулевой таймаут, если не любите менюшки:

bcdedit /timeout 0

Если ядро не работает, то сообщайте мне. Желательно также упоминать, как именно не работает. Обращаю также внимание на то, что загрузчику все же требуются подписи, если будете модифицировать системные файлы. Но неважно, каким сертификатом подписывать.

И еще, не пытайтесь использовать ядро на более ранних версиях венды. Работать будет только на Vista (или Server 2008 ) SP2, 64-битных.
Метки:

О ненавистных подписях и тестовом режиме (обновлено)
[info]the_bizarro
Вот модифицированный мной загрузчик для 64-битной висты, вот для w7. Если использовать их, то нет необходимости пользоваться тестовыми подписями и тестовым режимом для модифицированных системных файлов и драйверов, имеющих тип загрузки SERVICE_BOOT_START.

Устанавливать так:

1. Копируем модифицированный файл в system32, оригинальный файл лучше не заменяем. Это позволит в случае чего "вернуть все в зад"
2. Открываем консоль от имени админа, и вот что делаем:

bcdedit /copy {current} /d "Patched winloader"

На такую команду оно должно отозваться примерно так (для русской аналогично):
"The entry was successfully copied to {01234567-89ab-cdef-00ff-fff000ffffff}"

Далее набиваем, заменив выделенное на свой идентификатор, полученный в предыдущем шаге.

bcdedit /set {01234567-89ab-cdef-00ff-fff000ffffff} nointegritychecks 1
bcdedit /set {01234567-89ab-cdef-00ff-fff000ffffff} path \Windows\system32\osloader.exe

Если был включен тестовый режим и не используются драйверы утилит вроде ATITool, то его можно отключить для новой записи. И без него будет нормально грузиться:
bcdedit /set {01234567-89ab-cdef-00ff-fff000ffffff} TESTSIGNING off

После ребута можно будет выбрать, с каким загрузчиком запускать систему. По-старому, с тестовым режимом или с новым загрузчиком и в нормальном режиме.

А пока работаю над модификацией ntoskrnl.exe, чтобы отрубить проверку и обычных драйверов тоже.
 
З.Ы. заменил битые файлы на нормальные, в первый раз почему-то загрузились не полностью.
Метки:

О пользе сплайсинга
[info]the_bizarro

От нефиг делать реализовал изменение кода функции HalGetBusDataByOffset в рантайме, без физической модификации файла на диске. Работает вполне успешно и беззастенчиво обманывает CPU-Z:


Валидация здесь. Северный мост x58 и SB700-это отжиг еще тот, конечно. Собственно, сам драйвер для 32-битных версий Windows NT можно скачать тут, если кому захочется повторить подобный скрин. :D

Работать будет во всех вендах старше NT4 (проверено на дристе и 2003-ей). Надо только прописать в реестре соответствующую службу. Если не хочется это делать руками, то скачиваем этот экзешник, кладем в один каталог с fake_x58.sys, запускаем и ребутимся. Программа скопирует драйвер в System32\drivers и зарегистрирует соответствующую службу.

Да, и маленькое замечание. Если прописывать службу вручную, то тип сервиса надо указать SERVICE_BOOT_START, чтобы драйвер грузился до инициализации всего и вся.

Как будет время, начну для саморазвития писать аналогичную игрушку под NTamd64... Там благодаря PatchGuard'у это весьма нетривиальная задача.
Метки:

О еде
[info]the_bizarro
Программеров MS явно плохо кормят:
Еда

:D

Метки:

О говнопамяти v 2.0
[info]the_bizarro




Память, как оказалось, судя по значениям в SPD банально не DDR3-1333, а DDR3-1066. Несмотря на то что стикеры на модулях говорят обратное. Очень странно. Но при 1.6v удалось снизить тайминги, и получить лучшие результаты, чем в прошлый раз. :)

Метки: ,

Atom vs. Netburst @ Winrar benchmark
[info]the_bizarro
Intel Atom N270 (Diamondville, одноядерный с HT) 1600MHz
Чипсет 945G
512 DDR2 533 4-4-4-12
WinRAR 3.8
358 кб/с

Intel Pentium 4 (Northwood) 1600MHz
Чипсет i845D
2x512 DDR 266 2.5-3-3-6
WinRAR 3.8
180 кб/с

Вот тебе и говноатом :) 

О говнопамяти
[info]the_bizarro



Мда... Результаты тестов не очень, мягко говоря. И все из-за плашек говнопамяти от кингмакса. :( Должны работать на 1333MHz (9-9-9), но максимум осиливают 1100, видимо брак. :)
Метки:

Просто флуд
[info]the_bizarro
Сабж )

Home