Бинарник драйвера в ресурсах проекта
От: BTFil Россия  
Дата: 22.10.05 11:10
Оценка:
Возможно ли записать в ресурсы проекта на VC6 или VC7 бинарник драйвера? Если это возможно то помогите примером или хотя бы советом где порыться.
Re: Бинарник драйвера в ресурсах проекта
От: Skipy Rich Россия  
Дата: 22.10.05 14:04
Оценка:
Здравствуйте, BTFil, Вы писали:

BTF>Возможно ли записать в ресурсы проекта на VC6 или VC7 бинарник драйвера? Если это возможно то помогите примером или хотя бы советом где порыться.


http://www.sysinternals.com/

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

ИМХИ. Оптом — дешевле, в розницу — качественней!
fb2k: Biosphere - silene
Бинарник драйвера в ресурсах проекта
От: gear nuke  
Дата: 22.10.05 23:26
Оценка: 10 (1)
#Имя: FAQ.src.bin2file
Здравствуйте, BTFil, Вы писали:

BTF>Возможно ли записать в ресурсы проекта на VC6 или VC7 бинарник драйвера? Если это возможно то помогите примером или хотя бы советом где порыться.


Не обязательно в ресурсы, ИМХО проще в переменую.

Скрипт на пёрле (который я не знаю, поэтому не пинать сильно) для генерации исходника (имя бинарника передаём параметром. Или на С перепишите):
$columns = 8;

