BBS: Inland Empire Archive Date: 04-07-92 (09:32) Number: 94 From: MATT HART Refer#: NONE To: RICHARD VANNOY Recvd: NO Subj: A SHAREWARE TIMELOCK Conf: (2) Quik_Bas
RV> EXTERNAL: Methods that depend on something external to the RV> program to set or determine the key. RV> - Hidden files in the same, root, or some other RV> directory. RV> - Programs that read characteristics (BIOS info, video RV> type, etc.) of the hardware to develop a fingerprint RV> that is unique to one machine, or a very small RV> percentage of existing machines. This routine will allow you to easily read the contents of memory: ; PRINTMEM.ASM Matt Hart ; ; Place the contents of memory into a string. ; DECLARE SUB PrintMem(Strg$, BYVAL Segment%, BYVAL Offset%) ; ; Set Strg$ = SPACE$(NumBytesToRead) .MODEL MEDIUM,BASIC .CODE PrintMem PROC USES DS ES SI DI, Strg:Word, SegNum:Word, OffNum:Word MOV AX,SegNum ; Segment into AX MOV SI,OffNum ; Offset into SI MOV BX,Strg ; Addr of Strg Descriptor into BX MOV DI,[BX+2] ; Addr of Strg's first byte into DI MOV CX,[BX] ; Length of Strg into CX MOV DX,DS ; DS into DX - can't do MOV ES,DS directly MOV ES,DX ; ES:DI is now destination MOV DS,AX ; DS:SI is now source, CX has num bytes REP MOVSB ; Move DS:SI into ES:DI for CX times RET ; Back to BASIC PrintMem ENDP END Now, to develop a fingerprint of the machine, read in information from upper memory: Strg$ = SPACE$(16384) Segment = 64 ' experiment with this number Offset = 0 CALL PrintMem(Strg$,BYVAL Segment,BYVAL Offset) OPEN "B",1,"VERIFY.FIL" PUT 1,,Strg$ To verify, read it back in, then: OPEN "B",1,"VERIFY.FIL" OldStrg$ = SPACE$(16384) GET 1,,OldStrg$ CLOSE 1 IF OldStrg$ <> NewStrg$ THEN PRINT "Not the same machine!!!" Strg$ = "" : OdlStrg$ = "" ' got to clear that memory back! --- * Origin: Midnight Micro! V.32/REL (918)451-3306 (1:170/600)
Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET