![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 19 Всего: 95 |
Есть подозрение, что экспортировать их надо следующим образом:
Не сильно понятное описание ошибки, телепатировать сложно... ![]() Вообще, для тематических вопросов есть соответствующий раздел форума ![]() Не за что ![]() microxa, действительно, достаточно ценное замечание, использование try...except...end сильно упростит жизнь во многих случаях... -------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
Riply |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Комодератор Сообщений: 572 Регистрация: 27.3.2007 Где: St. Petersburg Репутация: 21 Всего: 32 |
А можно меня ткнуть носом в тот потолок, с которого взялись все (без исключения) константы в напильнике ? ![]() P.S. На всякий случай оговорюсь: я не утверждаю, что что-то "не так", просто не умею воспринимать любые магические числа в коде, акромя разве что нуля и единицы ![]() Это сообщение отредактировал(а) Riply - 7.12.2008, 18:15 |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
ну как минимум там добавляется not pageable
Добавлено через 5 минут и 9 секунд и еще discardable -------------------- Обижено школьников: 8 |
|||
|
||||
ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 19 Всего: 95 |
Больше похоже что просто копируются значения, генерируемые мелкомягким линкером. Потому что если этот напильник натравить на нормальный драйвер - эти магические числа равны содержащимся в образе...
-------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
Riply |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Комодератор Сообщений: 572 Регистрация: 27.3.2007 Где: St. Petersburg Репутация: 21 Всего: 32 |
Если это так (просто копируются), то где гарантии, что и у другого драйвера в образе тоже самое ? Или под другим SP-ом или под другой версией Win ? |
|||
|
||||
ReInit |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 14.11.2008 Репутация: 1 Всего: 1 |
Riply,
Если ты про характеристики секций, то это комбинации констант IMAGE_SCN_... http://www.wasm.ru/article.php?article=green2red02
|
|||
|
||||
Riply |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Комодератор Сообщений: 572 Регистрация: 27.3.2007 Где: St. Petersburg Репутация: 21 Всего: 32 |
Да я про все, ибо если мне вместо SizeOf(BYTE) напишут 1, то я перестану понимать ![]() Хотя, себе любимой, иногда такое и позволяю ![]() Во. Уже что-то. Спасибо ![]() |
|||
|
||||
microxa |
|
||||||||||||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 2.12.2008 Репутация: 1 Всего: 1 |
Приветствую адептов столь продвинутой "дельфийской магии"
![]()
Насчет констант - мне просто не хотелось перегружать прогу километровыми PAGE_EXECUTE_READ or IMAGE_SCN_MEM_NOT_PAGED и тп. (имеються в модуле windows) Напильник пришлось немного доработать в области "фиксатора" import table:
(гм.. FirstThunk OriginalFirstThunk взяты из описания структур PE формата из windows.h) Переделаные таким образом DLL, работают (по моему опыту) ничуть не хуже слинкованых мc-линкером. Ну и какбы в качестве примера.. Одним из возможных применений драйвера - вызов Ring0 процедур непосредственно в самой программе. Понятное дело - трюк связан с определенным риском, и расчитан на "железячников" более менее знакомых с архитектурой PC/х86 (или желающих изучать это дело). В режиме ядра снимаються проблемы только с операциями in/out и доступом к привелигированиым регистрам и инструкциям CPU. Это в ряде случаев может оказаться недостаточным, например для обращения к физическим адресам памяти, что потребует вызова системных ф-кций. В противном случае несогласование этого вопроса с системой, может приведет к bsod (и даже SEH не пикнет)))... Пример простого драйвера:
Собираеться в любой среде (IDE delphi/CMD32), главное в папку с проектом драйвера не забыть поместить облегченные версии RTL. Для упрощения, здесь адрес процедуры передаеться в драйвер в качестве параметра в DeviceIOControl, а так как user-space программа, экспортировать функции ядра не может, между драйвером и программкой будет некоторый общий интерфейс:
Тестовый пример "хелловорлда" работает исключительно в режиме консольного fullscreen'а (80x25), поскольку маппит район $B8000 (видеопамять текстового режима, стандарт времен царя гороха))). /added Riply, спасибо! благодаря Вашему замечанию теперь я буду поступать так ![]()
Для полноты художественной картины Осталось от DeviceIoControl избавиться (в нем куда больше странностей, касаемо нюансах в параметрах ;) ) Шерлок Холмс был прав, насчет того что голова не чердак, и не стоит ее захламлять! ![]() ммм... даже интересно стало прикрутить к драйверу IRP_MJ_READ/ IRP_MJ_WRITE Это сообщение отредактировал(а) microxa - 8.12.2008, 06:47 |
||||||||||||
|
|||||||||||||
Riply |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Комодератор Сообщений: 572 Регистрация: 27.3.2007 Где: St. Petersburg Репутация: 21 Всего: 32 |
microxa,
Здравствуйте ![]()
Вот скажи-ка мне честно: неужели, ты в следующей строчке сразу понимаешь, что и как создается ? Если да, то не кажется ли тебе, что уж лучше "перегружать прогу километровыми константами", чем свой мозг ? ![]() P.S. Кстати, Шерлок Холмс сравнивал человеческий мозг с чердаком, на котором не так уж и много места ![]() Это сообщение отредактировал(а) Riply - 8.12.2008, 03:32 |
|||
|
||||
ReInit |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 14.11.2008 Репутация: 1 Всего: 1 |
Riply,
Шерлок Холмс (точнее Конан Дойль) заблуждался... |
|||
|
||||
EagleXK |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 11.9.2006 Где: Украина, Житомир Репутация: нет Всего: нет |
Хмм... Странно, но Ctrl+Alt+Del не перехватился на XP SP2...
|
|||
|
||||
Riply |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Комодератор Сообщений: 572 Регистрация: 27.3.2007 Где: St. Petersburg Репутация: 21 Всего: 32 |
День добрый !
ama_kid, а ты не мог бы дать файлы sysinit.pas и system.pas, которые послужили "прототипом" для dcu-шек ? Ну и командную строчку, с которой собирались ![]() |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
Riply, в командной строке нужен ключ -Y
Это работало в 7ке. -------------------- Обижено школьников: 8 |
|||
|
||||
jungle |
|
|||
![]() Аппаратный кодер Профиль Группа: Участник Сообщений: 40 Регистрация: 17.1.2006 Где: Беларусь Репутация: нет Всего: нет |
Добрый день!
Можно ли использовать 64-битовый линкер для сборки 64-разрядного драйвера? |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Разве он проглотит 32х разрядные бинарники? Кроме того как работать с указателями, ведь они 32х разрядные. Так что скорее всего нельзя. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |