Re[3]: импорт из NTDLL
От: vasketsov Россия http://ntprog.by.ru
Дата: 29.10.02 11:51
Оценка: 14 (2)
Здравствуйте old Dutchman, Вы писали:

OD>Да дело не в CharLower. Мне нужны ВСЕ функции строковые !


OD>Задача — написать на С программу под NT размером в 10К максимум.


В ntdll.dll нет по понятным причинам printf, так что ее использование может обломиться, если это надо.
В остальном — тот же самый CRT, причем, это есть во всех NT-системах, а msvcrt только вроде с sp3 или sp4.
И нифига они не меняются и не пропадают, короче, решайте сами, и ничуть они не медленнее чем в msvcrt.
Но на самом деле, я их обычно не использую, если задача не стоит обойтись только ntdll.dll, а юзаю msvcrt, если у юзера стоит система без нее — значит он виноват только сам, что вовремя не проапгрейдился до нужного sp, и это значит, что еще бог знает какие глюки у него будут, рабочей NT-ей советую считать машину с sp5 и выше.

А, в принципе, если указать юзать именно msvcrt.lib, то уложиться в 10 кил абсолютно реально, у меня есть набор своих мелких утилиток, они порядка 3-х кил занимают, ну пять, но в них прямо линкуется msvcrt (собственно, для printf-а).
Например, прога, которая устанавливает любого владельца файла, она и файл открывает/закрывает, и привилегии себе нужные берет (RtlAdjustPrivilege), и LookupAccountName вызывает, и две Rtl-функции из ntdll.dll юзает (чтоб в SD SID воткнуть и чтоб создать его) и ZwSetSecurityObject для самой установки — короче, все в одном флаконе — и пожалуйста, 3584 байта.
Прога, которая вырубает NT-систему, около 2 кил вообще получилась, естественно, и та и другая используют printf (без него они совсем крошечные бы были).

Так что успехов.
Васкецов Сергей
http://registry.km.ru
Re[2]: импорт из NTDLL
От: old Dutchman Беларусь http://blogs.rsdn.org/ikemefula
Дата: 29.10.02 11:55
Оценка:
Здравствуйте Whisperer, Вы писали:


W>Тогда тебе прямая дорога к книге Свен Шрайбер "Недокументированные возможности Windows 2000" — к стати о возможности экспорта этих функций там написанно

W>#pragma comment(linker,"defaultlib:ntdll.lib")



W>к статит в этой книге есть специальный заголовочный фал для этого w2k_def.h давай мыло вышлю, если будушь юзать его в режиме user-mode ставь

W>#define _USER_MODE
W>

Вышли, пожалуйста, сюда ?
Re[3]: импорт из NTDLL
От: Whisperer  
Дата: 29.10.02 12:05
Оценка:
Здравствуйте old Dutchman, Вы писали:

Ушло!!!!
Re: импорт из NTDLL
От: Andrew S Россия http://alchemy-lab.com
Дата: 29.10.02 14:45
Оценка:
Слушай, а после чего это ты вдруг так заинтересовался NTDLL? Она ж не грузится
Автор: old Dutchman
Дата: 28.10.02


OD>Привет !


OD>

OD>Обнаружил, что в NTDLL есть масса функций полезных, особенно строковых

OD>
OD>    typedef int (*pfntolower)(int);

OD>    HMODULE hm = GetModuleHandle("ntdll.dll");
OD>    pfntolower prc = (pfntolower)GetProcAddress(hm,"tolower");
OD>        if( prc != NULL) 
OD>    {
OD>        char ch = (char)prc('A');
OD>    }
OD>


OD>Эта дрянь скорее всего будет медленно работать, но для тех задач, где необходимо отказаться от CRT и всякой дрянь вполне сгодится
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[2]: импорт из NTDLL
От: Andrew S Россия http://alchemy-lab.com
Дата: 29.10.02 14:54
Оценка:
Кстати, для того, чтобы была ntdll.lib, надо поставить NT DDK (2000) или натравить на ntdll.dll implib.

А книжечку Свена Шрайбера очень рекомендую. СтОящая вещь.
Успехов.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[2]: импорт из NTDLL
От: old Dutchman Беларусь http://blogs.rsdn.org/ikemefula
Дата: 29.10.02 14:56
Оценка:
Здравствуйте Andrew S, Вы писали:

AS>Слушай, а после чего это ты вдруг так заинтересовался NTDLL? Она ж не грузится
Автор: old Dutchman
Дата: 28.10.02


Да посмотрел пример твой



Я перепутал -это LoadLibrary("hal.dll") выдает — Invalid Access to Memory location
Re[3]: импорт из NTDLL
От: masta Россия  
Дата: 01.11.02 15:01
Оценка:
Здравствуйте Andrew S, Вы писали:

