Релизы от Great

Discussion in 'Избранное' started by _Great_, 24 Apr 2007.

  1. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    Моя простенькая программка для загрузки/вырузки драйверов.
    Выкладываю в связи с тем, что просили уже минимум двое :)
    Сам её юзаю для загрузки своих дров ;)
    Open Source, язык Си.
    Поддержка Drag'N'Drop для SYS файлов (перетаскивание мышкой драйвера в окно проги:) )

    [​IMG]

    ZIP в аттаче с сорсами и бинарником.
    loaddriver.zip

    * * *

    Определение NTSTATUS- и BugCheck-кодов в винде (названия констант) по номеру
    [​IMG]
    Слить: http://gr8.cih.ms/uploads/ntstatus.exe (~45 Kb)
     
    #1 _Great_, 24 Apr 2007
    Last edited: 23 Jun 2007
    25 people like this.
  2. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    Вообщем, я, наверное, норкоман, но все же.

    Загрузчик защищенного режима
    Писал я загрузчик для статьи, да так расписался, что получилось что-то типа мини ОС =\\\
    Вот: http://gr8.cih.ms/uploads/loader2.rar (13 Kb)

    [​IMG]

    Вообщем эта шня умеет:
    - Переходит в защищенный режим
    - Ставит обработчики исключений, IRQ и программных прерываний + свой сервис
    - Умеет переходить обратно в реальный
    - Умеет делать DPC (Deferred Procedure Call) - можно поставить в очередь процедуру, которая будет запущена при следующем вызове IRQ0 системного таймера
    - Обработка IRQ1 от клавиатуры - можно набирать текст :)) Обрабатывает из дополнительных клавиш Shift, Backspace, Enter.
    - По нажанию Esc очищает экран через переход в реальный режим и вызов там прерывания биоса
    - Обработчик исключений выводит полный дамп контекста
    - Хотел добавить встроенный отладчик, но задолбало( В итоге оно обрабатывает только нажание Ctrl-F12, от которого падает в #UD

    Вот так +) Даже не знаю как его назвать, пусть будет просто "загрузчик". Вообщем надеюсь, что сорсы комунить пригодятся ;)

    //на него убито дохрена времени =\\ может допишу до чегонить более интересного
     
    12 people like this.
  3. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    Утилита для просмотра списка устройств и IRP-стека каждого устройства

    [​IMG]

    Программа показывает список устройств в системе. Для каждого устройства можно посмотреть его IRP-стек и положение этого устройства в стеке.

    Исходники GUI и драйвера прилагаются.

    http://gr8.cih.ms/uploads/devstack.rar (14 KB)
    http://gr8.cih.ms/uploads/devstack-src.rar (17 KB)
     
    4 people like this.
  4. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    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
     
    #4 _Great_, 29 Aug 2007
    Last edited: 29 Aug 2007
    7 people like this.
  5. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    Грит кушает витамины для кодеров, покупайте в аптеке и тоже будете разные драйвера кодить. Только выражен синдром отмены - кончились таблетки и вы забыли как запускать визуал студию и вообще комп включать.
     
    1 person likes this.
  6. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    Import Library Generator 1.0
    Утилита предназначена для генерации библиотеки импорта для исполняемого PE файла и обладает следующими возможностями:
    - встраивание в контекстное меню оболочки для файлов EXE, DLL, SYS
    - возможность просмотра экспорта файла и выбора списка функций для помещения в библиотеку импорта
    - возможность удаления, добавления cdecl или произвольного префикса и суффикса к именами файла.
    - библиотека импорта генерируется не самостоятельно (хотя этот вариант я хочу написать), а с помощью создания временного .DEF файла и вызова lib.exe из пакета ms linker'а для генерации либы. Поэтому путь к линкеру должен быть в path.

    Замечено пару глюков с экспортом, в след. версии исправлю.
     

    Attached Files:

    9 people like this.
  7. Pochka

    Pochka Banned

    Joined:
    26 Nov 2005
    Messages:
    27
    Likes Received:
    7
    Reputations:
    -2
    >>- встраивание в контекстное меню оболочки для файлов EXE, DLL, SYS

    А что эт значит??

    >>библиотека импорта генерируется не самостоятельно (хотя этот вариант я хочу написать), а с помощью создания временного .DEF файла и вызова lib.exe из пакета ms linker'а для генерации либы.

    А в чем тогда смысл??

    >>Поэтому путь к линкеру должен быть в path.

    А как мне его туда прописать (я вдел скриншот в интернете где path можно изменить по иконке "система" в настройках управления и еще в реестре видел как ее можно настроить персонально для каждого приложения, а как мне сделать все правильно?)?
    upd: я нашел кнопочку.

    Еще он почему-то не закрывается после нажатия на крестик, приходится убивать его в процессах.
     
    #7 Pochka, 13 Dec 2007
    Last edited: 14 Dec 2007
  8. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    Щелкаешь парвой кнопкой на файле EXE/DLL/SYS с проводнике и там есть пункт меню "Generate import library". Добавление-снятие этого пункта регулируется флажком в главном окне

    Смысл в автоматической генерации, фактически, .DEF-файла. Автоматизация - ведь сначала надо открыть длл в Dependency Walker, скопипастить экспорты, чтобы всем фунциям какойто префикс дат надо вообще регулярку делать для замены.
    а потом еще и lib(link) вручную запускать

    если у тебя стоит ms visual studio, онтам уже есть.

    Второй человек сообщает об этом.. странно, у меня нет такого ни на дом. компе, ни на ноуте, ни на виртуалке
     
    2 people like this.
  9. Pochka

    Pochka Banned

    Joined:
    26 Nov 2005
    Messages:
    27
    Likes Received:
    7
    Reputations:
    -2
    Ясно! Можно было б по-проще фразу сказать :)


    Да не так уж и сложно на самом деле.


    Вот в том то и дело что стоит, а не работает, каждый раз чтобы нормально скомпилировать что-то я запускаю enviroment батник, и все параметры устанавливаются но только на одну сессию, стоит закрыть окошко и открыть заново cmd exe, он уже не увидит cl.exe/линкер и т.д.


    Подозрительно. Тем более программка человека, увлекающегося дровописанием.
     
  10. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    не понял намека =)

    Это настраивается в свойствах системы вроде. Control Panel -> System -> Adv -> Environment Variables кажется
     
    2 people like this.
  11. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    Syscall Generator

    Написал на коленке мини-тулзу генерировать автоматом хидеры для номеров Native сервисов (зо ипалсо каждый раз лазить в ntdll смотреть)
    Перебирает экспорт ntdll.

    Исходничек: http://www.everfall.com/paste/id.php?wucqs2cq73to
    Вывод (на моей системе): http://www.everfall.com/paste/id.php?7v5ikyvrzmrp
     
    4 people like this.
  12. procedure

    procedure Elder - Старейшина

    Joined:
    22 Dec 2007
    Messages:
    527
    Likes Received:
    257
    Reputations:
    46
    Очень просто он сделал, массив из 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]);
                }
                
            }
        }
    }
    
     
    #12 procedure, 28 Nov 2008
    Last edited: 28 Nov 2008
    1 person likes this.
  13. Dian

    Dian Elder - Старейшина

    Joined:
    2 Sep 2008
    Messages:
    57
    Likes Received:
    11
    Reputations:
    4
    Странно как-то учили...

    Жесть
     
  14. procedure

    procedure Elder - Старейшина

    Joined:
    22 Dec 2007
    Messages:
    527
    Likes Received:
    257
    Reputations:
    46
    Chaak->
    Ты гонишь, ты говоришь о ячейке, а не длине массива...(((
    Точно так же в С++:
    Code:
    char str[1024];
     
    2 people like this.