Legarea pe hardware-ul 1

Legarea de fier

Cerere tuturor celor implicați în shareware. Prompt cum să facă legarea de fier (care este de a obține informații cu privire la compoziția hardware). Este de dorit să se lucreze sub orice Win.

Cel mai bun privyazyvatsya la numărul de serie hard disk. Polduchaetsya sau (buyout de la creatorul, foarte bine zavsit greu. Din sistem. Dacă interstno, există un program de DiskID32, nu-mi amintesc unde a fost, notează destul de corect toate algoritmi de a obține o descriere). Puteți, de asemenea, privyazatsya și de numărul de serie, care este dat în timpul formatirvoaniya. Cu toate acestea, atunci când soleduschem număr format va fi diferit. Acest număr de serie este obținut prin intermediul unei funcții lovitură de podea GetVolumeInformation.
ZY Acest serial falsifica o podea roz și prima metodă nu funcționează pe șuruburile Samsung. Ele sunt responsabile pentru domeniul gol în serie.

Doar CoCreateGuid (), este stocat în registru.

UID este generat aleator, cu fiecare dată. O pelviana la pereinstale ar trebui să știe că acesta a fost deja utilizat și cum știe că Judases yuzalsya înainte? în nici un fel. Și lasă urme. Acest lucru este temporizat. și informații despre filetul în care registrul de serviciu stânga sau. De ce aveți nevoie.

Este posibil pentru a afla mai multe informatii despre utilajul? Obligatoriu numai pentru a înșuruba-mi să nu fie mulțumit, chiar dacă se va lega la un număr de șurub, nu de volum. Există, de asemenea, tot felul de programe diferite, testilki care dau marea de informații cu privire la fier, cu cea mai mare parte este ei înșiși produs, și nu citesc din registru.

Shareware pentru a nu de fier legat, pentru că amatori grav bătut și legat care fură și apoi nimic.

Că în acest moment există între protecție moale.
1) Capture debugger.
2) Algoritmul de decompresie pervertită pentru a face dificilă găsirea OEP (punctul de intrare).
3) Tehnici Antidampovye.
4) import Contaminare și alte secțiuni.
5) „Consumul de“ octet inițial (aproximativ OEP la primul apel, Mov).
6) despachetarea dinamic.
7) Verificați banda de rulare în program + API-ul benzii de rulare.
8) legarea de fier, CRC a verifica.

2Anatoly Podgoretsky:
Ce vrei să spui, „shareware pentru a nu de fier legat, pentru că bătut rău“? Ce poți să faci atunci mai constrângătoare? O pereche de nume de utilizator / parola? Deci, chiar dacă programul nu este necesar să se rupă. Este suficient pentru a găsi corect 1 pereche (chiar cumpăra) și pune-l pe ecran - „sălbatic“, tot ceea ce putem presupune că programul a intrat în

2NightAngel:
„5)“ Consumul de „octet inițial (aproximativ OEP la primul apel, Mov).“ - cam asta e prima dată când l-am auzit. Poate fi mai mult?

Mai mult, este posibil pentru a obține - Știu. Nu știu cum poate fi obținut. La punctele 1, 6, 7, 8 nu am algoritmi. Poate cineva ajuta?

bani Bute, pierderea de afaceri.
Și se leagă la fier, cum ar fi limite, la fel cum poate fi instalat pe orice număr de calculatoare pur și simplu nu au un cântec despre o manieră treptată de mult a obține cheia, de asemenea, este mai sigur pentru pierderea de afaceri.
Este necesar să se protejeze, cumpărare astfel încât protecția muncii professonalnuyu și pentru a aduce mai departe.

Nu, bine, așa cum este „exact același lucru poate fi instalat pe orice număr de calculatoare?“ Este clar faptul că aceeași cheie pe un alt PC-ul nu va funcționa. Asta înseamnă că avem nevoie pentru a schimba codul. Ei bine, orice speranță este doar asta. Ceea ce nu este hacked imediat. Ce zici de „cumpăra de protecție profesională condimentat“. Aceasta este ceea ce este? Dacă despre o cheie - pentru o mică tulzy cea mai proastă soluție posibilă. Dacă un pur software - TINE hachu! ( „Nu te mai osteni să aducă“ - este o opțiune excelentă pentru toate ocaziile, de ce face ceva pentru a veni atunci când vă puteți cumpăra / întreba / fura gata)

Si apropo, pentru utilizarea de criptare asincron în programele sale de pe capacul poate pocnesc?

Ați indicat mai sus - AsProtect - $ de 99

Procedura TMyForm.FormActivate (Expeditor: TObject);
var
S, Sout. string;
I. Integer;
VolumeName, FileSystemName. string;
VolumeSerialNo, MaxComponentLength, FileSystemFlags: LongWord;
începe
S: = GetDisks (DiskHDD);
Sout: = "";
Pentru I: = 1 până la Lungime (S) do
începe

dacă GetHDDInfo (S [I], VolumeName, FileSystemName, VolumeSerialNo,
MaxComponentLength, FileSystemFlags) atunci
Sout: = Sout +
"Unitate:" + S [I] # 13 + + # 10
"Etichetă:" + VolumeName + # 13 # 10 +
"Sistem de fișiere:" + FileSystemName + # 13 + # 10 +
"Număr de serie:" + IntToHex (VolumeSerialNo, 8) + # 13 + # 10 +
. "Lungimea maximă a numelui fișierului:" + IntToStr (MaxComponentLength) + # 13 + # 10 +
"Steaguri:" + IntToHex (FileSystemFlags, 4) + # 13 # 10 + # 13 # 10;
End;
Disks.Caption: = Sout;
se încheie;

interfață
Utilizează Windows;

Valorile rezultate:
VolumeName - Etichetă / Volum Nume
FileSystemName - Sistem de fișiere
VolumeSerialNo - Numărul de serie al discului (puteți lega la discul programului)
MaxComponentLength - Lungimea maximă a numelui fișierului
FileSystemFlags - Steaguri, consultați Ajutorul Delphi pentru GetVolumeInformation

Funcția returnează true, dacă totul merge bine (găsit un disc)
și fals, dacă aveți probleme, cum ar fi discul nu este în unitate,
sau conduce nu există nici o astfel de
>
Function GetHDDInfo (Disk Char ;. Var VolumeName, FileSystemName String .;
Var VolumeSerialNo, MaxComponentLength, FileSystemFlags: LongWord). boolean;

GetDisks funcția (TypeOfDisk. Word). string;
var
DriveArray. array [1..26] Char;
I. întreg;
începe
DriveArray: = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
pentru I: = 1-26 face
dacă GetDriveType (PChar (DriveArray [I] + ":")) = TypeOfDisk atunci Rezultat: = Rezultat + DriveArray [I];
se încheie;

Function GetHDDInfo (Disk Char ;. Var VolumeName, FileSystemName String .;
Var VolumeSerialNo, MaxComponentLength, FileSystemFlags: LongWord). boolean;
var
_VolumeName, _FileSystemName: array [0..MAX_PATH-1] Char;
_VolumeSerialNo, _MaxComponentLength, _FileSystemFlags: LongWord;
începe
în cazul în care GetVolumeInformation (PChar (Disk + ":"), _ VolumeName, MAX_PATH, @ _ ​​VolumeSerialNo,
_MaxComponentLength, _FileSystemFlags, _FileSystemName, MAX_PATH) atunci
începe
VolumeName: = _ VolumeName;
VolumeSerialNo: = _ VolumeSerialNo;
MaxComponentLength: = _ MaxComponentLength;
FileSystemFlags: = _ FileSystemFlags;
FileSystemName: = _ FileSystemName;
Rezultat: = true;
End altceva Rezultat: = false;
End;
end.

exemplu
Procedura TForm1.Button1Click (Expeditor: TObject);
începe
MessageDlg (GetCPUVendor, mtInformation, [MBOK], 0);
se încheie;

tip
TVendor = array [0..11] de char;

exemplu
var s. string;
rc. DWORD;
începe
s: = GetIdeDiskSerialNumber;
dacă s = „“ atunci
începe
rc: = GetLastError;
dacă rc = 0 atunci WriteLn ( "unitate IDE nu suporta caracteristica SMART")
altceva WriteLn (SysErrorMessage (RC));
capăt
altfel WriteLn ( "Disk numărul de serie:" "", s, "" "");
end.

GetIdeDiskSerialNumber funcționează. string;
tip
TSrbIoControl = înregistrare ambalate
HeaderLength. ulong;
Semnătura. Array [0..7] Char;
Timeout. ulong;
ControlCode. ulong;
Retur. ulong;
Lungime. ulong;
se încheie;
SRB_IO_CONTROL = TSrbIoControl;
PSrbIoControl = ^ TSrbIoControl;