AS>Кстати, для того, чтобы была ntdll.lib, надо поставить NT DDK (2000) или натравить на ntdll.dll implib.


AS>А книжечку Свена Шрайбера очень рекомендую. СтОящая вещь.

AS>Успехов.

А где её можно купить ???
Re[4]: импорт из NTDLL
От: Whisperer  
Дата: 01.11.02 15:14
Оценка:
Здравствуйте masta, Вы писали:

M>Здравствуйте Andrew S, Вы писали:


AS>>Кстати, для того, чтобы была ntdll.lib, надо поставить NT DDK (2000) или натравить на ntdll.dll implib.


AS>>А книжечку Свена Шрайбера очень рекомендую. СтОящая вещь.

AS>>Успехов.

M>А где её можно купить ???


В любом магазине — называется "Недокументированные возможности Windows 2000"
Re[4]: импорт из NTDLL
От: Lonely Dog Россия  
Дата: 02.11.02 14:11
Оценка:
Здравствуйте vasketsov, Вы писали:

V>Здравствуйте old Dutchman, Вы писали:


OD>>Да дело не в CharLower. Мне нужны ВСЕ функции строковые !


OD>>Задача — написать на С программу под NT размером в 10К максимум.


Я делал так:

1) компиляем прогу в asm файл. (ключ Fa если я не ошибаюсь)
2) компиляем получившийся asm файл в obj.
3) линкуем его со всеми либами. при этом, надо использовать link 5-ой версии. (это самый простой способ)

после этого размер проги очень сильно уменьшается. кроме того можно посмотреть на опцию линкера /align она тоже позволит уменьшить размер файла. правда после этого будут проблемы с запуском проги под win9x, но это уже детали.

Вот такие пироги.
Re[2]: импорт из NTDLL
От: eugen honeker  
Дата: 02.11.02 17:44
Оценка:
Здравствуйте Whisperer, Вы писали:

W>Здравствуйте old Dutchman, Вы писали:


OD>>Привет !


OD>>

OD>>Обнаружил, что в NTDLL есть масса функций полезных, особенно строковых

OD>>
OD>>    typedef int (*pfntolower)(int);

OD>>    HMODULE hm = GetModuleHandle("ntdll.dll");
OD>>    pfntolower prc = (pfntolower)GetProcAddress(hm,"tolower");
OD>>        if( prc != NULL) 
OD>>    {
OD>>        char ch = (char)prc('A');
OD>>    }
OD>>


OD>>Эта дрянь скорее всего будет медленно работать, но для тех задач, где необходимо отказаться от CRT и всякой дрянь вполне сгодится


W>Тогда тебе прямая дорога к книге Свен Шрайбер "Недокументированные возможности Windows 2000" — к стати о возможности экспорта этих функций там написанно

W>#pragma comment(linker,"defaultlib:ntdll.lib")
W>к статит в этой книге есть специальный заголовочный фал для этого w2k_def.h давай мыло вышлю, если будушь юзать его в режиме user-mode ставь
W>#define _USER_MODE
W>

я бы тоже хотелбы (-> mailto:e.honeker@gmx.de), заранее спасибо
Re[3]: импорт из NTDLL
От: Andrew S Россия http://alchemy-lab.com
Дата: 03.11.02 06:59
Оценка:
Конечно Это ж бубль-гум.. в смысле — kernel-mode библиотека.

OD>Я перепутал -это LoadLibrary("hal.dll") выдает — Invalid Access to Memory location
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[3]: импорт из NTDLL
От: Аноним  
Дата: 03.11.02 16:50
Оценка:
Здравствуйте eugen honeker
Завтра пришлю!!!
Re: импорт из NTDLL
От: RS Земля ICQ: 148844272
Дата: 05.11.02 08:55
Оценка: 7 (1)
Здравствуйте old Dutchman, Вы писали:

OD>Привет !


OD>

OD>Обнаружил, что в NTDLL есть масса функций полезных, особенно строковых

Да там нестроковые гораздо интереснее. Я там как-то обнаружил аналог OpenThread (та, что только в Win2K) — так в ntdll она есть уже в NT4!
Re[2]: импорт из NTDLL
От: old Dutchman Беларусь http://blogs.rsdn.org/ikemefula
Дата: 05.11.02 08:56
Оценка:
Здравствуйте RS, Вы писали:

OD>>Обнаружил, что в NTDLL есть масса функций полезных, особенно строковых


RS>Да там нестроковые гораздо интереснее. Я там как-то обнаружил аналог OpenThread (та, что только в Win2K) — так в ntdll она есть уже в NT4!


Кул !!!
Re[3]: импорт из NTDLL
От: Алекс Россия http://wise-orm.com
Дата: 05.11.02 09:00
Оценка: 4 (1)
Здравствуйте old Dutchman, Вы писали:

хъ

OD>Кул !!!


Ребята, это так давно было известо!

См. здесь и здесь.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.