![]() |
|
Модераторы: volvo877, Snowy, MetalFan |
![]()
|
|
| Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: нет Всего: 78 |
Делаю программу. Она располагается на дискете. Как мне сделать что-то типа boot-загрузчика, т.е. сначала загружается моя программа, я в ней что-то делаю, и тогда только загружается винда (конечно, если стоит First-Boot: FLOPPY). Что мне нужно присобачить к программе, какой код вписать, какие дрова положить?
Мне необходимо в программе работать с клавиатурой и COM-портом (что-то типа лицензионного ключа). В общем, подскажите дельными советами. Заранее благодарен, Guedda Это сообщение отредактировал(а) Snowy - 3.2.2006, 18:15 -------------------- Ll 2 |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: нет Всего: 484 |
На паскале никак.
Как Delphi построен на WinAPI, так паскаль основан на прерываниях DOS. Без DOS работать не сможет. Такой загрузчик можно только на асме написать. Добавлено @ 15:27 Причем на 286-м асме. 386 и выше уже не поддерживается загрузчиком. |
|||
|
||||
| Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: нет Всего: 78 |
А если вставки ассемблерные применить?
Никак? Как же делают такие загрузчики? Это сообщение отредактировал(а) Guedda - 3.2.2006, 15:28 -------------------- Ll 2 |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: нет Всего: 484 |
Нет, никак.
паскалевский ехе уже на уровне инициализации использует обращения к DOS. Даже еще до того, как начинает выполняться непосредственно код программы. Так что даже пустой exe запускаться не станет. Добавлено @ 15:30 На асме. Или как минимум на асме подготавливают среду. Но с паскалем не получится - он требует полноценный DOS. |
|||
|
||||
| Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: нет Всего: 78 |
Извини, конечно, за оффтоп, но есть такой вопрос:
А на Delphi ConsoleApp можно сделать? Я, в принципе, на нем тоже могу написать эту программку... -------------------- Ll 2 |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: нет Всего: 484 |
||||
|
||||
| Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: нет Всего: 78 |
Спасибо
-------------------- Ll 2 |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: нет Всего: 484 |
Да, и кроме всего прочего, загрузчик должен быть com файлом, а не exe.
|
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: нет Всего: 108 |
ну можно сделать DOS дискету записать туда прогу и прописать Autoexec.bat... и будет всё работать...
-------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| DemoCode |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 890 Регистрация: 20.10.2005 Где: Россия Репутация: нет Всего: 41 |
Или linux + программа на FreePascal например
-------------------- Жить стало лучше, жить стало веселей © И.В. Сталин |
|||
|
||||
| rsm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 999 Регистрация: 16.3.2005 Репутация: нет Всего: 62 |
Если почитать какую-нибудь умную книгу и вспомнить, как вообще происходит загрузка компа, можно составить примерно такой план:
* программа пишется только на основе вызовов прерываний BIOS. Например, чтение клавиши:
* на Паскале, как тут уже правильно сказали, ничего не напишешь потому, что нужен простой бинарный файл с полученным при компиляции машинным кодом. Однако не все потеряно - берем FASM и компилим. * полученный файл нужно записать в MBR дискеты. Я лично произвел бы сие действие путем copy-paste посредством программы WinHEX. * а вот что делать после того, как программа из MBR отработает, т.е. как передать управление на MBR винта - вот тут я не знаю что сказать. Вообще, рекомендую скачать исходники ДОСа или еще лучше какой-нибудь ОСи, написанной чисто для растяжки пальцев. Кстати, постом выше высказана хорошая мысль по использованию дискеты с ДОСом. Оно будет проще в реализации (можно будет заюзать какой-нить древний Turbo Pascal, умеющий делать ДОСовые приложения). Но будет ли смысл? Насколько я понял, есть большое и сильное желание сделать нечто типа защиты по ключевой дискете как у некоторых версий ABBYY Lingvo, но еще пониже уровнем (чтоб работало без ОСи)? Еще плюс сцылка в тему. Это сообщение отредактировал(а) rsm - 3.2.2006, 18:20 |
|||
|
||||
| Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: нет Всего: 78 |
Да. Хочу сделать защиту компа... Защиту на вход при загрузке виндуса уже сделал... А теперь и floppy ключом хочу сделать...
-------------------- Ll 2 |
|||
|
||||
| rsm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 999 Регистрация: 16.3.2005 Репутация: нет Всего: 62 |
Весьма интересно было бы взглянуть. У материнок MSI есть фирменная фишка - защита USB-донглом D-Bracket (вроде так). Помнится, в давние времена достаточно простой в реализации была защита ключевой дискетой на основе нечитаемых секторов. Суть следующая: дискета под завязку забивается некоторыми произвольными данными. После чего магнитной поверхности наносятся физические повреждения (иголкой например). Далее, дискета читается посекторно и составляется уникальная для этой дискеты карта нечитаемых (поврежденных) секторов. При индентификации производится случайное чтение N'цати секторов, после чего проводится сравнение с сохраненной ранее картой. Если совпадает 90 и более %, дискета считатся идентифицированной. Подделать саму дискету невозможно, но можно переписать карту нечитаемых секторов в программе идентификации. Хотя есть идеи, как можно сделать подделку карты секторов невозможной. Это сообщение отредактировал(а) rsm - 3.2.2006, 23:28 |
|||
|
||||
| Bodro |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 27.1.2006 Где: Россия, г. Рязань Репутация: нет Всего: 4 |
Всё верно (это я про сообщение rsm-а о загрузке) - необходимо написать прогу на асме, в которм использовать, работу с портами и BIOS-прерывания. Никаких INT 21h!!!
Просто набор команд. Размер полученного файла не должен превышать 512 байт (имеется ввиду размер первоначального загрузчика - потом можно импользовать технологию bootstrup). После записать полученный файл в BOOT-сектор дискеты. Сделать это можно или в ручную (WinHEX, например) или написать прогу, которая содержала бы в себе hex-код этого самого загрузчика и при работе создавала бы загрузочную дискету (переписывала бы код загрузчика в BOOT-сектор дискеты). Такую прогу пиши хоть на Pascal. И неплохо было бы, чтобы эта прога сама бы ещё форматировала дискету, а затем уж записывала бы туда загрузчик. А для того, чтобы после этого загрузить винду, необходимо из MBR активного харда считать загрузчик по адресу 0000h-01BDh и переписать его в память 7C00:0000. Затем передать туда управление. Пока не пробовал, но разбирался с этим и думаю, что всё должно работать. В теории, вроде, всё правильно. Сейчас как раз пишу загрузчик для Linux'а. |
|||
|
||||
![]()
|
| Правила форума "Delphi" | |
|
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |