WO2000034885A1 - A method and apparatus for remote installation of network drivers and software - Google Patents
A method and apparatus for remote installation of network drivers and software Download PDFInfo
- Publication number
- WO2000034885A1 WO2000034885A1 PCT/US1999/029117 US9929117W WO0034885A1 WO 2000034885 A1 WO2000034885 A1 WO 2000034885A1 US 9929117 W US9929117 W US 9929117W WO 0034885 A1 WO0034885 A1 WO 0034885A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- code
- driver
- rerouting
- template
- section
- Prior art date
Links
- 238000009434 installation Methods 0.000 title claims abstract description 50
- 238000000034 method Methods 0.000 title claims description 36
- 230000027455 binding Effects 0.000 claims description 55
- 238000009739 binding Methods 0.000 claims description 55
- 230000003068 static effect Effects 0.000 claims description 45
- 238000004891 communication Methods 0.000 claims description 19
- 230000000903 blocking effect Effects 0.000 claims description 11
- 238000011156 evaluation Methods 0.000 claims description 11
- 238000003780 insertion Methods 0.000 claims description 5
- 230000037431 insertion Effects 0.000 claims description 5
- 230000004048 modification Effects 0.000 claims description 5
- 238000012986 modification Methods 0.000 claims description 5
- 230000000694 effects Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 29
- 230000009471 action Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000010420 art technique Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000002250 progressing effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
Definitions
- the present invention relates to the field of networked computer systems. More specifically, the invention relates to a method and apparatus for remote installation of network drivers and software in a computer system.
- Protocol driver A protocol driver is usually connected in a computer's internal communication path between the network connection and an end application.
- FIG. 1 is a block diagram illustrating media access control (MAC) unit to application communication according to the prior art.
- the block diagram is a simplified illustration of a computer system utilizing the Microsoft® Windows operating systems (e.g., Windows 95, Windows 98, Windows NT, etc.) (Manufactured by Microsoft Corp. of Redmond, Washington).
- Information is initially received, for example, as packets, from the network by a media access control unit (MAC) 120.
- the MAC 120 is used to control access to the physical transmission medium on a network.
- the MAC 120 routes the information to the NDIS 115.
- the NDIS 115 is a network driver interface.
- the NDIS 115 receives the information and routes it to the appropriate protocol driver(s) shown as protocol driver(s) 110 (e.g., a TCP/IP driver).
- the protocol driver 110 receives the information and routes it to the WINSOCK 105.
- the WINSOCK is a interface program (Manufactured by Microsoft Corp. of Redmond, Washington).
- the WINSOCK 105 receives the information and routes it to the appropriate application(s) 100.
- the binding it is useful to insert a different protocol driver into the existing communication path (hereinafter termed the binding) between the MAC 120 and the protocol driver(s) 110.
- a new protocol driver is added to the existing binding, a new binding must be established which incorporates the new protocol driver.
- the new binding links the new protocol driver to the MAC 120.
- FIG 2 is a block diagram illustrating a prior art technique of inserting an intermediate driver in the system of Figure 1.
- the intermediate driver is used to install a new protocol driver on an existing computer system. This method is more fully described in the "README" file for the ImSamp intermediate driver sample, IMSAMP.SYS. (Available from Microsoft Corp. of Redmond, Washington).
- the intermediate protocol driver 125 is bound to the NDIS 115.
- the MAC 120 routes information to the NDIS 115.
- the NDIS 115 receives the information and routes it to the intermediate protocol driver 125.
- the information is passed to the inserted protocol driver 130 through the new binding.
- the information is converted to the MAC layer format by MAC 135 in the intermediate protocol driver 110.
- the information is then passed from the MAC 135 to the NDIS 115 to enable continued routing of the information to the protocol driver 110.
- the information passes to the WINSOCK 105 and on to the appropriate application(s) 100.
- the above-described prior art method has several limitations that impact its utility, particularly when implemented on networks with large numbers of computers.
- the computer must be shut down and restarted. The necessity of shutdown and restart also requires that in-use applications be saved and exited. Where large numbers of computers are involved, this may result in large losses of productivity and can be disruptive of services provided by the network.
- some operating systems provide mechanisms to remotely distribute software over the network. These systems generally include a server to which several computers are connected. In a remote distribution, the new software is loaded onto the server and then distributed to each of the individual computers, thus reducing installation time.
- the installation of an intermediate protocol driver requires a user (e.g., a system technician) exit existing in-use applications, perform the installation, shut down the computer system, and then restart the computer system to enable operation of the new protocol driver.
- the present invention provides a method and apparatus for remote installation of network drivers and software.
- the remote host transmits to the first target computer a command to cause the first target computer to execute the installation application.
- the first target computer executes the installation application.
- the first target computer causes the modification of the network driver interface to insert the rerouting driver into the one or more communication paths provided by the set of bindings without restarting the first target computer.
- Figure 1 is a block diagram illustrating MAC to application communication according to the prior art
- Figure 2 is a block diagram illustrating a prior art technique of inserting an intermediate driver in the system of Figure 1 ;
- Figure 3 is a block diagram illustrating the static patching of a rerouting driver between a MAC and protocol drivers according to one embodiment of the invention
- Figure 4 is a flow diagram illustrating the remote installation of the rerouting driver according to one embodiment of the invention.
- Figure 5 is a flow diagram illustrating the operation of the install application 325 according to one embodiment of the invention.
- Figure 6 is a flow diagram illustrating the operation of the static patching code 365 according to one embodiment of the invention.
- Figure 7 is a block of unmodified instruction code from the NDIS 315 prior to insertion of static patching code 365;
- Figure 8 is a diagram illustrating the patching of the NDIS 315 to call to one of template(s) 350 according to one embodiment of the invention
- Figure 9 is a flow diagram illustrating the operation of one of template(s) 350 according to one embodiment of the invention.
- Figure 10 is a block diagram illustrating a network with distributed packet based security according to one embodiment of the invention.
- Figure 11 A is a block diagram illustrating the installation and partial operation of a rerouting driver for packet based security according to one embodiment of the invention
- Figure 1 IB is a block diagram illustrating another part of the operation of the rerouting driver for packet based security according to one embodiment of the invention
- Figure 12 is a flow diagram illustrating the disabling and re-enabling of access to code in a multiprocessor system according to one embodiment of the invention.
- Figure 13 is a block diagram illustrating the dynamic patching of a rerouting driver between MACs and protocol drivers according to one embodiment of the invention.
- Figure 14 is a flow diagram illustrating the operation of the dynamic patching code 1360 -according to one embodiment of the invention.
- FIG. 3 is a block diagram illustrating the static patching of a rerouting driver between a MAC and protocol drivers according to one embodiment of the invention. Existing or future bindings resulting from the insertion of the rerouting driver are shown in solid lines. Existing or future bindings rerouted by the insertion of the rerouting driver are shown in dashed lines.
- Figure 3 shows, similar to the prior art, network information, such as packets, received by one or more MACs 320 A-i being routed to the NDIS 315.
- the NDIS 315 Prior to the installation of the static patch, the NDIS 315 routes the information to one or more protocol driver(s) 310.
- the protocol driver(s) 310 then routes the information to the WINSOCK 305 for further routing to the appropriate application(s) 300.
- an install application 325, DLL 330, and rerouting driver 335 are copied to memory in the target computer and the install application 325 is started.
- the install application 325 through the interface provided by the DLL 330 (see letters A and B) requests the rerouting driver 335 be loaded.
- the install application 325 requests control code 340 execute binding code 345 to establish a new binding between the rerouting driver 335 and at least one MAC 320A (see letter C).
- the install application 325 then requests control code 340 install the static patching code 365 (see letter D).
- the static patching code 365 inserts template jump(s) 375 from the NDIS 315 to template(s) 350 in the rerouting driver 335.
- NDIS 315 contains code with generic calls to perform information communication between the MAC(s) 320 and protocol driver(s) 310.
- the static patch replaces each of these calls with a jump to one of the template(s) 350. Details of the static patching code installation are later described herein with reference to Figure 6.
- the binding may be continued for each MAC 320. After installation, the install application 325 may be deleted.
- the rerouting driver 335 has been inserted at the NDIS 315 between the MAC(s) 320 and the protocol driver(s) 310.
- information received by one or more MAC(s) 320 is routed to the NDIS 315.
- information destined for protocol driver(s) 310 is then jumped from one of template jump(s) 375 to one of template(s) 350 in the rerouting driver 335.
- information received by the template(s) 350 can be routed to the inserted code 355.
- the inserted code 355 may be a new protocol driver, or another program, for example, a security program that can prevent further routing of the information.
- the template(s) 350 may route the information on to the protocol driver 310, or the information can be discarded if it is not desirable to pass the information further.
- a return jump to the NDIS 315 is executed.
- bindings are essentially removed by the static patching because the rerouting driver 335 intercepts the call to the protocol driver 310 and later issues the call to the protocol driver(s) 310 on completion of the inserted code 355.
- the rerouting driver 335 examines the incoming transmissions to determine if the information is destined for one of the protocol driver(s) 310 or itself. Information destined for one of the protocol driver(s) 310 is passed onto the inserted code 355. Information destined for the rerouting driver 335 can be discarded or be utilized for other purposes, for example, security purposes.
- FIG. 4 is a flow diagram illustrating the remote installation of the rerouting driver 335 according to one embodiment of the present invention.
- install application 325, the DLL 330, and rerouting driver 335 are remotely copied into the memory of a target computer networked from a remote host (not shown).
- install application 325 is started using well-known remote service request techniques. It is to be noted that remote installation requires the manual installation of the software only at the remote host computer. A systems technician loads the software once at the remote host and then the software is copied to the other individual computers on the network. Thus, a systems technician does not waste productive time loading installation software at each individual computer in a network.
- FIG. 5 is a flow diagram illustrating the operation of the install application 325 according to one embodiment of the invention.
- install application 325 identifies at least one MAC 320X.
- install application 325 requests rerouting driver 335 be loaded.
- control code 340 execute binding code 345 to bind rerouting driver 335 to MAC 320X.
- install application 325 requests control code 340 execute the static patching code 365. Operation of the static patching code 365 is further described herein with reference to Figure 6.
- the install application 325 optionally requests DLL 330 to bind the install application 325 to any other MAG(s) 320.
- the install application 325 may be deleted.
- FIG. 6 is a flow diagram illustrating the operation of the static patching code 365 according to one embodiment of the invention.
- control code 340 identifies the operating system version of the computer system. This step is necessary as static patching code 365 is selectively configured for different operating system versions.
- the selective configuration is predetermined by evaluating each version of an operating system to determine the offsets of the protocol driver(s) CALLs in the instruction code of the NDIS 315. These addresses can be determined using well-known debugging techniques.
- control code 340 identifies whether offset data is available for the identified operating system version to allow the installation of static patching code 365. If the offset data is not present, control code 340 returns to install application 325 for user notification (block 660). If the offset data is present, control code 340 identifies the starting memory address of NDIS 315 instruction code (see block 620). In block 630, control code 340 disables access to at least the specific code in the NDIS 315 that will be patched. In certain single processor computer systems, block 630 can be performed by disabling all interrupts. Techniques for performing block 630 in a multiprocessor computer system are later described herein with reference to Figure 12.
- the instruction code in the NDIS 315 is statically patched with static patching code 365 by overwriting the instructions in each predetermined memory address (using the predetermined offsets) with template jump(s) 375 to template(s) 350 in the rerouting driver 335.
- the overwriting of the instructions with the static patch code 365 is later described herein with reference to Figures 7 and 8.
- control code 340 reenables access to the code in NDIS 315 that is now patched.
- control code 340 returns to install application 325.
- the disabling and re-enabling of access to the code being patched in the NDIS 315 allows the patching (and thus the rerouting driver installation) to be performed without exiting in- use applications and a system shutdown/restart.
- Figure 7 is a block of unmodified instruction code from the NDIS 315 prior to insertion of static patching code 365.
- NDIS 315 calls the protocol driver currently identified by the variable "X" (e.g., one of the protocol driver(s) 310).
- the instruction "CALL X" is overwritten with a template jump 375. The overwrite replaces the "CALL X" with a jump to one of the template(s) 350 in the rerouting driver 335, so that the template 350 instructions are executed instead of the call to the intended routines for the protocol driver X.
- Figure 8 is a diagram illustrating the patching of the NDIS 315 to call to one of templates(s) 350 according to one embodiment of the invention.
- the patching involves overwriting of the "CALL X" instruction with a template jump 375 — a "JUMP" to a template 350 address in the rerouting driver 335. It should be noted that the length of the jump instruction overwrites both "CALL X" and ' ⁇ INSTRUCTION 920>" previously shown in Figure 7.
- the "JUMP” is then made to the address of the template 350.
- the template 350 may include new instructions (e.g., instruction 950) in which additional inserted code 355 may be executed or called.
- the template 350 would then execute the "CALL X" and the other replaced instructions (e.g.,” ⁇ INSTRUCTION 920>”) and jump back to the next address in NDIS 315, i.e., " ⁇ INSTRUCTION 930>".
- a static patch to the rerouting driver 335 is introduced in the NDIS 315. This overwriting at specific memory addresses in the instruction code of the NDIS 315 is repeated until all the calls for that operating system are overwritten with different template jumps 375 which correspond to different templates 350.
- Figure 9 is a flow diagram illustrating the operation of one of template(s) 350 according to one embodiment of the invention.
- a jump from a template jump 375 in the NDIS 315 to a template 350 is made responsive to a MAC request.
- this MAC request can be to a protocol driver 310 or to the rerouting driver 335 due to a dual binding established during installation of the static patching code 365.
- the template 350 determines if the information is destined for the rerouting driver 335.
- the information is then routed to the inserted code 355.
- the information may or may not be routed to the appropriate protocol driver 310 via a CALL, depending upon the outcome of the inserted code 355 instructions.
- the appropriate protocol driver 310 is called.
- a jump back from the template 350 to the NDIS 315 is executed.
- the jump back to the NDIS 315 is executed without routing the information to the protocol driver 310. If the information is destined for the rerouting driver 335, the information was received through the binding of the NDIS 315 to the rerouting driver 335. At block 940, the template 350 would then execute a predetermined prescribed action. This action could be to discard the information, or to route the information to other code instructions. At block 950, on return from the prescribed action, the return jump back to the NDIS 315 is executed.
- one embodiment of the present invention provides a method and apparatus for the remote installation of network drivers and software from a central host computer.
- the present invention may provide substantial advantages over the prior art techniques, especially when used on large networks of computers.
- the remote installation of the present invention only requires a systems technician to install the application on a host computer for distribution to individual computers connected to the host.
- the remote installation alleviates the need for the system technician to manually load the software at each individual computer.
- the remote installation can be accomplished while the in-use system remains operating and does not require the shutdown and startup of the system to enable the operation of the new drivers and/or software. This alleviates the need to save and exit existing applications during installation and may result in a preservation of productive work time and system access.
- the prior art described with reference to Figure 2 required that the information received by the intermediate protocol driver be converted by the intermediate protocol driver back into the MAC layer format for routing through the NDIS to the protocol drivers.
- a packet is converted from the MAC layer to the protocol layer format twice (a first time when originally transmitted from the MAC to the rerouting driver through the NDIS, and a second time when transmitted from the intermediate driver to the protocol driver through the NDIS).
- the present invention does not require the second conversion to a MAC layer format to route the information from the rerouting driver to the protocol driver.
- the above-described embodiment of the present invention provides a method and apparatus for the remote installation of network drivers and software.
- Another embodiment of the present invention utilizes the remote installation embodiment to install a distributed packet based security system on one or more individual computers of a network.
- FIG. 10 is a block diagram illustrating a network with distributed packet based security according to one embodiment of the invention.
- Initial access security to the switching network is provided by a firewall.
- a firewall generally blocks access to a system except to those given access rights on an individual basis.
- the access requirements must be continually updated to remain current and effective. With large computer networks, maintaining current individual access authorizations can be time consuming and difficult to maintain. Therefore, another security measure, independent of the an access list, is a packet based security system.
- the packet based security system can be installed on one or more of the server(s) and/or one or more of the individual computers 1000 A - i.
- the packet based security system evaluates the packets of information received over the network according to some predetermined standard.
- a rerouting driver for a distributed packet based security system is provided which can evaluate received network information against predetermined and/or dynamic parameters. Based on those parameters, the system can either prevent or allow continued transmission of the information to a protocol driver. In this manner, undesirable information is stopped at the NDIS level and does not enter into the protocol driver or application level of a computer.
- the invention provides the capability to save the non-transmitted information for further security evaluation. Further, the invention can be distributed and then installed on individual computers through a remote host while in operation (without shutdown and restart of each computer system).
- Figure 11 A is a block diagram illustrating the installation and partial operation of a rerouting driver for packet based security according to one embodiment of the invention.
- Network information received by one or more MAC(s)l 120 is routed to the NDIS 1115.
- the NDIS 1115 Prior to the installation of the rerouting driver 1135, the NDIS 1115 routes the information to the protocol driver 1110.
- the protocol driver 1110 then routes the information to the WINSOCK 1105 for further routing to the appropriate application 1100.
- the install security application 1125, DLL 1130, and rerouting driver 1135 are copied to memory in the target computer and the install/security application 1125 is started.
- the install/security application 1125 through the interface provided by the DLL 1130 (see letters A and B) requests the rerouting driver 1135 be loaded.
- the install/security application 1125 requests control code 1140 execute binding code 1145 to establish a new binding between the capturing unit 1160 in the rerouting driver 1135 and at least one MAC 1120, referred to as MAC 1120X (see letter C).
- the install/security application 1125 then requests control code 1140 install the static patching code 1165 (see letter D).
- the static patching code 1165 inserts template jumps 1175 from the NDIS 1115 to templates 1150 in the rerouting driver 1135.
- the binding to the capturing unit 1160 continues for each of the remaining MACs 1120 A-i.
- the rerouting driver 1135 has been inserted at the NDIS 1115 between the MAC(s) 1120 and the protocol driver(s) 1110.
- a request is made to the NDIS 1115 from a MAC 1120.
- a jump to a template 1150 is received from the template jump 1175 in the NDIS 1115 (upon an attempted call to the protocol driver 1110).
- the template 1150 determines if the request was destined for the rerouting driver 1135. If the answer is yes, then further actions related to packet based security are taken as later described herein with reference to Figure 1 IB. If the answer is no, then the information was destined for a protocol driver 1110 (the topic of Figure 1 IA).
- the information is then routed to the filter unit 1155.
- the filter unit 1155 may include code to evaluate the information to determine if the information should be passed to the intended protocol driver 1110. If it is not desirable to pass the information further, the information can be discarded or further utilized by the filter unit 1155 and, at Number 5, a jump back to the NDIS 1115 is executed. If the information is determined to be acceptable, the information is routed back to the template 1150.
- the template 1150 then routes the information to the protocol driver 1110 by performing the CALL X extracted form the NDIS 1115 during the patching.
- a return jump to the NDIS 1115 is executed.
- Figure 1 IB is a block diagram illustrating another part of the operation of the rerouting driver for packet based security according to one embodiment of the invention.
- the NDIS 1115 is attempting to call the rerouting driver 1135.
- a jump to template 1150 is again received from the template jump 1175 in the NDIS 1115 (upon the attempted call the rerouting driverl 135).
- the template 1150 determines the request was destined for the rerouting driver 1135.
- the information is passed to the capturing unit 1160 (e.g., by performing the CALL X extracted from the NDIS 1115 during patching).
- the capturing unit 1160 then saves the information according to predetermined instructions for further security evaluation, and at Number 4, a jump back to the NDIS 1115 is executed.
- further security evaluation of the information saved by the capturing unit 1160 can be performed by another application, such as the install/security application.
- the captured information originates in the system address space (e.g., where the protocol drivers, rerouting driver, NDIS and MACs reside).
- Many applications need access to data originating from the system address space. The typical way this is accomplished is by making system calls (e.g., I/O APIs).
- system calls e.g., I/O APIs.
- system calls are not very efficient in their use of CPU resources, typically copying memory to and from user address space into the system address space.
- these system calls also create at least two costly CPU state transitions from user to supervisor mode and back to user mode.
- One option to minimize the overhead is to run more of the code in the system address space. Doing this increases the difficulty in debugging the software and has the disadvantage of not being able to take advantage of multiple CPUs on many operating systems.
- a shared memory buffer is created between device drivers in system address space and application(s) in the user space. In this way an application can get access to data in system address space without any more overhead than a memory read. However, it is necessary to prevent conditions where a CPU executing driver code may be simultaneously modifying memory being accessed by a CPU executing the application.
- two counters may be used to signal the state of the buffer.
- One counter (“write count”) is the count of the number of items written into the memory buffer.
- Another counter (“read count”) is the count of number of items read from the buffer. Only the producer modifies the "write count” and only the consumer modifies the "read count.” If the "read count” is not equal to the "write count”, then valid data is contained in the buffer.
- write count is the count of the number of items written into the memory buffer.
- Another counter (“read count”) is the count of number of items read from the buffer. Only the producer modifies the "write count” and only the consumer modifies the "read count.” If the "read count” is not equal to the "write count”, then valid data is contained in the buffer.
- Figures 1 IA and 1 IB illustrate one embodiment of the present invention that provides packet-based security through utilization of the double binding to the NDIS 1115.
- any bindings from the NDIS 1115 to the protocol driver(s) 1110 are used to route packets through the rerouting driver to the protocol driver(s) 1110.
- the bindings of the MAC(s) 1120 to the rerouting driver 1135 are used as a mechanism to capture the packets for later security evaluation.
- a separate context is provided for this capturing process. As is well known in the art, the provision of a separate context allows greater programming flexibility during the capturing process.
- the double bindings are not used. Rather, either the packets are not captured for later security evaluation or the packets are captured during the routing from the NDIS 1115 to the protocol driver(s) 1110. In a system in which the packets are captured during the routing from the NDIS 1115 to the protocol driver(s) 1110, each of the MAC(s) 1120 need not be bound to the rerouting driver 1135 (the optional step 540 from Figure 5 is not performed).
- information that is deemed acceptable by the filter unit 1155 is routed to the template 1150 for routing to the appropriate protocol driver 1110.
- Information that is deemed not acceptable by the filter unit 1155 is then routed back to the template 1150 for routing to the capturing unit 1160.
- inventions which provide distributed packet based security.
- the embodiments provide for the intercept and evaluation of information packets received over a network by a rerouting driver with associated software. After evaluation, the information may be allowed continued routing to the protocol driver. Alternatively, the information may be stopped and/or saved for further security evaluations.
- the embodiments can be remotely distributed and installed on individual computers on a remote host while in operation without shutdown and restart of the computer system.
- the filter unit could contain parameters to filter and capture information with particular routing information, and in this way monitor utilization of the network.
- FIG. 12 is a flow diagram illustrating the disabling and re-enabling of access to code in a multiprocessor system according to one embodiment of the invention.
- the code that is to be modified is brought into the cache of the given CPU and is overwritten with "blocking code" to create a first version of the code.
- the blocking code will prevent other CPUs from progressing past this code.
- the blocking code can be implemented any number of ways, one way is to write code that causes the CPU to loop around a serializing instruction. As a result, any of the other CPUs (i.e., the CPUs not performing the patch), cannot access (are disabled) the code to be modified.
- the first version of the code is written from the given CPU's cache into shared memory. As a result, if another CPU attempts to execute the code to be modified, it will access the blocking code from the shared memory.
- the code beyond the blocking code can now be modified in the given CPU's cache as required to create a second version of the code.
- the code can be overwritten with template jumps to effect the static patch of the NDIS.
- the second version of the code is written from the given CPU's cache into shared memory.
- the previously inserted blocking code in the given CPU's cache is now overwritten with the desired code to create a third version of the code.
- the third version of the code (without the blocking code) is written into shared memory.
- the patched code is in the shared memory and any CPU that now attempts to execute the code at that address will get the patched code.
- one embodiment provides a dynamic patch technique that patches individual instruction code locations as information is received from them by the rerouting driver. In this manner, incrementally each CALL is patched until all the specific instruction locations from which information was passed are patched.
- Figure 13 is a block diagram illustrating the dynamic patching of a rerouting driver between MACs and protocol drivers according to one embodiment of the invention.
- the install application 1325, DLL 1330, and rerouting driver 1335 are copied to memory in the target computer and the install application 1325 is started.
- the install application 1325 through the interface provided by the DLL 1330 requests the rerouting driver 1335 be loaded.
- the rerouting driver 1335 requests control code 1340 execute binding code 1345 to establish a new binding between the dynamic patching code 1360 in the rerouting driver 1335 and every MAC 1320 A-i.
- information is received by a MAC 1320 from the network. This information is forwarded to the NDIS 1315 for routing to the appropriate protocol driver(s) 1310 and/or the rerouting driver 1335.
- the NDIS 1315 forwards the information to the protocol driver 1310 as no patches of the NDIS 1315 have been made. Due to the multiple bindings, the NDIS 1315 additionally forwards the same information to the dynamic patching code 1360.
- the dynamic patching code 1360 determines if a dynamic patch should be made to the instruction code address that sent the information.
- a dynamic patch is executed by the dynamic patching code 1360.
- the dynamic patching code 1360 will overwrite the specified code in the NDIS 1315 with a template jump 1375 to a template 1350 in the rerouting driver 1335.
- the next time information is passed through the NDIS 1315 at that instruction code location, information destined for protocol driver 1310 will be routed to the dynamic patching code 1360 in the rerouting driver 1335 for further action as described below with reference to Figure 14.
- FIG 14 is a flow diagram illustrating the operation of the dynamic patching code 1360 according to one embodiment of the invention.
- the dynamic patching code 1360 receives a call. As the dynamic patching code is dually bound, this call could be from one of the templates or from the NDIS 1315.
- the dynamic patching code 1360 determines if the call is from one of the templates.
- the call is routed to the inserted code for further action (see block 1440).
- the call is returned to the template for further action (see block 1450).
- Embodiments can use combinations of the static/dynamic patching techniques. For example, if the data on a given operating system is available, the static patching technique is used. However, if the data is not available, the user is notified and/or the dynamic patching technique is used. As another example, the static patching technique could be used for all known calls and the dynamic patching technique could be installed in case one or more calls were missed.
- FIG. 3 - 14 the items shown in Figures 3 - 14 are stored and executed on a computer system.
- a computer system stores and communicates (internally and with other computer systems over a network) code and data using machine readable media, such a magnetic disks, optical disks, random access memory, read only memory, carrier waves, signals, etc.
- machine readable media such as a magnetic disks, optical disks, random access memory, read only memory, carrier waves, signals, etc.
- machine readable media such as a magnetic disks, optical disks, random access memory, read only memory, carrier waves, signals, etc.
Abstract
Description
Claims
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000587276A JP2002532784A (en) | 1998-12-07 | 1999-12-07 | Method and apparatus for remote installation of network drivers and software |
EP99967236A EP1175646A1 (en) | 1998-12-07 | 1999-12-07 | A method and apparatus for remote installation of network drivers and software |
IL14359299A IL143592A0 (en) | 1998-12-07 | 1999-12-07 | A method and apparatus for remote installation of network drivers and software |
AU23555/00A AU2355500A (en) | 1998-12-07 | 1999-12-07 | A method and apparatus for remote installation of network drivers and software |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11129298P | 1998-12-07 | 1998-12-07 | |
US60/111,292 | 1998-12-07 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2000034885A1 true WO2000034885A1 (en) | 2000-06-15 |
Family
ID=22337653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US1999/029117 WO2000034885A1 (en) | 1998-12-07 | 1999-12-07 | A method and apparatus for remote installation of network drivers and software |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP1175646A1 (en) |
JP (1) | JP2002532784A (en) |
AU (1) | AU2355500A (en) |
WO (1) | WO2000034885A1 (en) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006074072A2 (en) | 2004-12-30 | 2006-07-13 | Citrix Systems, Inc. | Systems and methods for providing client-side acceleration techniques |
US8848710B2 (en) | 2005-01-24 | 2014-09-30 | Citrix Systems, Inc. | System and method for performing flash caching of dynamically generated objects in a data communication network |
US8856777B2 (en) | 2004-12-30 | 2014-10-07 | Citrix Systems, Inc. | Systems and methods for automatic installation and execution of a client-side acceleration program |
US8892778B2 (en) | 2004-07-23 | 2014-11-18 | Citrix Systems, Inc. | Method and systems for securing remote access to private networks |
US8914522B2 (en) | 2004-07-23 | 2014-12-16 | Citrix Systems, Inc. | Systems and methods for facilitating a peer to peer route via a gateway |
US8954595B2 (en) | 2004-12-30 | 2015-02-10 | Citrix Systems, Inc. | Systems and methods for providing client-side accelerated access to remote applications via TCP buffering |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7978716B2 (en) | 2003-11-24 | 2011-07-12 | Citrix Systems, Inc. | Systems and methods for providing a VPN solution |
US8495305B2 (en) | 2004-06-30 | 2013-07-23 | Citrix Systems, Inc. | Method and device for performing caching of dynamically generated objects in a data communication network |
US8739274B2 (en) | 2004-06-30 | 2014-05-27 | Citrix Systems, Inc. | Method and device for performing integrated caching in a data communication network |
US7757074B2 (en) | 2004-06-30 | 2010-07-13 | Citrix Application Networking, Llc | System and method for establishing a virtual private network |
US8706877B2 (en) | 2004-12-30 | 2014-04-22 | Citrix Systems, Inc. | Systems and methods for providing client-side dynamic redirection to bypass an intermediary |
US8700695B2 (en) | 2004-12-30 | 2014-04-15 | Citrix Systems, Inc. | Systems and methods for providing client-side accelerated access to remote applications via TCP pooling |
US8549149B2 (en) | 2004-12-30 | 2013-10-01 | Citrix Systems, Inc. | Systems and methods for providing client-side accelerated access to remote applications via TCP multiplexing |
US8301839B2 (en) | 2005-12-30 | 2012-10-30 | Citrix Systems, Inc. | System and method for performing granular invalidation of cached dynamically generated objects in a data communication network |
US7921184B2 (en) | 2005-12-30 | 2011-04-05 | Citrix Systems, Inc. | System and method for performing flash crowd caching of dynamically generated objects in a data communication network |
WO2020188700A1 (en) * | 2019-03-18 | 2020-09-24 | 日本電気株式会社 | Firmware rewriting device, firmware rewriting method, and non-transitory computer-readable medium storing program |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4819234A (en) * | 1987-05-01 | 1989-04-04 | Prime Computer, Inc. | Operating system debugger |
US5630061A (en) * | 1993-04-19 | 1997-05-13 | International Business Machines Corporation | System for enabling first computer to communicate over switched network with second computer located within LAN by using media access control driver in different modes |
US5761504A (en) * | 1996-02-16 | 1998-06-02 | Motorola, Inc. | Method for updating a software code in a communication system |
US5764890A (en) * | 1994-12-13 | 1998-06-09 | Microsoft Corporation | Method and system for adding a secure network server to an existing computer network |
US5881236A (en) * | 1996-04-26 | 1999-03-09 | Hewlett-Packard Company | System for installation of software on a remote computer system over a network using checksums and password protection |
US5950012A (en) * | 1996-03-08 | 1999-09-07 | Texas Instruments Incorporated | Single chip microprocessor circuits, systems, and methods for self-loading patch micro-operation codes and patch microinstruction codes |
US6016553A (en) * | 1997-09-05 | 2000-01-18 | Wild File, Inc. | Method, software and apparatus for saving, using and recovering data |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08227387A (en) * | 1995-02-21 | 1996-09-03 | Sony Corp | Method and system for communication |
JPH1021067A (en) * | 1996-06-28 | 1998-01-23 | Toshiba Corp | Dynamic correction method for program |
-
1999
- 1999-12-07 JP JP2000587276A patent/JP2002532784A/en active Pending
- 1999-12-07 EP EP99967236A patent/EP1175646A1/en not_active Withdrawn
- 1999-12-07 WO PCT/US1999/029117 patent/WO2000034885A1/en not_active Application Discontinuation
- 1999-12-07 AU AU23555/00A patent/AU2355500A/en not_active Abandoned
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4819234A (en) * | 1987-05-01 | 1989-04-04 | Prime Computer, Inc. | Operating system debugger |
US5630061A (en) * | 1993-04-19 | 1997-05-13 | International Business Machines Corporation | System for enabling first computer to communicate over switched network with second computer located within LAN by using media access control driver in different modes |
US5764890A (en) * | 1994-12-13 | 1998-06-09 | Microsoft Corporation | Method and system for adding a secure network server to an existing computer network |
US5761504A (en) * | 1996-02-16 | 1998-06-02 | Motorola, Inc. | Method for updating a software code in a communication system |
US5950012A (en) * | 1996-03-08 | 1999-09-07 | Texas Instruments Incorporated | Single chip microprocessor circuits, systems, and methods for self-loading patch micro-operation codes and patch microinstruction codes |
US5881236A (en) * | 1996-04-26 | 1999-03-09 | Hewlett-Packard Company | System for installation of software on a remote computer system over a network using checksums and password protection |
US6016553A (en) * | 1997-09-05 | 2000-01-18 | Wild File, Inc. | Method, software and apparatus for saving, using and recovering data |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8892778B2 (en) | 2004-07-23 | 2014-11-18 | Citrix Systems, Inc. | Method and systems for securing remote access to private networks |
US8897299B2 (en) | 2004-07-23 | 2014-11-25 | Citrix Systems, Inc. | Method and systems for routing packets from a gateway to an endpoint |
US8914522B2 (en) | 2004-07-23 | 2014-12-16 | Citrix Systems, Inc. | Systems and methods for facilitating a peer to peer route via a gateway |
US9219579B2 (en) | 2004-07-23 | 2015-12-22 | Citrix Systems, Inc. | Systems and methods for client-side application-aware prioritization of network communications |
WO2006074072A2 (en) | 2004-12-30 | 2006-07-13 | Citrix Systems, Inc. | Systems and methods for providing client-side acceleration techniques |
WO2006074072A3 (en) * | 2004-12-30 | 2006-12-07 | Citrix Systems Inc | Systems and methods for providing client-side acceleration techniques |
US8856777B2 (en) | 2004-12-30 | 2014-10-07 | Citrix Systems, Inc. | Systems and methods for automatic installation and execution of a client-side acceleration program |
US8954595B2 (en) | 2004-12-30 | 2015-02-10 | Citrix Systems, Inc. | Systems and methods for providing client-side accelerated access to remote applications via TCP buffering |
US8848710B2 (en) | 2005-01-24 | 2014-09-30 | Citrix Systems, Inc. | System and method for performing flash caching of dynamically generated objects in a data communication network |
Also Published As
Publication number | Publication date |
---|---|
AU2355500A (en) | 2000-06-26 |
EP1175646A1 (en) | 2002-01-30 |
JP2002532784A (en) | 2002-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8006243B2 (en) | Method and apparatus for remote installation of network drivers and software | |
WO2000034885A1 (en) | A method and apparatus for remote installation of network drivers and software | |
US6675218B1 (en) | System for user-space network packet modification | |
US7116675B2 (en) | Methods and systems for transferring packets and preventing illicit access | |
FI113927B (en) | Method of intercepting the network packets in a network connected device | |
US7228410B2 (en) | Network interface sharing methods and apparatuses that support kernel mode data traffic and user mode data traffic | |
US7765194B1 (en) | Detection and enforcement of version compatibility in network devices | |
US20070061482A1 (en) | Information processing apparatus, communication control method, and communication control program | |
US20060133275A1 (en) | Architecture and run-time environment for network filter drivers | |
WO2005083984A1 (en) | Protocol stack with modification facility | |
US20100023667A1 (en) | High availability system and execution state control method | |
US7181486B1 (en) | Method and apparatus for remote installation of network drivers and software | |
JP2001517899A (en) | Method and system for identifying and suppressing executable objects | |
CN114039789B (en) | Traffic protection method, electronic device and storage medium | |
EP1662393A2 (en) | Terminal control apparatus having a fragility detection unit | |
JP2002532784A5 (en) | ||
US20040205375A1 (en) | Method and apparatus for testing network system, and computer-readable medium encoded with program for testing network system | |
JP4025650B2 (en) | Method for updating network server program, related system and software | |
US20030214909A1 (en) | Data processing device and its input/output method and program | |
CN113986286A (en) | Elegant upgrading method of gateway control program based on parent-child process transfer descriptor | |
US20200204661A1 (en) | Network application program product and method for processing application layer protocol | |
Janssens et al. | Towards transparent hot-swapping support for producer-consumer components | |
KR102372382B1 (en) | Window File Sharing System After Connects To The Network Of Other Segments That Cannot Be Directly Connected | |
CN114500052B (en) | Event-driven-based efficient data encryption forwarding method and device | |
CN111158776A (en) | Graceful restart method of Web application protection system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Kind code of ref document: A1 Designated state(s): AE AL AM AT AU AZ BA BB BG BR BY CA CH CN CR CU CZ DE DK DM EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A1 Designated state(s): GH GM KE LS MW SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
DFPE | Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101) | ||
ENP | Entry into the national phase |
Ref country code: JP Ref document number: 2000 587276 Kind code of ref document: A Format of ref document f/p: F |
|
WWE | Wipo information: entry into national phase |
Ref document number: 143592 Country of ref document: IL |
|
WWE | Wipo information: entry into national phase |
Ref document number: 23555/00 Country of ref document: AU |
|
WWE | Wipo information: entry into national phase |
Ref document number: 1999967236 Country of ref document: EP |
|
REG | Reference to national code |
Ref country code: DE Ref legal event code: 8642 |
|
WWP | Wipo information: published in national office |
Ref document number: 1999967236 Country of ref document: EP |
|
WWW | Wipo information: withdrawn in national office |
Ref document number: 1999967236 Country of ref document: EP |