TIDERegs = înregistrare ambalate
bFeaturesReg. byte; // Folosit pentru specificarea SMART „comenzi“.
bSectorCountReg. byte; // IDE registru numărul de sector
bSectorNumberReg. byte; // IDE sector registru număr
bCylLowReg. byte; // IDE valoare cilindru comandă redusă
bCylHighReg. byte; // IDE valoare cilindru comandă ridicată
bDriveHeadReg. byte; // unitate IDE / registru cap
bCommandReg. byte; // comanda real IDE.
bReserved. byte; // rezervat pentru o utilizare viitoare. Trebuie să fie zero.
se încheie;
IDEREGS = TIDERegs;
PIDERegs = ^ TIDERegs;

TSendCmdInParams = înregistrare ambalate
cBufferSize. DWORD; // dimensiune tampon în octeți
irDriveRegs. TIDERegs; // Structura cu valori registru unitate.
bDriveNumber. byte; // fizică număr unitate pentru a trimite comanda la (0,1,2,3).
bReserved. Array [0..2] de octet; // Rezervat pentru o viitoare extindere.
dwReserved. Array [0..3] de DWORD; // pentru o utilizare viitoare.
bBuffer. Array [0..0] de octet; // buffer de intrare.
se încheie;
SENDCMDINPARAMS = TSendCmdInParams;
PSendCmdInParams = ^ TSendCmdInParams;

TIdSector = înregistrare ambalate
wGenConfig. cuvânt;
wNumCyls. cuvânt;
wReserved. cuvânt;
wNumHeads. cuvânt;
wBytesPerTrack. cuvânt;
wBytesPerSector. cuvânt;
wSectorsPerTrack. cuvânt;
wVendorUnique. Array [0..2] Word;
sSerialNumber. Array [0..19] Char;
wBufferType. cuvânt;
wBufferSize. cuvânt;
wECCSize. cuvânt;
sFirmwareRev. Array [0..7] Char;
sModelNumber. Array [0..39] Char;
wMoreVendorUnique. cuvânt;
wDoubleWordIO. cuvânt;
wCapabilities. cuvânt;
wReserved1. cuvânt;
wPIOTiming. cuvânt;
wDMATiming. cuvânt;
WBS. cuvânt;
wNumCurrentCyls. cuvânt;
wNumCurrentHeads. cuvânt;
wNumCurrentSectorsPerTrack. cuvânt;
ulCurrentSectorCapacity. ulong;
wMultSectorStuff. cuvânt;
ulTotalAddressableSectors. ulong;
wSingleWordDMA. cuvânt;
wMultiWordDMA. cuvânt;
bReserved. Array [0..127] de octet;
se încheie;
PIdSector = ^ TIdSector;

const
IDE_ID_FUNCTION = $ CE;
IDENTIFY_BUFFER_SIZE = 512;
DFP_RECEIVE_DRIVE_DATA = $ 0007c088;
IOCTL_SCSI_MINIPORT = $ 0004d008;
IOCTL_SCSI_MINIPORT_IDENTIFY = $ 001b0501;
DataSize = sizeof (TSendCmdInParams) -1 + IDENTIFY_BUFFER_SIZE;
BufferSize = sizeof (SRB_IO_CONTROL) + DataSize;
W9xBufferSize = IDENTIFY_BUFFER_SIZE + 16;
var
hDevice. THandle;
cbBytesReturned. DWORD;
pInData. PSendCmdInParams;
pOutData. Pointer; // PSendCmdInParams;
Tampon. Array [0..BufferSize-1] Byte;
srbControl. Tampon absolută TSrbIoControl;

// a continuat.
Procedura ChangeByteOrder (var de Date. Dimensiunea Integer);
var ptr. PChar;
i. integer;
c. char;
începe
PTR: = @Data;
pentru i: = 0 până la (SHR Size 1) -1 do
începe
c: = ^ ptr;
^ ptr: = (1 + ptr) ^;
(Ptr + 1) ^: = c;
Inc (PTR, 2);
se încheie;
se încheie;

șuruburi serinyik - este de asemenea unic. cum ar fi setevuhi mac. și apoi puteți re-flash. Cred că această metodă este cea mai bună legăturile și să le folosiți întotdeauna, dacă este nevoie.

În! Ceva ce ar fi fost! Mulțumesc.

Rem: Desigur, dacă cineva încă acolo - vă rugăm să parts.

Tocmai am observat: un pic mai devreme sigilat, însemna:
„Apropo, pentru utilizarea de criptare asimetrică (de exemplu, cheia publică) în programele sale de pe capacul poate pocnesc?“ (Probabil despre un alt crezut când a scris).

articole similare