WO2001016731A1 - Procede et systeme permettant de modifier un code compile a l'aide d'un outil personnalise - Google Patents

Procede et systeme permettant de modifier un code compile a l'aide d'un outil personnalise Download PDF

Info

Publication number
WO2001016731A1
WO2001016731A1 PCT/US2000/022638 US0022638W WO0116731A1 WO 2001016731 A1 WO2001016731 A1 WO 2001016731A1 US 0022638 W US0022638 W US 0022638W WO 0116731 A1 WO0116731 A1 WO 0116731A1
Authority
WO
WIPO (PCT)
Prior art keywords
code
user
compiled code
customized
compiled
Prior art date
Application number
PCT/US2000/022638
Other languages
English (en)
Inventor
James Friskel
Carl Preston Martineau
Bradley George Cox
Martin Ernst Sielaff
Drew Cohen
Original Assignee
Neoplanet, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Neoplanet, Inc. filed Critical Neoplanet, Inc.
Priority to AU69140/00A priority Critical patent/AU6914000A/en
Publication of WO2001016731A1 publication Critical patent/WO2001016731A1/fr

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Definitions

  • the present invention relates to modification of computer programs in general and, more particularly, to a method and system for modifying compiled code using a customization editing tool.
  • Shared libraries provide an alternative approach to the above for modifying an executable code version of an application program.
  • a shared library may be linked with an executable program at run time instead of at compile time.
  • Shared libraries are currently used on many types of platforms.
  • One specific shared library used on a MICROSOFT WINDOWS platform is a dynamic link library (DLL).
  • DLL dynamic link library
  • a user can create its own DLLs that are called by the main executable program as necessary at run time in order to customize the application program.
  • the creation of DLLs still requires a user to obtain significant information about the source code from an Application Program Interface (API) provided by the creator of the source code.
  • API Application Program Interface
  • the creator of the executable program does not have control over the activities initiated by the DLL.
  • the executable program source code defines one or more functions that are called in the DLLs.
  • the user can make those functions do almost anything desired by the user. This is a disadvantage because the actions initiated by the user's DLL may conflict with other functionality or data structures of the calling executable program.
  • troubleshooting of the main executable program becomes more difficult with DLLs because the developer of the executable program cannot controllably define the range of actions that may be requested by the user in a DLL.
  • the creation of DLLs based on the API requires computer programming skill so that lay persons are not able to readily customize a program by creating DLLs.
  • the things that a user would need to successfully create a DLL include the right version and type of compiler for compiling the DLL and the correct type of platform corresponding to the operating system and central processing unit.
  • One specific application program for which it is desirable to customize the program for specific users is an Internet or web browser, which may be used for example to access and navigate the Internet or a private intranet.
  • Internet browsers such as INTERNET EXPLORER from Microsoft Corporation and NETSCAPE NAVIGATOR from Netscape Communications, Inc., do not permit a user to modify the executable code to customize the browser.
  • a user cannot readily customize these browsers to make changes that may be of advantage in a specific application area or industry.
  • an entity having authority to distribute additional copies of such a browser may desire, but be unable, to readily make changes to the browser interface to create a version with the entity's brand name or other features proprietary to the entity.
  • FIG. 1 illustrates a computer system comprising a server computer and a client computer running an editing tool for customizing compiled code according to the present invention
  • FIG. 2 illustrates an overview of client-server data communications for the system of FIG. 1;
  • FIG. 3 is a flow diagram representing a preferred process for generating customized code using the editing tool of FIG. 1;
  • FIG. 4 is a flow diagram representing a preferred process for modifying the compiled code as part of the process of FIG. 3;
  • FIG. 5 is a flow diagram representing a preferred process for authorizing the compiled code received by the server computer or acceptance unit of FIG. 1;
  • FIG. 6 is a flow diagram representing a preferred process for the client computer to determine whether the compiled code has been altered after its authorization;
  • FIG. 7 illustrates an example of a customizable element in source code form before and after customization by the client computer
  • FIG. 8 illustrates an example of an unlock variable in source code form before and after authorization of the compiled code by the server computer.
  • the present invention provides a method and a system that permits a user, even one without significant software programming skill, to make substantial changes to the functionality of an application program, for example an Internet browser, by modifying its executable code without having access to the underlying source code and without going through a recompilation process.
  • a significant advantage of the present invention is that third parties may make substantial changes to the appearance and functionality of an application program by directly modifying the underlying compiled executable code in this way.
  • the present invention provides the advantage of controlling the range of modifications that a user may make to the executable code of the program.
  • the quality of the software is less likely to be compromised by customizations done by the user and the reliability of the browser program (also referred to herein as simply a "browser") operation will be improved.
  • the modifications of the present invention are made directly to the main executable code so that the browser opens and runs immediately in its default state as customized by the user. This is in contrast to the prior approach where a user may do some customization of a browser after it has been installed in its default state. For example, third parties may use the present invention to create their own customized version of the browser, which may include their own brand name and appearance.
  • the modifications are readily made by the user's simply responding to a list of authorized changes that are presented to the user by an editing tool provided to a user with a copy of the browser executable code in its default, distributed state. By answering the questions and instructing the editing tool to modify the executable code, the user can modify the browser executable code without access to the source code.
  • a customized browser provides a user such as a software distributor with a convenient way to build customer recognition of the user/distributor's brand, customer loyalty, and the size of customer installed base.
  • Internet browser programs that may be used to advantage in conjunction with and modified by the system and method of the present invention are generally described in pending U.S. Application No.
  • NeoPlanet, Inc. of Phoenix, Arizona
  • the NeoPlanet browser permits the customization of its user interface by enabling a user to select and change the appearance of the browser by the selection of skins, which are files containing graphical and other information used to create a particular look and feel for the browser, from libraries created and provided by NeoPlanet or third parties or the user itself.
  • the NeoPlanet browser permits a user to customize lists of web pages presented to the user in an interface window for the user's selection of new web pages for viewing and browsing.
  • These lists are organized as a multiple level hierarchy with the top level organized into categories referred to as channels and lower levels organized underneath these channels (also referred to herein as a "channel hierarchy").
  • the user is able to customize this channel hierarchy by selecting files of channel information created and provided by NeoPlanet or a third party.
  • a user may customize the NeoPlanet browser, and also other browsers, to have a look and feel and functionality that is specific to the user's desired requirements and, according to the present invention, these customizations may be made directly to the browser executable code so that the default state of the browser, for example when copied and further distributed to third parties by the user, will be the state as customized by the user and without the need for any further action by subsequent parties to which the software has been distributed.
  • the present invention relates to an apparatus and method for operating a computer system, such as computer system 103 of FIG. 1, and processing electrical or other physical signals to generate other desired physical signals.
  • the apparatus of the present invention may be specially constructed for the required purposes, or it may comprise general purpose computers in a general communications system, such as in computer system 103 of FIG. 1, selectively configured by computer programs stored within the memories of the client and server computers and the acceptance unit.
  • a general communications system such as in computer system 103 of FIG. 1, selectively configured by computer programs stored within the memories of the client and server computers and the acceptance unit.
  • the present invention also relates to apparatus comprising a set of computer programs stored on electrical, magnetic, or other physical media, and designed so as to control and instruct general purpose computers such as the client and server computers and acceptance unit of FIG. 1 to perform the operations described herein.
  • general purpose computers such as the client and server computers and acceptance unit of FIG. 1 to perform the operations described herein.
  • the general structure required for such computer programs will also appear from the description given below, and those of ordinary skill in the art of computer programming may implement various embodiments of such programs using a wide variety of programming languages.
  • FIG. 1 illustrates general purpose client and server computers suitable for implementing these operations and in electronic communication with each other.
  • computer system 103 comprises a server computer, an acceptance unit, and a client computer running an editing tool for customizing compiled code according to the present invention.
  • compiled code is often known as “object code”, but the term “compiled code” is used herein.
  • computer system 103 is generally described with reference to Internet-based communication between the client and server computers and acceptance unit, but the disclosed computer system may be employed in other on-line and remote computer systems, such as on-line services using proprietary user interfaces as well as private intranets and extranets.
  • client computer 100 (also referred to as a "client"), for example a personal computer (PC) running the WINDOWS operating system from Microsoft Corporation or a UNIX-based computer, is in two-way electronic communication 101 with server computer 102 (also referred to as "server”). Communication 101 is preferably done using Internet protocol-based communication.
  • Client 100 comprises monitor 104 for visual monitoring by a user, central processing unit (CPU) 106 for running software programs on client 100, and storage device 108 for storing software programs in a permanent form on magnetic, optical, or other storage media, such as for example a hard disk drive.
  • Customization editing tool 110 is a software program according to the present invention, stored in one or more associated files, for customizing compiled code on client 100.
  • Tool 110 implements the methods of the present invention as described herein.
  • Tool 110 resides on storage device 108 and runs on client 100 using CPU 106 and other related conventional computer components.
  • CPU 106 is preferably a standard, commercial digital microprocessor, such as an Intel PENTIUM processor.
  • Tool 110 is preferably implemented in software using appropriate techniques suitable to implement the procedures described herein in one of many standard programming languages such as, for example, MICROSOFT VISUAL C++.
  • Server 102 comprises monitor 1 12, CPU 114, and storage device 116 on which authorization program 120 is stored.
  • Storage device 116 may be of a similar type of device as discussed above for storage device 108.
  • Authorization program 120 is organized in one or more associated files, runs on server 102 using CPU 114 and other related conventional computer components, and may be implemented in software using conventional techniques as described above for tool 110.
  • Acceptance unit 122 is a general purpose computer in two-way electronic communication 121 with client 100.
  • Communication 121 is initiated by tool 110 as appropriate for sending compiled code that the user of client 100 has customized to the user's satisfaction for authorization for normal usage, for example distribution to the public, as discussed further below.
  • this authorization is a final control step that is preferably performed by the operator of server 102 to: (i) confirm compliance of the customized compiled code with operator-desired specifications or terms of any agreement, for example regarding user branding using the user's trademarks, previously reached between the operator and the user; and (ii) ensure that no obscene or other objectionable material has been included in the compiled code during customization.
  • Communication 121 is preferably internet protocol-based communication as for communication 101.
  • communication 121 may be the sending of an electronic mail (also known as E-mail) message from client 100 as initiated by tool 110 and that includes the customized code as an attachment, and the reply from acceptance unit 122 to client 100 may be another E-mail having a copy of an authorized version of the customized code as an attachment.
  • E-mail electronic mail
  • other conventional methods of electronic or Internet communications can be used to transfer the customized code.
  • acceptance unit 122 is not necessary and all communications with client 100, including communications regarding authorization of customized compiled code, could be accomplished through server 102.
  • acceptance unit 122 stores a copy of one or more portions of authorization program 120 as appropriate for those operations that it may perform.
  • FIG. 2 illustrates client- server and acceptance unit communication data flows for the system of FIG. 1 during implementation of the operations described herein.
  • the compiled code is generated using standard compiling and linking procedures.
  • the form of the compiled code is the default form as set by the operator of server 102.
  • the compiled code is preferably compressed using standard techniques and downloaded at step 200 to client 100, for example in a self-extracting zip file.
  • the compiled code may be sent, for example, by E-mail or the user may download it by accessing a webpage connected to server 102.
  • the user of client 100 stores the compiled code in storage device 108 and installs the compiled code using, for example, a setup program compiled using a WISE compiler available from Wise Solutions.
  • the setup program extracts and installs the components of the compiled code into predetermined or a user-selected file directory on client 100.
  • the downloaded compiled code includes the executable code for an application program, for example an Internet browser (described below as an example of a specific embodiment of the present invention), and editing tool 110.
  • Tool 110 comprises components for customizing the executable browser code, providing a graphical user interface to the user of client 100, and a zipping program for re- compressing the customized compiled code for its return to server 102 or acceptance unit 122.
  • Other files provided as part of the downloaded compiled code include any default customization files called by the application program during run-time, for example skin files and channel hierarchy files, and conventional software for installing and testing the application program on client 100.
  • tool 110 When run by the user, tool 110 will preferably prompt the user for the user's E- mail address and a password previously provided by the operator of server 102.
  • the password is preferably a unique user identification and at step 202 is sent by tool 110 to server 102.
  • the password is processed by authorization program 120 to determine the extent to which the user is authorized to modify the application program. Each password will correspond to one of several varying levels of authorization. Alternatively, if the user does not have a password, then the user will only be authorized to make modifications as the lowest authorization level as pre-defined by authorization program 120.
  • Such elements include items relating to the functionality and the appearance of the application program to be customized on client 100.
  • Such elements include text labels and graphic images presented during start-up, on pull-down menus, on help and other pop-up windows, and on other portions of the user interface presented to the user during operation.
  • Further examples include items that can be enabled or disabled such as certain scrolling banners, headlines in certain windows, and the presentation of functional options that are presented to the user.
  • the network location of certain files accessed by the browser program during start-up and operation such as libraries of skin files or channel hierarchy files as used, for example, to customize the NeoPlanet browser appearance and channel navigation features may be customized by providing new network file location designations or indicators such as, for example, uniform resource locators (URLs) or directory paths corresponding to local storage on client 100 or a local network.
  • These file location designations may be customizable elements.
  • Yet other features such as privacy features or functional configurations may be selected from predefined choices by the user and these choices may also be customizable elements.
  • a list of those customizable elements that the user is authorized to modify is sent to client 100 by server 102.
  • Tool 110 presents only the authorized elements to the user preferably using a user-friendly graphical user interface (GUI).
  • GUI user-friendly graphical user interface
  • tool 110 saves these choices in a file stored locally on storage device 108. Also, tool 110 permits a user to recall prior customized choices and values from a saved file that may have been created previously. After all customization choices have been made and entered by the user, tool 110 is run to actually perform the direct modification of the compiled code that executes the application program. This modification process is described in more detail below.
  • acceptance unit 122 can be optionally used for uploading customizing code at step 206 and downloading authorized code at step 208. Further, acceptance unit 122 and server 102 may optionally be in communication to coordinate handling and/or sharing of processing of the uploaded customized code.
  • the final version of the customized code as modified by the user using tool 110 is compressed and sent to server 102, or optionally as described above to acceptance unit 122.
  • the customized code is processed by another component of authorization program 120 used to create an authorized or unlocked version of the customized compiled code uploaded at step 206.
  • acceptance unit 122 stores a copy of one or more portions of authorization program 120 as appropriate for the operations it performs.
  • the customized browser code when run on client 100 or any other computer, the customized browser code will display an unauthorized usage message, such as in a pop-up window at start-up, stating that usage and distribution of the browser is not authorized.
  • the authorized code is downloaded to client 100 for installation and running on client 100. The authorized code can then be further distributed by the user, and the unauthorized message mentioned above has been disabled so that it no longer appears.
  • FIG. 3 is a flow diagram representing a preferred process for generating customized code on client 100 using customization editing tool 110. Note that in FIG. 3 and the following figures, rectangles represent steps to be performed, while ovals represent computer code or other information processed by, used in performing, or resulting from these steps.
  • Oval 300 represents downloaded compiled code received by client 100 at step 200 of FIG. 2.
  • the downloaded code for example in the form of a self- extracting executable file as mentioned above, is installed by the user on client 100 to install editing tool 110, the executable compiled code for the default application program, and the other related files on client 100.
  • the self-extracting file downloaded from server 102 may be created, for example, using the WISE compiler.
  • the WISE compiler will compile and compress several files into a single self- extracting file including an executable installation program to run the self-extraction process, the default browser executable program and its related DLL and data files, editing tool 110, and another customized browser installation program to be used by the user after modification of the browser executable program.
  • the WISE compilation of the above files to form the self-extracting file is done on server 102 or another computer (not shown) associated with server 102, and part of this compilation uses an installation script source file to define the specifics of the process to be run by the compiled installation program on client 100.
  • the downloaded self-extracting file is run to install the components mentioned above to either predefined or user-specified directories on client 100.
  • the WISE installation program decompresses and installs each file from the self-extracting file to its appropriate location, for example, in a directory tree on storage device 108.
  • editing tool 110 is run to initiate the customization process, which is done, for example, by the user's clicking on a desktop icon corresponding to editing tool 110.
  • compiled code 300 is initially copied to a new memory location on storage device 108 to provide copied code 304. Changes will be made to copied code 304 so that a default version of the original code is retained for possible further modification iterations.
  • Copied code is modified at step 306, as controlled and limited by authorized customizable list 308 obtained from server 102 at step 204 of FIG. 2, to generate modified code 310. More specific details that are part of modification step 306 are discussed below with reference to FIG. 4.
  • Modified code 310 is executable code that has been directly modified by direct changes to one or more corresponding files on storage device 108. No access to source code or recompilation is necessary since the executable code is directly modified in an intelligent way as controlled by editing tool 110.
  • modified code 310 is installed on client 100, or optionally another computer suitable for running modified code 310, using the customized browser installation program originally provided as part of the downloaded compiled code received by client 100 at step 200 of FIG.2.
  • this installation process preferably involves creating a self-extracting file on client 100 by compressing several files into a single file, for example, using the publicly-available zlib compression library available, for example, at URLs www.cdrom.com/pub/infozip/zlib/ or www.winimage.com/zLibDll/ or another standard compression program.
  • the components of this self-extracting file will be the customized browser installation program mentioned above, the modified executable browser program and any modifications and/or additions to its associated DLL and/or data files, and an installation configuration file that is read by the customized browser installation program.
  • the installation process can be performed by the user on client 100 by executing the self-extracting file.
  • the customized browser installation program will execute by installing the browser application program on client 100.
  • the installation program operates logically in an almost identical fashion to the WISE installation program except that the installation program installs the browser program and associated files from a predetermined source directory tree on storage device 108 rather than from within the same executable code as for the installation program (as is standard for a conventional WISE installation).
  • Editing tool 110 while executing modifications selected by the user, creates a configuration file that reflects the customizations made by the user in step 306.
  • the configuration file is different from the manifest file discussed below and is used as a recipe to guide the installation process executed by the customized browser installation program above.
  • the use of the configuration file permits the installation process to be dynamically customized by the user as described herein.
  • the customized browser installation program above can be created by writing and compiling the installation program using the standard WISE compiler.
  • the changes required to write and compile the WISE program are readily apparent to one of skill in the art based on the operations described herein and the standard library functions provided with the WISE compiler.
  • the installation process that is part of step 312 can be done using the INSTALL SHIELD product available from Install Shield.
  • one type of modification that can be made to the application program by editing tool 110 is to customize the final product's installation process itself. This customization is in addition to changes made to the functionality of the application program or to the DLL or data files it accesses during operation.
  • the installation program can be customized to make the customized browser the end-user customer's default browser.
  • the installation program can be customized to do a so-called "silent install" in which yet another setup program of a third party for a different application product can call the self-extracting file created above and pass the customized browser installation program file destination information without the need to query the end-user customer during installation.
  • the user create a single self- extracting file as described above for installation of the customized browser program so that the user can fully check the operation of the program from an end-user customer's perspective.
  • an end-user customer will receive the browser program in the form of the single self-extracting file described above.
  • the user can internally distribute and fully test the modifications and installation process as will be experienced by end-user customers. This significantly speeds the cycle of final product development and authorization for distribution as compared to prior approaches.
  • an advantage of providing the user with the pre-compiled customized browser installation program above is that the program can use the logic and installation functions of the WISE compiler, and it is not necessary to provide the user with the WISE compiler itself.
  • the executable installation program is compressed with all files to be later installed.
  • this typical approach would not permit a user to make modifications to the browser program files on the client because the pre-compiled browser installation program would not function properly with the newly-modified files.
  • the customized browser installation program uses the configuration file mentioned above.
  • the customized browser installation program could be created using the INSTALL SHIELD program mentioned above.
  • yet other installation programs having the feature of accessing files from a source directory during installation could be used as the customized browser installation program.
  • modified code 310 is run by the user to determine if the user is satisfied with the installation process itself and the other customizations made. As mentioned above, modified code 310 will display a failed authorization message to the user when run. Otherwise, modified code 310 operates as it will in its final, authorized state (as discussed below). Thus, the user can fully test both the installation process and operation of modified code 310.
  • step 314 if the user determines modified code 310 is not acceptable, then the process returns to step 302 and starts again with the creation of a new copy of downloaded compiled code 300 to provide a new version of copied code 304.
  • Tool 110 queries the user for new changes to be made or reads a file of changes to be made that has been created by the user and is compatible with tool 110.
  • the modification process is repeated on the new version of copied code 304.
  • the install and run step 312 is repeated on the new version. This modification loop is repeated iteratively as necessary until the user accepts the changes to the code.
  • the modified code 310 is compressed and zipped into a self-extracting file using conventional zipping and compression methods.
  • this compression can be done using the publicly-available zlib compression library available, for example, at URLs www.cdrom.com/pub/infozip/zlib/ or www.winimage.com/zLibDll/.
  • the self-extracting file created as part of step 312 above during testing on client 100 is simply uploaded along with a manifest file (discussed below) created by editing tool 110.
  • the self-extracting file will be similar in type of content to the files originally downloaded to client 100 at step 200.
  • the self-extracting file will contain modified code 310, other files for setting up and installing the modified code on another computer, and customization files that are called by the modified code during operation such as skins files or channel hierarchy files containing organized and categorized URLs.
  • the self-extracting file also is accompanied by an additional manifest file generated by editing tool 110.
  • This manifest file is a list of all customizable elements associated with the downloaded compiled code and the customized values selected by the user and incorporated as modifications in modified code 310. It should be noted that the manifest file will only contain information regarding those customizable elements that the user was authorized to modify. Also, in the preferred embodiment, the manifest file is not used by client 100 and is only used during quality assurance testing by acceptance unit 122 or server 102, as may be applicable.
  • step 318 the customized code in the self-extracting file is uploaded to server 102 or preferably acceptance unit 122 as discussed above. This uploading is initiated and controlled through the user interface of tool 110 and corresponds to step 206 of FIG. 2. It should be noted that if the file is uploaded to server 102, in the preferred approach server 102 will still need to send the file to acceptance unit 122 or to another computer on which a quality assurance person can install and test the user-customized code. Server 102 itself is typically not directly used by a human operator, yet part of the preferred quality control process (as discussed below) includes human examination of the customized program's operation. FIG.
  • Copied code 304 is modified by searching for an embedded key that was placed in the original compiled code downloaded from server 102.
  • the embedded key is associated with and embedded as part of the underlying source code for each customizable element in the compiled code.
  • the embedded key is a single, common key placed in many locations throughout the entire code, but in other embodiments more than one key could be used.
  • the key is for example an embedded ASCII string as discussed further below.
  • tool 110 searches in turn for each key in copied code 304 to locate each customizable element.
  • tool 110 when the first key is located, tool 110 will have located the first customizable element 402, which has the default value that was set at compile time.
  • the modification process involves a comparison of these default values with customized values that have been selected by the user.
  • Authorized customizable list 308 is used at step 406 to create the user's customized values to generate list 408 of user customized changes.
  • List 408 is preferably generated prior to searching for the first key at step 400.
  • the manifest file mentioned above is a file, for example an ASCII file, containing list 408 and all associated values entered by the user.
  • the default value of the key is compared to the user selected value in list 408 corresponding to that element.
  • the new value selected by the user is entered at step 414 into copied code 304 by directly modifying the code, for example by changing an ASCII string embedded in the code. If the user has not changed the value, the default value is left unchanged at step 412.
  • the embedded key used to locate that customizable element is replaced with a customized flag indicator to indicate that the customizable element has been modified or the user has determined that the element is not to be changed. It should be noted that since the key has been replaced, the corresponding customizable element can no longer be modified by tool 110 since the key used to locate the element has been removed.
  • FIG. 7 illustrates an example of a customizable element in source code form before and after customization by the client computer. It should be appreciated, however, that the form of the customizable element in the compiled code on client 100 is in executable form since no source code is provided to client 100.
  • variable 700 is defined as a character type variable in, for example, C source code to have a default value 702 of "key_GOOD COMPANY". Default value 702 contains an embedded key 704 in the form of "key_”.
  • Variable 700 and its associated default value 702 are an example of a customizable element that can be searched for by tool 110 searching for key 704 and changed by the user to another value.
  • editing tool 110 searches for the text string "key_”.
  • Variable 700 corresponds, for example, to the company name to be presented on a pop-up screen at the start-up of a browser program. If the user does not change this element, or the element is not changed because the user lacked authorization to make this change, then default value 702 is left unchanged as indicated by arrow 710. However, embedded key 704 has been replaced by customized flag 706.
  • variable 700 can be modified by the user so that the customized compiled code assigns variable 700 with the initial value as customized by the user at run time.
  • Other types of customized elements in the compiled code such as those mentioned above, can be changed in a similar way.
  • variable 700, default value 702, and selected value 708, including embedded key 704 and customized flag 706, are incorporated into the compiled code in an encrypted form to prevent unauthorized modifications to the compiled code by the user or anyone else.
  • This encryption is done to the original source code prior to compiling to generate the compiled code sent to client 100 and may be done using conventional DES symmetric encryption or another standard encryption technique.
  • the encrypted form of the variable and default value are inserted into the source code, which is then compiled.
  • Tool 110 contains the unlocking encryption code necessary to decrypt values that it reads from the compiled code and to re-encrypt values to be inserted into the compiled code as user selected values.
  • embedded key 704 is stored in the compiled code in an encrypted form, but tool 1 10 searches for the encrypted form of the key in the compiled code. Note that to an unauthorized user encrypted key 704 will merely appear to be an unintelligible ASCII string.
  • FIG. 5 is a flow diagram representing a preferred process for authorizing the compiled code received by acceptance unit 122 or server 102 from the user for authorization and unlocking.
  • Customized code 500 has been uploaded from client 100.
  • customized code 500 is installed and tested for compliance to the desired requirements of the operator of server 102 or acceptance unit 122.
  • customized code 500 includes the same self-extracting file as compiled and compressed at step 312 of FIG. 3.
  • the identification 504 of the user is considered to determine the level of authorization of the user and any requirements or agreements that the user should have complied with.
  • Identification 504 may be for example the password discussed above and is sent by tool 110 as part of the compression and uploading process discussed above.
  • a quality assurance (QA) person operating acceptance unit 122 receives the self-extracting file sent from client 100 and executes the file on acceptance unit 122 to install the customized code. The QA person then runs the program on acceptance unit 122 to observe and test its appearance and operation.
  • QA quality assurance
  • the manifest list of customized values included with the uploaded customized code 500 may be separately examined by the QA person and/or an automated software program running, for example, on acceptance unit 122 to quickly determine the content of any customized text or graphics added by the user.
  • a rejection reply is sent to the user, for example, by E-mail. If the tested code is acceptable, then authorization program 120 running on either acceptance unit 122 or server 102 executes an unlocking authorization process on customized code 500.
  • authorization program 120 calculates a value for each customizable element in the customized code.
  • authorization program 120 reads the customizable elements directly from the customized executable code sent by tool 1 10 from client 100 — it is not necessary that these values be read from the separate manifest file.
  • Each value is determined for a specific customizable element, for example, by examining each character in the text string for user selected value 708, or default value 702 where the user has not modified that element, and determining an integer value corresponding to the standard ASCII numerical code for that character. These ASCII codes are then summed for all characters in the element to determine a calculated value for that element.
  • Each customizable element has a value calculated in this manner, whether or not that particular customizable element was modified by the user.
  • the customizable elements may be located by searching for the encrypted form of customized flag 706 that has been previously inserted for each such element by tool 110. It should be noted that preferably all customizable elements will be used in the calculation to determine the authorization value.
  • step 512 After calculating a value for each element, at step 512 all such integer values are added together to get a total calculated authorization value for the entire customized code 500.
  • an unlock variable in the code 500 is searched and has its value updated directly in the executable form of the customized code 500 to the authorization value to provide authorized code 516. Note that no source code is used and no recompilation is done here. In a preferred approach, the change in value of the unlock variable is the only change made to the code 500.
  • the unlock variable and the stored authorization value are also preferably encrypted as discussed above for the customizable elements.
  • FIG. 8 illustrates an example of an unlock variable in source code form before and after authorization of the compiled code by the server computer.
  • uploaded customized code 500 is in compiled binary form and no source code modification or recompilation or linking is required as part of the unlocking authorization process.
  • An unlock variable 800 is declared as a character type variable with an initial null value 802 (which corresponds to an unauthorized state).
  • unlock variable 800 is updated to store the calculated authorization value 806 determined above in step 512.
  • the unlock variable 800 and authorization value 806 are stored as encrypted ASCII strings as discussed above for customizable elements.
  • unlock variable 800 and authorization value 806 improper modification of the compiled code after review and authorization is significantly hindered. Specifically, if any of the customizable elements are changed after authorization, the authorization value will no longer be valid. During execution, the application program will again determine a calculated value for all customizable elements and compare this value to the stored authorization value to determine if improper modifications have been made, as discussed in more detail below.
  • FIG. 6 is a flow diagram representing a preferred process for client 100 to determine whether the compiled code has been altered after authorization by server 102 or acceptance unit 122.
  • downloaded authorized code 600 which corresponds to download authorized code step 208 of FIG. 2, is received by client 100 from server 102, acceptance unit 122, or even optionally another computer in communication with server 102 or acceptance unit 122.
  • Authorized code 600 is preferably sent in a compressed self-extracting file created using authorized code 516 of FIG. 5.
  • This self-extracting file can be created using the standard WISE compiler discussed above.
  • the self-extracting file is executed on client 100 to install and run authorized code 516.
  • the application program itself at run time calculates a value for each customizable element and sums these values in a similar manner as discussed above for authorization.
  • the calculated sum is compared to the previously-stored authorization value 806. If the sum and value are equal, then usage 608 is authorized and the program will no longer display the failed authorization message during operation. If the sum and value are not equal, then at step 610 the program will display an unauthorized usage message. For example, the sum and value will not be equal if the user has made a subsequent modification to a customizable element after receiving authorized code 600. This occurs because the unauthorized modified element will change the calculated value for the program, which will no longer equal the authorization value stored by the server operator.
  • a novel and unobvious method and system for customizing compiled code using an editing tool has been disclosed by way of preferred embodiments.
  • the editing tool By the use of the editing tool, a user, even one without software programming skill, can make substantial changes to the functionality of an application program by modifying its executable code without having access to the underlying source code and without going through a recompilation process.
  • the customization process above is also advantageous for the operation of a co-branding business with third parties in which the third party enters an agreement with the operator or entity in control of authorization of the customized code (the "authorizing party"). By such an agreement, the third party may be given different levels of authorization depending on the terms of the agreement and the distribution strategy of the authorizing party.
  • the third party since the third party does not need access to the source code, the speed of entering agreements with potential distributors and authorizing code for distribution is greatly increased over traditional approaches. Further, since there is a high degree of control over the types of changes that can be made by such potential distributors, the quality of the customized product distributed is higher and the time required by the authorizing party and/or distributor to troubleshoot problems during customization is significantly reduced.
  • the user does not require access to the installation source code or, for example, WISE compiler stored on the server computer in order to implement custom installations on the user's computer.
  • the installation program provided to the client is pre-compiled, but configurable by use of the configuration file discussed above for FIG. 3 to mimic a custom-generated installation program.

Abstract

L'invention concerne un procédé et un système permettant de modifier un code compilé sans accéder au code source sous-jacent à l'aide d'un outil d'édition personnalisé sur un ordinateur client (100). Le code compilé (200) est initialement téléchargé à partir d'un ordinateur serveur (102) sur l'ordinateur client (100). L'outil de personnalisation contacte l'ordinateur serveur afin de déterminer les charges autorisées (102) sur le code compilé. Un utilisateur de l'ordinateur client (100) fait fonctionner l'outil et se trouve face à des choix de personnalisation autorisée présentés par l'outil. Après que l'utilisateur a procédé aux modifications souhaitées, le code personnalisé (206) est téléchargé vers l'ordinateur serveur (102). Si le code personnalisé est conforme à l'autorisation initiale accordée par l'ordinateur serveur (102), le code personnalisé est modifié afin d'intégrer un code d'autorisation. Le code autorisé (208) est ensuite envoyé à l'ordinateur client (100) afin d'être normalement utilisé par l'utilisateur. Ce dernier n'a pas besoin d'accéder au code source pour mettre en oeuvre les changements apportés au code compilé, qui peuvent inclure des changements de fonctionnalité ainsi que la présentation et le comportement du programme d'application correspondant. Par ailleurs, l'utilisateur n'a pas besoin d'accéder au code source d'installation pour mettre en oeuvre les installations personnalisées sur l'ordinateur de l'utilisateur. Le programme d'installation est pré-compilé, mais configurable de manière qu'il imite un programme d'installation personnalisé.
PCT/US2000/022638 1999-08-30 2000-08-17 Procede et systeme permettant de modifier un code compile a l'aide d'un outil personnalise WO2001016731A1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU69140/00A AU6914000A (en) 1999-08-30 2000-08-17 Method and system for modifying compiled code using a customization tool

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US38577999A 1999-08-30 1999-08-30
US09/385,779 1999-08-30

Publications (1)

Publication Number Publication Date
WO2001016731A1 true WO2001016731A1 (fr) 2001-03-08

Family

ID=23522845

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2000/022638 WO2001016731A1 (fr) 1999-08-30 2000-08-17 Procede et systeme permettant de modifier un code compile a l'aide d'un outil personnalise

Country Status (2)

Country Link
AU (1) AU6914000A (fr)
WO (1) WO2001016731A1 (fr)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1280057A1 (fr) * 2001-07-26 2003-01-29 Universite Pierre Et Marie Curie Procédé d'adaptation dynamique d'une application informatique
US7571315B1 (en) * 1999-09-16 2009-08-04 Intel Corporation Method and apparatus to assign trust to a key
US10268455B2 (en) 2016-05-20 2019-04-23 Microsoft Technology Licensing, Llc Augmenting an original class with an augmenting class

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5644334A (en) * 1994-05-19 1997-07-01 Apple Computer, Inc. Status indicators of an improved graphical user interface

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5644334A (en) * 1994-05-19 1997-07-01 Apple Computer, Inc. Status indicators of an improved graphical user interface

Non-Patent Citations (11)

* Cited by examiner, † Cited by third party
Title
CHAKRABARTI ET AL.: "IMIS a tool for developing MIS for internet/intranet environment", IEEE, December 1998 (1998-12-01), pages 17 - 20, XP002932794 *
CHAMBERS ET AL.: "Customization: Optimizing compiler technology for SELF, a dynamically-typed object-oriented programming language", ACM, June 1989 (1989-06-01), pages 146 - 160, XP002932789 *
DEVANBU ET AL.: "CHIME: Customizable hyperlink insertion and maintenance engine for software engineering environments", ACM, May 1999 (1999-05-01), pages 473 - 482, XP002932795 *
ESPOSITO: "Browser helper objects: The browser the way you want it", MICROSOFT CO., January 1999 (1999-01-01), pages 1 - 21, XP002932793, Retrieved from the Internet <URL:http://msdn.microsoft.com/library/techart/bho.htm> *
GALLAGHER: "Browsers for E-mail", INFORMATIONWEEK LABS, May 1997 (1997-05-01), pages 63 - 64, 66, 72, 76, XP002932790 *
J. HENRY: "Customizing the web", COMPUTER RESELLER NEWS, March 1998 (1998-03-01), pages 1 - 4, XP002932791 *
M2 COMMUNICATIONS LTD.: "MICROSOFT: Leading internet content providers choose microsoft internet explorer 5", M2 PRESSWIRE, May 1999 (1999-05-01), pages 1 - 3, XP002932797 *
M2 COMMUNICATIONS LTD.: "NETSCAPE: Free client customization kit for ISPS, OEMS and internet content providers worldwide", M2 PRESSWIRE, March 1998 (1998-03-01), pages 1 - 3, XP002932798 *
M2 COMMUNICATIONS LTD.: "NOKIA: Nokia to license WAP 1.2 compliant browser as source code; Nokia WAP browser enables customers to offer customized user interface and integrate value added functionality", M2 PRESSWIRE, August 2000 (2000-08-01), pages 1 - 2, XP002932796 *
MCDONALD: "McAdee debuts customized browser", PC WORLD ONLINE, March 1999 (1999-03-01), pages 1 - 2, XP002932788 *
ROBERTS: "Take total control of internet explorer with advanced hosting interfaces", MICROSOFT CO., October 1998 (1998-10-01), pages 1 - 11, XP002932792, Retrieved from the Internet <URL:http://msdn.microsoft.com/library/periodic/period98/advhost.htm> *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7571315B1 (en) * 1999-09-16 2009-08-04 Intel Corporation Method and apparatus to assign trust to a key
USRE43934E1 (en) * 1999-09-16 2013-01-15 Intel Corporation Method and apparatus to assign trust to a key
EP1280057A1 (fr) * 2001-07-26 2003-01-29 Universite Pierre Et Marie Curie Procédé d'adaptation dynamique d'une application informatique
US10268455B2 (en) 2016-05-20 2019-04-23 Microsoft Technology Licensing, Llc Augmenting an original class with an augmenting class

Also Published As

Publication number Publication date
AU6914000A (en) 2001-03-26

Similar Documents

Publication Publication Date Title
KR100397589B1 (ko) Java 환경의 관리용이성과 유용성을 향상시키는 시스템 및 방법
US7299422B2 (en) System and method for transferring personalization information among computer systems
US6802055B2 (en) Capturing graphics primitives associated with any display object rendered to a graphical user interface
KR100290198B1 (ko) 클라이언트와비상주서버프로그램사이의통신을위한시스템
US6631512B1 (en) Method and system for database-driven, scalable web page development, deployment-download, and execution
US6677933B1 (en) Method and apparatus for operating a virtual keyboard
US5809247A (en) Method and apparatus for guided touring of internet/intranet websites
US6269460B1 (en) Dynamic enhancement of error condition handling and displayed error messages in computer operations
US6362840B1 (en) Method and system for graphic display of link actions
KR100633268B1 (ko) 소프트웨어 갱신 매니저
US6954930B2 (en) Remote validation of installation input data
US6075528A (en) Graphical user interface stream processor
US20020174417A1 (en) Defining and creating custom data fields within process management software
US20030028869A1 (en) Method and computer program product for integrating non-redistributable software applications in a customer driven installable package
US20030005159A1 (en) Method and system for generating and serving multilingual web pages
US20060010422A1 (en) Common user interface development toolkit for a system administration program
US7568196B2 (en) Initializing virtual machine that subsequently executes application
WO1999027445A1 (fr) Mecanisme d&#39;etablissement automatique de connexions entre des composants executables d&#39;une application utilisant l&#39;hypertexte
US20030079051A1 (en) Method and system for the internationalization of computer programs employing graphical user interface
US6483512B1 (en) Animation packager for an on-line book
Olsen Jr et al. Implementing interface attachments based on surface representations
WO2001016731A1 (fr) Procede et systeme permettant de modifier un code compile a l&#39;aide d&#39;un outil personnalise
US6085228A (en) Methods and apparatus for a property editing mechanism for a network computer environment
US6317877B1 (en) System tour generator
US6219069B1 (en) Method for generating animation in an on-line book

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AL AM AT AT AU AZ BA BB BG BR BY CA CH CN CR CU CZ CZ DE DE DK DK DM EE EE ES FI 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 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 MZ 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)
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP