Kötelező a hardver 1
Kötődés vas
Kérését, hogy minden érintett shareware. Prompt hogyan kötődés vas (amely információt szerezni az összetétele a hardver). Kívánatos, hogy a munka mellett minden Win.
legjobb privyazyvatsya a merevlemezre sorozatszámot. Polduchaetsya, vagy (a kivásárlási a szerző, nagyon jó. Kemény zavsit a rendszerből. Ha interstno, van egy program DiskID32, nem emlékszem, hol volt, nagyon helyesen megjegyzi, az összes algoritmust kapjunk leírás). Azt is privyazatsya és a sorszámot, amely során adott formatirvoaniya. ha azonban soleduschem méret szám más lesz. Ez a sorszám útján nyert egy rúgás padló GetVolumeInformation funkciót.
ZY Ez a soros kovácsolni egy rózsaszín padló és az első módszer nem működik a csavarokat Samsung. Ők felelősek területén soros üres.
Csak CoCreateGuid (), tárolja a rendszerleíró adatbázisban.
UID véletlenszerűen generált, a minden egyes alkalommal. A farfekvéses a pereinstale tudnia kell, hogy a már használt, és hogyan tudja, hogy a Judases yuzalsya előtt? semmilyen módon. És hagy nyomot. Ez időzített. és információk a menet, ahol a bal, illetve a szolgáltatás adatbázis. Amire szüksége van.
Lehetséges, hogy többet információt a gép? Összekötve csak a csavar, hogy ne legyen elégedett, még ha akkor kötődik számos a csavart, nem hangerőt. Vannak még mindenféle különböző programok testilki hogy adja meg a tengernyi információt vas, a legtöbb állítják elő magukat, és nem olvassa el a nyilvántartásból.
Shareware az Iron nem köti, e súlyosan megverték, és kötötte amatőrök, akik lopnak és aztán semmi.
Ez abban a pillanatban az egyik puha védelmet.
1) Capture debugger.
2) Perverz dekompressziós algoritmus megnehezíti, hogy megtalálja az OEP (belépési pont).
3) Antidampovye technikák.
4) A szennyeződés import és egyéb szakaszok.
5) A „táplálkozási” kezdeti bájt (kb OEP az első Call mov).
6) Dinamikus kicsomagolás.
7) Ellenőrizze a futófelület a program + API futófelülettel.
8) kötődés vas, CRC-ellenőrzés.
2Anatoly Podgoretsky:
Mit jelent „shareware, hogy a vas nem köti, e csúnyán megverték”? Mit lehet tenni akkor inkább kötelező? Egy pár felhasználónév / jelszó? Tehát akkor is, ha a program nem kell törni. Ez elég ahhoz, hogy megtaláljuk a megfelelő 1 pár (még vásárolni), és tedd a kijelzőn - mindent, amit lehet feltételezni, hogy a program ment a „vad”.
2NightAngel:
„5)” Étkezési „kezdeti bájt (kb OEP az első Call mov).” - ez körülbelül az első alkalom, hallom. Lehet több?
Továbbá az is lehetséges, hogy - tudom. Nem tudom, hogyan lehet beszerezni. Az 1., 6., 7., 8. nincs algoritmusokkal. Tud valaki segíteni?
Bute pénz, üzleti veszteség.
És a vas kötődnek, mint a határok, mint ahogy lehet telepíteni tetszőleges számú számítógépen csak nincs egy dal a lépésenkénti sokat kap a kulcs, ez is biztonságosabb az üzleti veszteség.
Meg kell védeni, ezért vesz professonalnuyu védelmi és munkaügyi teremjen.
Nem jól, ahogy van „pontosan ugyanaz lehet telepíteni tetszőleges számú számítógépen?” Egyértelmű, hogy ugyanaz a kulcs egy másik számítógépen nem fog működni. Ez azt jelenti, meg kell változtatni a kódot. Nos, remélem, hogy csak. Mi nem azonnal feltört. Mi a helyzet a „buy tapasztalt szakember védelmet.” Ez mi ez? Ha egy kulcsot - kis tulzy a lehető legrosszabb megoldás. Ha tisztán szoftveres - hachu magad! ( „Ne munkaerő teremjen” - van egy nagy lehetőség minden alkalommal, miért csinál valamit, hogy jöjjön fel, ha lehet kapni / kérni / ellopni kész)
És mellesleg, a használata aszinkron titkosítás programjait a kupak csettint?
Ön a fenti - AsProtect - $ 99
eljárás TMyForm.FormActivate (Sender: TObject);
var
S, Sout. string;
I. Egész;
Kötetnek, FileSystemName. string;
VolumeSerialNo, MaxComponentLength, FileSystemFlags: LongWord;
kezdődik
S: = GetDisks (DiskHDD);
Sout: = "";
Az I: = 1 Hossz (S) do
kezdődik
ha GetHDDInfo (S [I], kötetnek, FileSystemName, VolumeSerialNo,
MaxComponentLength, FileSystemFlags), majd
Sout: = Sout +
"Drive:" + S [I] + # 13 + # 10
"Tag:" + kötetnek + # 13 # 10 +
"Fájlrendszer:" + FileSystemName + # 13 + # 10 +
"Sorszám:" + IntToHex (VolumeSerialNo, 8) + # 13 + # 10 +
. "Hossz a fájl neve:" + IntToStr (MaxComponentLength) + # 13 + # 10 +
"Zászlók:" + IntToHex (FileSystemFlags, 4) + # 13 # 10 + # 13 # 10;
Vége;
Disks.Caption: = Sout;
végén;
felület
A Windows;
A kapott értékek:
Kötetnek - Label / kötet címe
FileSystemName - File System
VolumeSerialNo - A sorozatszám a lemez (akkor kötelező a lemezre a program)
MaxComponentLength - A maximális hossza a fájl nevét
FileSystemFlags - Zászlók, hogy a Delphi Segítség GetVolumeInformation
Függvény értéke igaz, ha minden jól megy (talált a lemez)
és hamis, ha problémája van, mint például a lemez nincs a meghajtóban,
vagy meghajtó nincsenek ilyen
>
Funkció GetHDDInfo (Disk Char ;. Var kötetnek, FileSystemName karakterlánc .;
Var VolumeSerialNo, MaxComponentLength, FileSystemFlags: LongWord). logikai;
függvény GetDisks (TypeOfDisk. Word). string;
var
DriveArray. array [1..26] Char;
I. integer;
kezdődik
DriveArray: = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
I: = 1-től 26 do
ha GetDriveType (PChar (DriveArray [I] + ":")) = TypeOfDisk majd Eredmény: = Eredmény + DriveArray [I];
végén;
Funkció GetHDDInfo (Disk Char ;. Var kötetnek, FileSystemName karakterlánc .;
Var VolumeSerialNo, MaxComponentLength, FileSystemFlags: LongWord). logikai;
var
_VolumeName, _FileSystemName: array [0..MAX_PATH-1] a Char;
_VolumeSerialNo, _MaxComponentLength, _FileSystemFlags: LongWord;
kezdődik
ha GetVolumeInformation (PChar (Disk + ":"), _ kötetnek, MAX_PATH, @ _ VolumeSerialNo,
_MaxComponentLength, _FileSystemFlags, _FileSystemName, MAX_PATH), majd
kezdődik
Kötetnek: = _ kötetnek;
VolumeSerialNo: = _ VolumeSerialNo;
MaxComponentLength: = _ MaxComponentLength;
FileSystemFlags: = _ FileSystemFlags;
FileSystemName: = _ FileSystemName;
Eredmény: = true;
Vége mást Eredmény: = false;
Vége;
végén.
példa
eljárás TForm1.Button1Click (Sender: TObject);
kezdődik
MessageDlg (GetCPUVendor, mtInformation, [mbOk], 0);
végén;
típus
TVendor = array [0..11] char;
példa
var s. string;
rc. DWORD;
kezdődik
s: = GetIdeDiskSerialNumber;
ha s = „”, majd
kezdődik
rc: = GetLastError;
ha rc = 0, akkor a WriteLn ( "IDE meghajtó nem támogatják a SMART funkció")
mást WriteLn (SysErrorMessage (rc));
vég
mást WriteLn ( "Disk sorszám:" "", s, "" "");
végén.
működni GetIdeDiskSerialNumber. string;
típus
TSrbIoControl = csomagolt rekord
HeaderLength. ULONG;
Aláírását. Array [0..7] Char;
Timeout. ULONG;
ControlCode. ULONG;
ReturnCode. ULONG;
Hosszát. ULONG;
végén;
SRB_IO_CONTROL = TSrbIoControl;
PSrbIoControl = ^ TSrbIoControl;
TIDERegs = csomagolt rekord
bFeaturesReg. byte; // meghatározására használandó SMART „parancsok”.
bSectorCountReg. byte; // IDE szektor száma regiszter
bSectorNumberReg. byte; // IDE szektor számát regiszter
bCylLowReg. byte; // IDE alacsony érdekében henger értéket
bCylHighReg. byte; // IDE magas érdekében henger értéket
bDriveHeadReg. byte; // IDE meghajtó / head regiszter
bCommandReg. byte; // Aktuális IDE parancsot.
bReserved. byte; // későbbi használatra fenntartva. Nullának kell lennie.
végén;
IDEREGS = TIDERegs;
PIDERegs = ^ TIDERegs;
TSendCmdInParams = csomagolt rekord
cBufferSize. DWORD; // Puffer mérete bájtban
irDriveRegs. TIDERegs; // Struktúra meghajtó regiszter értékeket.
bDriveNumber. byte; // Fizikai meghajtó számot küldeni parancsot (0,1,2,3).
bReserved. Array [0..2] bájt; // Későbbi bővítés.
dwReserved. Array [0..3] DWORD; // későbbi használatra.
bBuffer. Array [0..0] bájt; // Beviteli puffer.
végén;
SENDCMDINPARAMS = TSendCmdInParams;
PSendCmdInParams = ^ TSendCmdInParams;
TIdSector = csomagolt rekord
wGenConfig. szó;
wNumCyls. szó;
wReserved. szó;
wNumHeads. szó;
wBytesPerTrack. szó;
wBytesPerSector. szó;
wSectorsPerTrack. szó;
wVendorUnique. Array [0..2] Word;
Ssorozatszám. Array [0..19] Char;
wBufferType. szó;
wBufferSize. szó;
wECCSize. szó;
sFirmwareRev. Array [0..7] Char;
sModelNumber. Array [0..39] Char;
wMoreVendorUnique. szó;
wDoubleWordIO. szó;
wCapabilities. szó;
wReserved1. szó;
wPIOTiming. szó;
wDMATiming. szó;
WBS. szó;
wNumCurrentCyls. szó;
wNumCurrentHeads. szó;
wNumCurrentSectorsPerTrack. szó;
ulCurrentSectorCapacity. ULONG;
wMultSectorStuff. szó;
ulTotalAddressableSectors. ULONG;
wSingleWordDMA. szó;
wMultiWordDMA. szó;
bReserved. Array [0..127] bájt;
végén;
PIdSector = ^ TIdSector;
const
IDE_ID_FUNCTION = $ EK
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;
Buffer. Array [0..BufferSize-1] a bájt;
srbControl. TSrbIoControl abszolút puffer;
// folytatódott.
eljárás ChangeByteOrder (var adatok; Méret egész.);
var ptr. PChar;
i. integer;
c. char;
kezdődik
ptr: = @Data;
i: = 0 a (Size SHR 1) -1 do
kezdődik
c: = ptr ^;
ptr ^: = (ptr + 1) ^;
(Ptr + 1) ^: = C;
Inc (ptr, 2);
végén;
végén;
serinyik csavarok - szintén egyedülálló. mint mák setevuhi. és akkor újra a flash. Hiszem, hogy ez a módszer a legjobb kötések és mindig használja őket, ha a szükség úgy kívánja.
In! Valami, ami kellett volna! Köszönöm.
Rem: Természetesen, ha valaki mindig ott van - kérjük, ossza.
Csak azt vettem észre: egy kicsit korábban lezárt, jelentette:
„Mellesleg, használatára vonatkozó aszimmetrikus titkosítást (azaz a nyilvános kulcs) a programokban a kupak csettint?” (Valószínűleg egy másik gondolt, amikor ezt írta).