Моя простенькая программка для загрузки/вырузки драйверов. Выкладываю в связи с тем, что просили уже минимум двое Сам её юзаю для загрузки своих дров Open Source, язык Си. Поддержка Drag'N'Drop для SYS файлов (перетаскивание мышкой драйвера в окно проги ) ZIP в аттаче с сорсами и бинарником. loaddriver.zip * * * Определение NTSTATUS- и BugCheck-кодов в винде (названия констант) по номеру Слить: http://gr8.cih.ms/uploads/ntstatus.exe (~45 Kb)
Вообщем, я, наверное, норкоман, но все же. Загрузчик защищенного режима Писал я загрузчик для статьи, да так расписался, что получилось что-то типа мини ОС =\\\ Вот: http://gr8.cih.ms/uploads/loader2.rar (13 Kb) Вообщем эта шня умеет: - Переходит в защищенный режим - Ставит обработчики исключений, IRQ и программных прерываний + свой сервис - Умеет переходить обратно в реальный - Умеет делать DPC (Deferred Procedure Call) - можно поставить в очередь процедуру, которая будет запущена при следующем вызове IRQ0 системного таймера - Обработка IRQ1 от клавиатуры - можно набирать текст ) Обрабатывает из дополнительных клавиш Shift, Backspace, Enter. - По нажанию Esc очищает экран через переход в реальный режим и вызов там прерывания биоса - Обработчик исключений выводит полный дамп контекста - Хотел добавить встроенный отладчик, но задолбало( В итоге оно обрабатывает только нажание Ctrl-F12, от которого падает в #UD Вот так +) Даже не знаю как его назвать, пусть будет просто "загрузчик". Вообщем надеюсь, что сорсы комунить пригодятся //на него убито дохрена времени =\\ может допишу до чегонить более интересного
Утилита для просмотра списка устройств и IRP-стека каждого устройства Программа показывает список устройств в системе. Для каждого устройства можно посмотреть его IRP-стек и положение этого устройства в стеке. Исходники GUI и драйвера прилагаются. http://gr8.cih.ms/uploads/devstack.rar (14 KB) http://gr8.cih.ms/uploads/devstack-src.rar (17 KB)
gr8lkd - аналог livekd, устанавливает драйвер-фильтр файловой системы, эмулирующий фиктивный файл крешдампа системы для анализа с помощью kd или WinDbg Файл "создается" на диске C:\ с именем gr8lkd.dmp, на самом деле на диске создается только пустой файл, а все обращения к нему эмулируются - никакие данные файла на диске не хранятся. Драйвер фильтра невыгружаем. Поэтому в управляющей программе можно загрузить драйвер, начать обработку запросов к дампу и приостановить обработку запросов к дампу. Исходники прилагаются. ЗЫ. Может иногда бсодить, полноценно не тестировалось, но вроде работает ЗЫЫ. Драйвер работает только для XP SP2 Free Build 2600 Посвящается ProTeuS'у в честь его дня рождения http://gr8.cih.ms/uploads/gr8lkd.rar (150 Кб) - исходники и бинарники драйвера и управляющей программы ЗЫЫЫ. Для тех, кто в танке - анализ дампа запускается так: i386kd -z C:\gr8lkd.dmp или windbg -z C:\gr8lkd.dmp
Грит кушает витамины для кодеров, покупайте в аптеке и тоже будете разные драйвера кодить. Только выражен синдром отмены - кончились таблетки и вы забыли как запускать визуал студию и вообще комп включать.
Import Library Generator 1.0 Утилита предназначена для генерации библиотеки импорта для исполняемого PE файла и обладает следующими возможностями: - встраивание в контекстное меню оболочки для файлов EXE, DLL, SYS - возможность просмотра экспорта файла и выбора списка функций для помещения в библиотеку импорта - возможность удаления, добавления cdecl или произвольного префикса и суффикса к именами файла. - библиотека импорта генерируется не самостоятельно (хотя этот вариант я хочу написать), а с помощью создания временного .DEF файла и вызова lib.exe из пакета ms linker'а для генерации либы. Поэтому путь к линкеру должен быть в path. Замечено пару глюков с экспортом, в след. версии исправлю.
>>- встраивание в контекстное меню оболочки для файлов EXE, DLL, SYS А что эт значит?? >>библиотека импорта генерируется не самостоятельно (хотя этот вариант я хочу написать), а с помощью создания временного .DEF файла и вызова lib.exe из пакета ms linker'а для генерации либы. А в чем тогда смысл?? >>Поэтому путь к линкеру должен быть в path. А как мне его туда прописать (я вдел скриншот в интернете где path можно изменить по иконке "система" в настройках управления и еще в реестре видел как ее можно настроить персонально для каждого приложения, а как мне сделать все правильно?)? upd: я нашел кнопочку. Еще он почему-то не закрывается после нажатия на крестик, приходится убивать его в процессах.
Щелкаешь парвой кнопкой на файле EXE/DLL/SYS с проводнике и там есть пункт меню "Generate import library". Добавление-снятие этого пункта регулируется флажком в главном окне Смысл в автоматической генерации, фактически, .DEF-файла. Автоматизация - ведь сначала надо открыть длл в Dependency Walker, скопипастить экспорты, чтобы всем фунциям какойто префикс дат надо вообще регулярку делать для замены. а потом еще и lib(link) вручную запускать если у тебя стоит ms visual studio, онтам уже есть. Второй человек сообщает об этом.. странно, у меня нет такого ни на дом. компе, ни на ноуте, ни на виртуалке
Ясно! Можно было б по-проще фразу сказать Да не так уж и сложно на самом деле. Вот в том то и дело что стоит, а не работает, каждый раз чтобы нормально скомпилировать что-то я запускаю enviroment батник, и все параметры устанавливаются но только на одну сессию, стоит закрыть окошко и открыть заново cmd exe, он уже не увидит cl.exe/линкер и т.д. Подозрительно. Тем более программка человека, увлекающегося дровописанием.
не понял намека =) Это настраивается в свойствах системы вроде. Control Panel -> System -> Adv -> Environment Variables кажется
Syscall Generator Написал на коленке мини-тулзу генерировать автоматом хидеры для номеров Native сервисов (зо ипалсо каждый раз лазить в ntdll смотреть) Перебирает экспорт ntdll. Исходничек: http://www.everfall.com/paste/id.php?wucqs2cq73to Вывод (на моей системе): http://www.everfall.com/paste/id.php?7v5ikyvrzmrp
Очень просто он сделал, массив из char может быть произвольной длинны. Что мешает? А запись целочисленного значения, в одну конкретную ячейку может быть при unsigned char 0...255, типа (без знака). Со знаком будет -128...127 Я на С не пишу, но могу показать пример на C# с двумя переменными char: Code: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { char[] str = new char[1000]; char[] str2; for (int i = 0; i < 1000; i++) { str[i] = (char)i; Console.WriteLine(str[i]); } str2 = new char[280]; for (int i = 0; i < 280; i++){ str2[i] = (char)i; Console.WriteLine(str2[i]); } } } }
Chaak-> Ты гонишь, ты говоришь о ячейке, а не длине массива...((( Точно так же в С++: Code: char str[1024];