foreach $argnum (0 .. $#ARGV)
{
    $file = $ARGV[$argnum];
    print "\nProcessing file `$file'\n";
    open(IN, $file) or die "Can't open file: $!";
    binmode(IN);
    open(OUT, ">$file.cpp") or die "Can't open output file: $!";
    print OUT "unsigned char  data [] =\n{\n";
    $column = 0;
    while( ! eof(IN) )
    {
        ! $column++ and print OUT '    '; 
        printf OUT "0x%02X", ord(getc(IN));
        if( $column >= $columns or eof(IN) )
        {
            if( ! eof(IN) ) {  print OUT ","; }
            print OUT "\n";
            $column = 0;
        }
        else { print OUT ", "; } 
    }
    print OUT "};\n";
    close(OUT);
    close(IN);
}

Формируем файл как обычно:
    HANDLE kmd = CreateFile("driver.sys", FILE_ALL_ACCESS, 0, 0, CREATE_ALWAYS, 0, 0);
    if ( kmd != INVALID_HANDLE_VALUE )
    {
        unsigned long w;
        WriteFile(kmd, data /* сгенерированный скриптом массив */, sizeof(data), &w, 0);
        CloseHandle(kmd);
    }


А если в ресурсы, то идея та же, только вместо использования data получаем адрес данных файла (добавить в ресурсы как RT_RCDATA) посредством FindResource+LoadResource (LockResource вызывать по желанию) и размер SizeofResource. Слишком много телодвижений .
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[2]: Бинарник драйвера в ресурсах проекта
От: BTFil Россия  
Дата: 23.10.05 10:09
Оценка:
Здравствуйте, gear nuke, Вы писали:

GN>Здравствуйте, BTFil, Вы писали:


BTF>>Возможно ли записать в ресурсы проекта на VC6 или VC7 бинарник драйвера? Если это возможно то помогите примером или хотя бы советом где порыться.


GN>Не обязательно в ресурсы, ИМХО проще в переменую.


GN>Скрипт на пёрле (который я не знаю, поэтому не пинать сильно) для генерации исходника (имя бинарника передаём параметром. Или на С перепишите):
GN>$columns = 8;

GN>foreach $argnum (0 .. $#ARGV)
GN>{
GN>    $file = $ARGV[$argnum];
GN>    print "\nProcessing file `$file'\n";
GN>    open(IN, $file) or die "Can't open file: $!";
GN>    binmode(IN);
GN>    open(OUT, ">$file.cpp") or die "Can't open output file: $!";
GN>    print OUT "unsigned char  data [] =\n{\n";
GN>    $column = 0;
GN>    while( ! eof(IN) )
GN>    {
GN>        ! $column++ and print OUT '    '; 
GN>        printf OUT "0x%02X", ord(getc(IN));
GN>        if( $column >= $columns or eof(IN) )
GN>        {
GN>            if( ! eof(IN) ) {  print OUT ","; }
GN>            print OUT "\n";
GN>            $column = 0;
GN>        }
GN>        else { print OUT ", "; } 
GN>    }
GN>    print OUT "};\n";
GN>    close(OUT);
GN>    close(IN);
GN>}

GN>Формируем файл как обычно:
GN>
GN>    HANDLE kmd = CreateFile("driver.sys", FILE_ALL_ACCESS, 0, 0, CREATE_ALWAYS, 0, 0);
GN>    if ( kmd != INVALID_HANDLE_VALUE )
GN>    {
GN>        unsigned long w;
GN>        WriteFile(kmd_file, data /* сгенерированный скриптом массив */, sizeof(data), &w, 0);
GN>    }
GN>


GN>А если в ресурсы, то идея та же, только вместо использования data получаем адрес данных файла (добавить в ресурсы как RT_RCDATA) посредством FindResource+LoadResource (LockResource вызывать по желанию) и размер SizeofResource. Слишком много телодвижений .


Значит теперь, с помощью CreateService мы можем этот "driver.sys" установить? Или для загрузки этого драйвера нужно использовать другой способ?
Re[3]: Бинарник драйвера в ресурсах проекта
От: gear nuke  
Дата: 23.10.05 13:29
Оценка:
Здравствуйте, BTFil, Вы писали:

BTF>Значит теперь, с помощью CreateService мы можем этот "driver.sys" установить? Или для загрузки этого драйвера нужно использовать другой способ?


Дык файл записали на диск — и дальше всё как обычно Потом не забыть удалить только .
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[4]: Бинарник драйвера в ресурсах проекта
От: srggal Украина  
Дата: 24.10.05 07:50
Оценка:
Здравствуйте, gear nuke, Вы писали:

GN>Дык файл записали на диск — и дальше всё как обычно Потом не забыть удалить только .


Записывать не обязательно
здесь

Хардкорный такой способ
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[5]: Бинарник драйвера в ресурсах проекта
От: gear nuke  
Дата: 24.10.05 10:11
Оценка:
Здравствуйте, srggal,

GN>>Дык файл записали на диск — и дальше всё как обычно Потом не забыть удалить только .


S>Записывать не обязательно

S>здесь

S>Хардкорный такой способ


Для драйвера режима ядра не пойдёт .
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[6]: Бинарник драйвера в ресурсах проекта
От: srggal Украина  
Дата: 24.10.05 10:20
Оценка:
Здравствуйте, gear nuke, Вы писали:

GN>Здравствуйте, srggal,


GN>>>Дык файл записали на диск — и дальше всё как обычно Потом не забыть удалить только .


S>>Записывать не обязательно

S>>здесь

S>>Хардкорный такой способ


GN>Для драйвера режима ядра не пойдёт .


Дык что возрвзить — нечего, только то. что в целях увеличения дальности кругозора имеет смысл згать и о таком способе
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[4]: Бинарник драйвера в ресурсах проекта
От: srggal Украина  
Дата: 24.10.05 10:33
Оценка:
Здравствуйте, gear nuke, Вы писали:

GN>Здравствуйте, BTFil, Вы писали:


BTF>>Значит теперь, с помощью CreateService мы можем этот "driver.sys" установить? Или для загрузки этого драйвера нужно использовать другой способ?


GN>Дык файл записали на диск — и дальше всё как обычно Потом не забыть удалить только .


SRC: Запись из ресурсов в файл
Автор: Odi$$ey
Дата: 13.09.02
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[6]: Бинарник драйвера в ресурсах проекта
От: IID Россия  
Дата: 24.10.05 10:50
Оценка:
Здравствуйте, gear nuke, Вы писали:

GN>Здравствуйте, srggal,


GN>>>Дык файл записали на диск — и дальше всё как обычно Потом не забыть удалить только .


S>>Записывать не обязательно

S>>здесь

S>>Хардкорный такой способ


GN>Для драйвера режима ядра не пойдёт .


а если поэкспериментировать с device\physicalmemory ?
kalsarikännit
Re[7]: Бинарник драйвера в ресурсах проекта
От: gear nuke  
Дата: 24.10.05 13:08
Оценка:
Здравствуйте, IID,

S>>>Записывать не обязательно

S>>>здесь

S>>>Хардкорный такой способ


GN>>Для драйвера режима ядра не пойдёт .


IID>а если поэкспериментировать с device\physicalmemory ?


Заодно сделать свою реализацию Service Control Manager
По сути все такие решения — обход системы безопасности ОС, и приемлимы только для "специфичного ПО", "пользователи" которого только обрадуются, когда дыру закроют в ближайшем hotfix.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[8]: Бинарник драйвера в ресурсах проекта
От: BTFil Россия  
Дата: 24.10.05 16:28
Оценка:
GN>Заодно сделать свою реализацию Service Control Manager
GN>По сути все такие решения — обход системы безопасности ОС, и приемлимы только для "специфичного ПО", "пользователи" которого только обрадуются, когда дыру закроют в ближайшем hotfix.
У меня исключительно мирные цели!

Еще вот один вопрос, правда он задавался уже, но ответа так на него и не поступило:
Есть ли аналог BIN2H для винды???
Re[9]: Бинарник драйвера в ресурсах проекта
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 24.10.05 16:48
Оценка:
Здравствуйте, BTFil, Вы писали:

BTF>Есть ли аналог BIN2H для винды???


http://gzip.rsdn.ru/File/82/bin2h.rar
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.