Electronic device and method of protecting software
Granted 12 Feb 2013 · 1 office action
Assignee: Foxconn Technology Group
Law firm: Law firm · Log in to unlock
Attorney: Attorney · Log in to unlock
Inventors: Hsien-Chuan Liang, Shou-Kuo Hsu, Shen-Chun Li · Examiner: Nathan Flynn · AU 2431 · TC 2400
Life of the application
8 dated eventsAbstract
In an electronic device and method of protecting software, a software program of the electronic device is invoked. The media access control (MAC) address of the electronic device and a serial number of a hard disk drive that stores the software program in the electronic device are searched. The MAC address and the serial number are compared with MAC addresses and serial numbers included in the software program, to determinate whether it is licensed to run the software program in the electronic device. Usage logs of the software program are further obtained to determine whether running of the software program in the electronic device is expired.
Description
4 parts›BACKGROUND
1. Technical Field
Embodiments of the present disclosure generally relate to software protection technique, and more specifically to a system and method of protecting software program from unlicensed usage.
2. Description of Related Art
Growing use of computers has resulted in extensive unlicensed use and pirated copying of computer software. This deprives the proprietor of the software from legitimate income from the sale of licenses. Thus, protection arrangements are necessary for software to prevent unlicensed use of commercial software.
Originally, there are three suggested mechanisms for the protection of software against unlicensed use. The first protection mechanism is simply a contract between the software proprietor and user where misuse creates rights for the recovery of damages or specific penalties for misuse. The second protection mechanism is the display of the licensee's name or other unique information on a CRT screen or printout which publicizes the terms of the license, and to some extent provides a deterrent against use by users other than a licensee. The third protection mechanism is applicable to cases where a program is to be run on a computer into which is incorporated a unique identification number. Thus, a software manufacturer may incorporate into its software product instructions that the product can only be employed with a computer bearing that unique identification number.
While the first two protection mechanisms offer some protection against the illegal resale of software products, they generally do not prevent the sharing of licensed products among users. Furthermore, with respect to the first protection mechanism, it may not be effective at all in countries where procedural or substantive law prevents the enforcement of a particular contract.
The second and third protection mechanisms suffer from the requirement that software distribution must be customized for each user, which may seem simple, but has proved to be logistically difficult in practice.
The third protection mechanism is perhaps the most effective one, and for computers which can read out identification numbers, it can be implemented in a standardized fashion. However, most computers do not contain built-in identifications which can be read by a program. In such cases, special purpose identification devices must be supplied. Unfortunately, there are no standards for such devices, and the use of a different identification device for each product is unwieldy and generally leads to incompatibility when more than one such product is to be used in the same computer. Also, simple hardware identification readouts are easy to defeat.
›BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram of one embodiment of an electronic device including a software protection system.
FIG. 2 is a block diagram of functional modules of the software protection system in FIG. 1 .
FIG. 3 is a flowchart of one embodiment of a method of protecting software.
›DETAILED DESCRIPTION · 1 of 2
The application is illustrated by way of examples and not by way of limitation in the figures of the accompanying drawings in which like references indicate similar elements. It should be noted that references to “an” or “one” embodiment in this disclosure are not necessarily to the same embodiment, and such references mean at least one.
In general, the word “module” as used hereinafter, refers to logic embodied in hardware or firmware, or to a collection of software instructions, written in a programming language, such as, for example, Java, C, or Assembly. One or more software instructions in the modules may be embedded in firmware. It will be appreciated that modules may comprised connected logic units, such as gates and flip-flops, and may comprise programmable units, such as programmable gate arrays or processors. The modules described herein may be implemented as either software and/or hardware modules and may be stored in any type of computer-readable medium or other computer storage device.
FIG. 1 is a block diagram of one embodiment of an electronic device 1 including a software protection system 11 . The electronic device 1 may be a computer, an application server, and/or a mobile phone, for example. In one embodiment, the electronic device 1 includes a software program 10 , the software protection system 11 , a hard disk drive 12 , and a processor 13 . The software program 10 may be any commercial software. In one embodiment, the software program 10 includes information of media access control (MAC) address of electronic devices that are licensed to run the software program 10 and information of serial numbers of hard disk drives that are licensed to store the software program 10 .
The software protection system 11 includes a plurality of function modules (described with reference to FIG. 2 ), to protect the software program 10 from unlicensed usage. The hard disk drive 12 includes a file 120 operable to record usage logs of the software program 10 . In one embodiment, the usage logs of the software program 10 include a last run time of the software program 10 , a number of times the software program 10 has been run in the electronic device 1 , a licensed period and a maximum license usage of the software program 10 . For example, the file 120 may record that the last run time of the software program 10 is 12:00 on Jul. 1, 2010, the software program 10 has been run 10 times, the licensed period of the software program 10 is from Jan. 1, 2010 to Dec. 31, 2010, and the maximum license usage of the software program 10 is 50 times. In one embodiment, the file 120 is hidden in the hard disk drive 12 .
Furthermore, The hard disk drive 12 stores one or more computerized codes of the functional modules of the software protection system 11 . The processor 13 can execute the one or more computerized codes of the functional modules of the software protection system 11 .
FIG. 2 is a block diagram of functional modules of the software protection system 11 . In one embodiment, the software protection system 11 includes a search module 110 , a comparison module 111 , a log obtaining module 112 , a log creation module 113 , a determination module 114 , a management module 115 , and an update module 116 .
The search module 110 searches for the MAC address of the electronic device 1 , and further searches for a serial number of the hard disk drive 12 . In the present embodiment, the electronic device 1 may be a computer or an application server, for example.
The comparison module 111 compares the MAC address of the electronic device 1 and the serial number of the hard disk drive 12 with the information included in the software program 10 to determine whether the software program 10 is licensed to run in the electronic device 1 . As mentioned above, the information included in the software program 10 are the MAC addresses of electronic devices that are licensed to run the software program 10 , and the serial numbers of hard disk drives that are licensed to store the software program 10 . In one embodiment, the comparison module 111 determines that the software program 10 is licensed to run in the electronic device 1 if the MAC address of the electronic device 1 and the serial number of the hard disk drive 12 match the information included in the software program 10 . That is, both the MAC address of the electronic device 1 and the serial number of the hard disk drive 12 are recorded in the software program 10 .
The log obtaining module 112 determines whether there are the usage logs of the software program 10 in the file 120 if the software program 10 is licensed to run in the electronic device 1 , and obtains the usage logs from the file 120 . As mentioned above, the usage logs of the software program 10 include a last run time of the software program 10 , a number of times the software program 10 has been run in the electronic device 1 , a licensed period and a maximum license usage of the software program 10 .
The log creation module 113 creates the usage logs of the software program 10 when the software program 10 is running in the electronic device 1 , if there are no the usage logs in the file 120 , and records the usage logs into the file 120 .
The determination module 114 determines if the last run time of the software program 10 is earlier than the current system time of the electronic device 1 , for checking whether the current system time of the electronic device 1 has been hacked, determines if the current system time of the electronic device 1 is within the licensed period of the software program 10 if the current system time of the electronic device 1 has not been hacked, and determines if the number of times the software program 10 has been run in the electronic device 1 is less than the maximum licensed usage of the software program 10 . It may be understood that, the above determinations are for checking whether running of the software program in the electronic device is expired.
The management module 115 permits the software program 10 to run in the electronic device 1 if the last run time of the software program 10 is earlier than the current system time of the electronic device 1 , the current system time of the electronic device 1 is within the licensed period of the software program 10 , and the number of times the software program 10 has been run is less than the maximum licensed usage of the software program 10 . Otherwise, the management module 115 denies the usage of the software program 10 in the electronic device 1 if the last run time of the software program 10 is later than the current system time of the electronic device 1 , or the current system time of the electronic device 1 is past the licensed period of the software program 10 , or the number of times the software program 10 has been run exceeds the maximum licensed usage of the software program 10 .
›DETAILED DESCRIPTION · 2 of 2
The update module 116 updates the last run time of the software program 10 and the number of times the software program 10 has been run in the usage logs if the software program 10 is permitted to run in the electronic device 1 .
FIG. 3 is a flowchart of one embodiment of a method of protecting software. The method can be performed by execution of a computer-readable program code by at least one processor 13 of the electronic device 1 shown in FIG. 1 . Depending on the embodiment, additional blocks in the flowchart of FIG. 3 may be added, others removed, and the ordering of the blocks may be changed.
In block S 10 , software program 10 installed in the electronic device 1 is invoked. In one embodiment, the software program 10 includes information of media access control (MAC) addresses of electronic devices that are licensed to run the software program 10 , and information of serial numbers of hard disk drives that are licensed to store the software program 10 . The electronic device 1 may be a computer or an application server, for example.
In block S 11 , the search module 110 searches for the MAC address of the electronic device 1 .
In block S 12 , the comparison module 111 determines if the MAC address of the electronic device 1 matches one MAC address included in the software program 10 by comparison. If the MAC address of the electronic device 1 does not match one MAC address included in the software program 10 , the procedure goes to block S 22 , the management module 115 denies the usage of the software program 10 in the electronic device 1 . Then, the procedure ends. Otherwise, block S 13 is implemented if the MAC address of the electronic device 1 matches one MAC address included in the software program 10 .
In block S 13 , the search module 110 further searches for a serial number of a hard disk drive 12 that stores the software program 10 in the electronic device 1 .
In block S 14 , the comparison module 111 determines if the serial number of the hard disk drive 12 matches one serial number included in the software program 10 by comparison. If the serial number of the hard disk drive 12 does not match one serial number included in the software program 10 , the procedure goes to block S 22 , the management module 115 denies the usage of the software program 10 in the electronic device 1 . Then, the procedure ends. Otherwise, block S 15 is implemented if the serial number of the hard disk drive 12 matches one serial number included in the software program 10 .
In block S 15 , the log obtaining module 112 determines whether there are the usage logs of the software program 10 in the file 120 of the hard disk drive 12 . As mentioned above, the usage logs of the software program 10 include a last run time of the software program 10 , a number of times the software program 10 has been run in the electronic device 1 , a licensed period and a maximum license usage of the software program 10 . If there are no the usage logs of the software program 10 in the file 120 , the procedure goes to block S 16 , the log creation module 113 creates the usage logs for the software program 10 , and records the usage logs in the file 120 . Then, the procedure goes to block S 21 . Otherwise, block S 17 is implemented if there are the usage logs of the software program 10 in the file 120 .
In block S 17 , the log obtaining module 112 obtains the usage logs from the file 120 .
In block S 18 , the log obtaining module 112 reads the last run time of the software program 10 , the number of times the software program 10 has been run in the electronic device 1 , the licensed period and the maximum license usage of the software program 10 from the usage logs.
In block S 19 , the determination module 114 determines if the last run time of the software program 10 is earlier than the current system time of the electronic device 1 , for checking whether the current system time of the electronic device 1 has been hacked, determines if the current system time of the electronic device 1 is within the licensed period of the software program 10 if the current system time of the electronic device 1 has not been hacked, and determines if the number of times the software program 10 has been run in the electronic device 1 is less than the maximum licensed usage of the software program 10 . If either answer of the above determinations is no, it means running of the software program in the electronic device is expired, then, the procedure goes to block S 22 , the management module 115 denies usage of the software program 10 in the electronic device 1 . Then, the procedure ends. Otherwise, block S 20 is implemented is all answers of the above determinations are yes.
In block S 20 , the management module 115 permits the software program 10 to run in electronic device 1 .
In block S 21 , the update module 116 updates the last run time of the software program 10 and the number of times the software program 10 has been run in the usage logs.
Although certain inventive embodiments of the present disclosure have been specifically described, the present disclosure is not to be construed as being limited thereto. Various changes or modifications may be made to the present disclosure without departing from the scope and spirit of the present disclosure.
Claims as granted
19 claimsLog in to read the claims of this application.
Log in to unlockClassifications
12 codes- G06F7/04
- G06F17/30
Claim changes
SoonSee which claims were amended, added or cancelled during examination, with every added and removed word marked.
The published claims of this application are not paired with the granted ones in what we hold.
File wrapper
See the full prosecution history — every USPTO and applicant action on this file, in order.
Log in to unlockDocuments
Log in to open the documents of this file: the application as filed, every office action and response, the notice of allowance.
Log in to unlockChain of title
See the full assignment history — every owner this patent has passed through, with recordation dates and reel/frame numbers.
Log in to unlock