![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать SerialNumber HDD без API(без GetVolumeInformation)? [D6, WinXP]
sucer © (2003-04-04 15:48:00)----------
Вообщем я хочу сделать программу которая для регестации
требовала бы ключ.Пооэтому мне нужен серийный номер ЖД.
Если,его вычислять через API(GetVolumeInformation и.т.п.)
или реестр,то SoftIce можно поставить Break point на эту
процедуру и поймать,а потом написать crack.Или вообще
можно при помощи HIVIEW вычилит где программа обращяется
к GetVolumeIformation и написать crack.А я хочу усложнить
хакерам взлом.
--------
Как узнать серийник при помощи АССЕМБЛЕРА,не пребигая к
фукциям API?
Alex Konshin (2003-04-07 23:16:00) [1]2 sucer: Серийный номер диска записан на сам диск, и легко копируется и изменяется. Ты о клонировании что-нибудь слышал?
Ты сильно рискуешь нарваться на то, что у всех компьютеров одного изготовителя будет один и тот же серийный номер тома. А если еще и BIOS одинаковый... А на www.sysinternals.com видел программу, которая судя по описанию умеет менять серийный номер тома. Короче, можешь сам догадаться, как будет работать твоя защита.
Ты все-таки загляни на мой сайт, там есть примеры по существу вопроса.
Enderor (2003-04-07 23:05:00) [2]Alex Konshin аболютно прав.
Не усложняйте себе жизнь, все равно ничего путного не сделаете.
Иван Шихалев (2003-04-07 20:53:00) [3]
> А вот дизасамблироватль kernel32.dll некто не пробовал и
> посмотреть как GetVolumeIformation работает а потом просто
> блок Ассемблерных комманд скопировать и вставить в asm в
> DELPHI?
И пробовать нечего - "Программа выполнила недопустимую операцию..."
sucer (2003-04-07 18:25:00) [4]younghacker:у дескеты GEtV.. возраящяет 0 поэтому я заранее
предусмотрю чтобы программа с дискеты не запускалась.
"Программу для редактирования SN можно самому сделать или скачать" -он записан в контолер на винте! куда он тебе изменится?
Это метку тома можно поменять.
А вот дизасамблироватль kernel32.dll некто не пробовал и
посмотреть как GetVolumeIformation работает а потом просто
блок Ассемблерных комманд скопировать и вставить в asm в DELPHI?
Йцукен (2003-04-07 15:10:00) [5]1. Обращение к прерываниям под NT-подобными системами не сработает.
2. younghacker может и прав. Программу для редактирования SN можно самому сделать или скачать, но если проверка будет в сочетании с данными BIOS-а, то этого вполне будет достаточно. Не одно, так другое.
3. Программу необходимо надежно запаковать.
younghacker (2003-04-07 11:37:00) [6]Alex Konshin совершенно прав!
GetVolumeInformationвозвращает номер тома который элементарно копируется на любой другой носитель :) Именно носитель! Этим носителем может быть дискета, flash диск, RAM диск, и вообще любой носитель который форматируется стандартным системным форматом. Заметьте что при переформатировании носителя серийный номер изменится :)
Так что как средство защиты от копирования он не подходит.
Levan Varshanidze (2003-04-07 08:56:00) [7]Mojet prigoditsia
ia pisal eto na C dlia DOS:
#include "bios.h"
#include "dos.h"
void main()
{
unsigned char volume_serial[512],s[4]=" ";
void far vol_ser(char,char*); //opisanie
vol_ser("a",volume_serial); //vizov
s[0]=volume_serial[42]; //dostaem iz nulevogo cilindra ser_num
s[1]=volume_serial[41];
s[2]=volume_serial[40];
s[3]=volume_serial[39];
printf("%x%x%x%x",s[0],s[1],s[2],s[3]);
};
void far vol_ser(char drive,char* cylzero)
{
union REGS r;
r.x.bx=cylzero; //adres, kuda pomeshaetsia soderjimoe nulevogo cilindra
r.h.ah=0;
r.h.al=toupper(drive)-65; //nomer draivera a:0,b:1,c:2.....
r.x.cx=1;
r.x.dx=0;
int86(0x25,&r,&r);//Prerivanie, dostaiushh soderjimoe nullevogo cilindra
return;
}
Glavnoe zdes int86(0x25,&r,&r);
poprobuite (v WINDOWS ne proboval, v DOS rabotaet)
Alex Konshin (2003-04-06 22:13:00) [8]Еще раз для непонятливых: GetVolumeInformation возвращает серийный номер ТОМА, который никакого отношения к серийному номеру HDD не имеет.
Смотри:
http://home.earthlink.net/~akonshin/index.htm
Polevi (2003-04-06 19:06:00) [9]возвращает, только не тот
aanco (2003-04-06 18:22:00) [10]Alexу от Юстаса: "Функция GetVolumeInformation возвращает серийный номер, метку и файловую систему диска."
===========
{ S/N для C: }
Function GetHddSerial: DWord;
Var
aBuffer : array[0..255] of Char;
dwTemp : DWord;
pdwSerial: DWord;
begin
GetVolumeInformation("C:\", aBuffer, SizeOf(aBuffer), @pdwSerial, dwTemp, dwTemp, nil, 0);
Result:= pdwSerial;
end;
{ Так можно получить дату BIOS. Может тебе это больше понравится }
Function GetBIOSDate: String;
begin
Result:= String(PChar(Ptr($FFFF5)));
end;
А затем приобрети AsProtect (www.aspack.com) и сделай то что требует его SDK.
К тому же можно добавить парочку своих проверок на размер исполняемого файла, CRC и т.п. Если программу взломали нужно чтобы она непредсказуемо глючила: например в зависимости от времени суток, четности дня, месяца. Придумаешь.
http://rc4wa.narod.ru/index_ru.html
Alex Konshin (2003-04-05 23:05:00) [11]Почему-то люди свято уверены, что ассемблер - панацея.
Не прибегая к функциям API у тебя ничего не получится, хоть на ассемблере, хоть еще на чем. Ну да, можно подглядеть в ntdll.dll как происходит переход в ядро, но прерывания ловятся ничуть не хуже, чем вызовы API, ну и какая разница?
Но я тебе больше скажу - GetVolumeInformation НЕ ВОЗВРАЩАЕТ серийный номер винчестера.
Cobalt (2003-04-04 20:03:00) [12]в ХР - невозможно (ИМХО, разве что, вломишься в ядро системы (как?), и (на ассемблере?) будешь читать напрямую, безо всяких там драйверов, из контроллера)