Просмотр полной версии : Релизы от Great
Моя простенькая программка для загрузки/вырузки драйверов.
Выкладываю в связи с тем, что просили уже минимум двое :)
Сам её юзаю для загрузки своих дров ;)
Open Source, язык Си.
Поддержка Drag'N'Drop для SYS файлов (перетаскивание мышкой драйвера в окно проги:) )
http://img519.imageshack.us/img519/4121/ldvpr2.png
ZIP в аттаче с сорсами и бинарником.
loaddriver.zip (https://forum.antichat.ru/attachment.php?attachmentid=496)
* * *
Определение NTSTATUS- и BugCheck-кодов в винде (названия констант) по номеру
http://gr8.cih.ms/uploads/ntbc.png
Слить: http://gr8.cih.ms/uploads/ntstatus.exe (~45 Kb)
Вообщем, я, наверное, норкоман, но все же.
Загрузчик защищенного режима
Писал я загрузчик для статьи, да так расписался, что получилось что-то типа мини ОС =\\\
Вот: http://gr8.cih.ms/uploads/loader2.rar (13 Kb)
http://gr8.cih.ms/uploads/ldr2.png
Вообщем эта шня умеет:
- Переходит в защищенный режим
- Ставит обработчики исключений, IRQ и программных прерываний + свой сервис
- Умеет переходить обратно в реальный
- Умеет делать DPC (Deferred Procedure Call) - можно поставить в очередь процедуру, которая будет запущена при следующем вызове IRQ0 системного таймера
- Обработка IRQ1 от клавиатуры - можно набирать текст :)) Обрабатывает из дополнительных клавиш Shift, Backspace, Enter.
- По нажанию Esc очищает экран через переход в реальный режим и вызов там прерывания биоса
- Обработчик исключений выводит полный дамп контекста
- Хотел добавить встроенный отладчик, но задолбало( В итоге оно обрабатывает только нажание Ctrl-F12, от которого падает в #UD
Вот так +) Даже не знаю как его назвать, пусть будет просто "загрузчик". Вообщем надеюсь, что сорсы комунить пригодятся ;)
//на него убито дохрена времени =\\ может допишу до чегонить более интересного
Утилита для просмотра списка устройств и IRP-стека каждого устройства
http://gr8.cih.ms/uploads/dd.png
Программа показывает список устройств в системе. Для каждого устройства можно посмотреть его 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
А что эт значит?? Щелкаешь парвой кнопкой на файле EXE/DLL/SYS с проводнике и там есть пункт меню "Generate import library". Добавление-снятие этого пункта регулируется флажком в главном окне
>>библиотека импорта генерируется не самостоятельно (хотя этот вариант я хочу написать), а с помощью создания временного .DEF файла и вызова lib.exe из пакета ms linker'а для генерации либы.
А в чем тогда смысл??
Смысл в автоматической генерации, фактически, .DEF-файла. Автоматизация - ведь сначала надо открыть длл в Dependency Walker, скопипастить экспорты, чтобы всем фунциям какойто префикс дат надо вообще регулярку делать для замены.
а потом еще и lib(link) вручную запускать
>>Поэтому путь к линкеру должен быть в path.
А как мне его туда прописать
если у тебя стоит ms visual studio, онтам уже есть.
Еще он почему-то не закрывается после нажатия на крестик, приходится убивать его в процессах.
Второй человек сообщает об этом.. странно, у меня нет такого ни на дом. компе, ни на ноуте, ни на виртуалке
Щелкаешь парвой кнопкой на файле EXE/DLL/SYS с проводнике и там есть пункт меню "Generate import library". Добавление-снятие этого пункта регулируется флажком в главном окне
Ясно! Можно было б по-проще фразу сказать :)
Смысл в автоматической генерации, фактически, .DEF-файла. Автоматизация - ведь сначала надо открыть длл в Dependency Walker, скопипастить экспорты, чтобы всем фунциям какойто префикс дат надо вообще регулярку делать для замены.
а потом еще и lib(link) вручную запускать
Да не так уж и сложно на самом деле.
если у тебя стоит ms visual studio, онтам уже есть.
Вот в том то и дело что стоит, а не работает, каждый раз чтобы нормально скомпилировать что-то я запускаю enviroment батник, и все параметры устанавливаются но только на одну сессию, стоит закрыть окошко и открыть заново cmd exe, он уже не увидит cl.exe/линкер и т.д.
Второй человек сообщает об этом.. странно, у меня нет такого ни на дом. компе, ни на ноуте, ни на виртуалке
Подозрительно. Тем более программка человека, увлекающегося дровописанием.
Подозрительно. Тем более программка человека, увлекающегося дровописанием.
не понял намека =)
Вот в том то и дело что стоит, а не работает, каждый раз чтобы нормально скомпилировать что-то я запускаю 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
procedure
28.11.2008, 11:16
Как ты чару такой размер выставил?
Очень просто он сделал, массив из char может быть произвольной длинны. Что мешает?
А запись целочисленного значения, в одну конкретную ячейку может быть при unsigned char 0...255, типа (без знака). Со знаком будет -128...127
Я на С не пишу, но могу показать пример на C# с двумя переменными char:
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]);
}
}
}
}
Насколько нас учили, в си++ макс. длина чара - 255.
Странно как-то учили...
Он через драйвер режима ядра переопределил размер чаров в системе... +))
Жесть
procedure
28.11.2008, 12:27
Chaak->
Ты гонишь, ты говоришь о ячейке, а не длине массива...(((
Точно так же в С++:
char str[1024];
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot