![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать номер BIOS компа? [D6, Win95/98]
DiHLoS © (2002-11-12 16:57:00)Как узнать собственно сабж?
Буду благодарен.
DC-AC (2002-11-14 12:18:00) [1]Тогда ему скорее на http://www.rom.by, к Delphi это мало отношение имеет.
А давайте все дружно спросим уважаемого DiHLoS, ЧТО он пишет ;-)
jonik pegas (2002-11-14 11:56:00) [2]Хм, под Win9х пашет. Под Win2k придется через сторонний драйвер но тоже можно.
p.s А из-за чего спор? Человек спросил про номер биоса, ему и ответили про номер версии БИОСА. Может человек биосописатель? :)
DC-AC (2002-11-14 10:20:00) [3]Да, и кстати, когда-то было подобное обсуждение на тему привязки программы ко всякого рода "серийным номерам" и была высказана хорошая мысль, ссылку на ветку искаль лениво, а вот цитату могу повторить.
-----------------------------------------------------------------
msts (06.09.02 11:05)
Если сможешь решить эту задачу (привязка программы к "рабочему месту") смело проси за это 10 000 000$ как ни как сотни фирм и десятки корпораций тратят на решение этой проблемы миллионы баксов и кстати абсолютный результат = 0 иначе ты бы не сидел на XP Professional и точно не юзал Delphi :(
но конечно есть относительный результат состовляющий 17% от абсолютного, но это так отступление (которое ты и так знаешь)
в общем возьми ручку и лист бумаги (так делают все матера :))- раздели его по полам линией с одной стороны опиши типовую конфигурацию "рабочего места" - установленного на него програмного и аппаратного обеспечения (если прога стоящая то и особенные требования найдутся) на другой половине опиши какие изменения (и какова их степень) приводит к тому что теперь это _другое_ рабочее место и есть основание заявить о необходимости переустановки проги в общем решил для себя - что
значит "запустили прогу на другом компе"
(в качестве источника я бы использовал глобальную таблицу атомов, если установленна винда)
далее определился бы с форматом хранения этой информации и способа интеграции в код программы для наибольшей зависимости (придется написать свой линковщик)(можно использовать java П-код и генерить на нем часть проги - выполнять в другом потоке исползуя какую нибудь JVM)
далее я бы применил нейронные сети (в частности распознования образов) для анализа этого описания - что позволяет сделать более мягкую проверку на изменения конфигурации, с каждым запуском нужно сохранять результат анализа то есть новую конфигурацию (получится как бы фотография компа с шумом - а твоя прога будет распозновать в ней тот комп на который ее поставили и если не узнает то заявить о переустановки, но комп стареет/изменяется но если эти изменения затронули 50 из 1000 атрибутов то это нормально иначе... ) при этом должно быть накопление (в разумных пределах) результатов анализа и переодической смены эталона с которым сравнивать - комп стареет а прога его узнает (как человек постоянно видящий другого не замечает изменений а стоит возникнуть перерыву - то уже нужно узнавать)
что дают нейронные сети (НС) - сложность трассировки (прямо скажем нихрена непонятно) интеграция в нее своего кода (полезного так сказать) достаточно проста в связи с компонентной архетиктурой делфы, так же можно сделать зависимость от степени узнования - степень ограничений на функциональность проги,
так как в НС нет прямых переходов - если иначе - то банальная замена инструкций не поможет крякеру, снимок проги из памяти тоже, знание НС "не дает нихрена" (Цой) , в общем полиморфная прога на критериях зависящих от конфигурации компа.
осталось защитить генератор НС - для этого система будет состоять из 3х частей
1 - программа установки - ПУ
2 - сама программа - П
3 - генератор НС - ГНС
клиенту высылается ПУ и П - она формирует предварительное описание (ПО) раб места - передает разработчику - на основе этого ПО - генератор формирует НС и высылает назад - ПУ вшивает НС в П (ну вариации на твое усмотрение), таким образом разработчику нужно защищать только ГНС
если НС имеет 1000 узлов/нейронов помноженных на 10 связей-синапсов и того 10 000 конструкций - если/иначе - крякеру будет грусно
а теперь представь на сколько должна быть стоящей твоя прога?
а с другой стороны можно потратить 5 месяцев - наваять ~ 35 000 строк кода в скомпиленном виде ~15кб - сделать компонент для дельфы и продать за выше указанную сумму какой нибудь корпорации
-----------------------------------------------------------------
DC-AC (2002-11-14 10:15:00) [4]Ну если в вашем понимании СЕРИЙНЫЙ НОМЕР, который должен быть уникальным, абсолютно одинаков на MB одной партии (проверено на добром десятке матплат) - тогда я в Computer Hardware чайник c десятилетним стажем ;-)
DiHLoS (2002-11-13 17:25:00) [5]2 Игорь Шевченко
У меня пашет... и на еще 4-х на работе проверил -все ок:-)
Игорь Шевченко (2002-11-13 16:49:00) [6]maxim2 © (13.11.02 15:33)
Положил. Запустил. Получил Access Violation in Project1.exe, read of address 000FE061.
Тебе не стыдно ?
DiHLoS (2002-11-13 16:45:00) [7]2 maxim2:
Огромное спасибо!!!
А то "Нет такого понятия "номер BIOS"...:-)
maxim2 (2002-11-13 15:33:00) [8]На формe положи Memo и Button
procedure TForm1.Button1Click(Sender: TObject);
begin
with Memo1.Lines do
begin
Add("MainBoardBiosName:"+^I+string(Pchar(Ptr($FE061))));
Add("MainBoardBiosCopyRight:"+^I+string(Pchar(Ptr($FE091))));
Add("MainBoardBiosDate:"+^I+string(Pchar(Ptr($FFFF5))));
Add("MainBoardBiosSerialNo:"+^I+string(Pchar(Ptr($FEC71))));
end;
end;
DiHLoS (2002-11-13 14:54:00) [9]BIOSa, как например определяет SiSoft Sandra
DC-AC (2002-11-13 14:16:00) [10]Серийный номер ЧЕГО ???
DiHLoS (2002-11-13 13:49:00) [11]Ну версию и производителя BIOS я узнать могу.
Но есть же у нее серийный-то номер??? Как узнать?
Help, please....
DC-AC (2002-11-13 12:22:00) [12]jonik pegas : данный код работает, но только под W9x.
А постановка задачи у автора некорректная изначально. Нет такого понятия "номер BIOS". Точнее он есть только на некоторых MB некоторых брэндов (Dell,COMPAQ и пр).
jonik pegas (2002-11-13 10:00:00) [13]Алексей Ким
Наверное нельзя. Ето тебе не DOS.
Алексей Ким (2002-11-12 22:07:00) [14]если имеется ввиду дата выхода биоса наверно можно так
...:=string(pchar(ptr($FFFF5)));
Marcus (2002-11-12 19:09:00) [15]> Roman Tokov
Reg := TRegistry.Create(KEY_READ);
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKey("Hardware\Description\System", false);
BiosDate := Reg.ReadString("SystemBiosDate");
Програмней, по-моему, некуда :)))
Roman Tokov (2002-11-12 18:59:00) [16]А как програмно?
Marcus (2002-11-12 18:38:00) [17]В реестр надо лезть
Для НТ: HKLM\Hardware\Description\System параметры SystemBiosDate, SystemBiosVersion
Для 9х: HKLM\Enum\Root\*PNP0C01\0000, BIOSVersion, BIOSDate