CN100464301C - 应用程序处理方法及系统 - Google Patents
应用程序处理方法及系统 Download PDFInfo
- Publication number
- CN100464301C CN100464301C CNB2007101429226A CN200710142922A CN100464301C CN 100464301 C CN100464301 C CN 100464301C CN B2007101429226 A CNB2007101429226 A CN B2007101429226A CN 200710142922 A CN200710142922 A CN 200710142922A CN 100464301 C CN100464301 C CN 100464301C
- Authority
- CN
- China
- Prior art keywords
- information table
- object code
- binding information
- code
- element image
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
一种应用程序处理方法及系统。首先,将一应用程序编译为至少一第一目标码。由第一目标码取得至少一连结符号与至少一程序码位移,且依据连结符号与程序码位移产生一连结信息表。依据剩余的第一目标码中的执行码与常数数据产生二元影像。于程序编译的一连结阶段提供至少一第二目标码通过一函式接口与连结信息表与该二元影像进行连结。于一执行阶段通过函式接口接收一存取要求,且相应于存取要求通过函式接口依据连结信息表执行二元影像。本发明可使客户将无法轻易使用侦错或反编译工具来找到程序的进入点,且无法研究程序的撰写方式,使得应用程序的智慧财产受到保护。
Description
技术领域
本发明有关于一种应用程序处理方法,且特别有关于一种可以对于应用程序进行保护的方法。
背景技术
在撰写应用程序时,通常先编写源代码(Source Code),并将源代码进行编译(Compile),从而形成目标码(Object Code)或是库(Library)。其中,库是目标码的集合。由于一个完整应用也许会使用到多个库,因此在程序编译的连结阶段中,库间将会相互进行连结且改变位置(Relocation)以成为最终的二元影像(Binary Image)。图1显示已知的库连结。如图1所示,源代码110进行编译成为库111之后,可以与库120与130等进行连结,以成为二元影像140。
对于一些开发业者而言,其开发的应用程序通常亦是通过库的方式来释出给客户,以提供客户在开发业者所提供的装置上使用。客户可以将所有的库进行连结之后,成为影像码并烧入装置的储存单元,如只读存储器中。必须说明的是,若仅以库的方式释出给客户,客户将可以非常容易地通过侦错与反编译工具将库解析,从而得知库的相关信息。举例来说,图2显示已知存储器中二元影像中程序执行的过程。如图2所示,程序Func_b是欲保护的应用程序,且不希望客户对于程序Func_b进行任何分析与研究。已知地,当程序Func_a主体调用到程序Func_b时,可以轻易使用侦错工具找到程序Func_b的进入点,进而研究程序Func_b的撰写方式。
因此,在已知的环境下,客户非常容易将相应应用程序的库使用在非开发业者所提供的装置或平台上,使得应用程序的智慧财产受到损害。
发明内容
有鉴于此,本发明提供应用程序处理方法及系统。
本发明提供一种应用程序处理方法。首先,将一应用程序编译为至少一第一目标码。由第一目标码取出一连结信息,使得剩余的第一目标码成为二元影像。于程序编译的一连结阶段,提供至少一第二目标码通过一函式接口与连结信息和二元影像进行连结、或于一执行阶段,通过函式接口接收一存取要求,且相应于存取要求通过函式接口依据连结信息执行二元影像。
本发明另提供一种应用程序处理方法。首先,将一应用程序编译为至少一第一目标码。由第一目标码取得至少一连结符号与至少一程序码位移,且依据连结符号与程序码位移产生一连结信息表。依据剩余的第一目标码中的执行码与常数数据产生二元影像。封装该连结信息表与该二元影像,且提供对应该封装的一函式接口,其中该第二目标码可通过该函式接口连结已封装的该连结信息表与该二元影像。于程序编译的一连结阶段,至少一第二目标码通过一函式接口与连结信息表与二元影像进行连结。
本发明另提供一种应用程序处理方法,包括下列步骤:将相应于一应用程序的一连结信息表与二元影像封装于一安全模块中;通过一函式接口接收一存取要求。相应于存取要求,依据该连结信息表以执行该二元影像,以实现通过函式接口存取该安全模块中的该连结信息表与该二元影像。其中,应用程序被编译为至少一第一目标码。由第一目标码取得至少一连结符号与至少一程序码位移,且依据连结符号与程序码位移产生连结信息表。依据剩余的第一目标码中的执行码与常数数据产生二元影像。
本发明另提供一种应用程序处理系统,包括一安全模块与一函式接口。安全模块包括相应一应用程序的一连结信息表与二元影像。其中应用程序被编译为至少一第一目标码。由第一目标码取得至少一连结符号与至少一程序码位移,且依据连结符号与程序码位移产生连结信息表。依据剩余的该第一目标码中的执行码与常数数据产生二元影像。于程序编译的一连结阶段,至少一第二目标码通过函式接口与该安全模块中的连结信息表与二元影像进行连结。
本发明另提供一种应用程序处理系统,包括一安全模块与一函式接口。安全模块包括相应一应用程序的一连结信息表与二元影像。其中应用程序被编译为至少一第一目标码。由第一目标码取得至少一连结符号与至少一程序码位移,且依据连结符号与程序码位移产生连结信息表。依据剩余的该第一目标码中的执行码与常数数据产生二元影像。于一执行阶段,通过函式接口接收一存取要求,且相应于存取要求,依据该连结信息表以执行该二元影像,以实现通过函式接口存取连结信息表与二元影像。
本发明上述方法可以通过程序码方式收录于实体介质中。当程序码被机器载入且执行时,机器变成用以实行本发明的装置。
本发明所述的应用程序处理方法及系统,可使客户将无法轻易使用侦错或反编译工具来找到程序的进入点,且无法研究程序的撰写方式,使得应用程序的智慧财产受到保护。
附图说明
图1为一示意图是显示已知的库连结。
图2为一示意图是显示已知存储器中二元影像中程序执行的过程。
图3为一示意图是显示依据本发明实施例的应用程序处理系统。
图4为一流程图是显示依据本发明实施例的应用程序处理方法。
图5为一流程图是显示依据本发明实施例的应用程序连结方法。
图6为一示意图是显示依据本发明实施例的库连结。
图7为一流程图是显示依据本发明实施例的应用程序存取方法。
图8为一流程图是显示依据本发明实施例的保护演算法的操作。
图9为一示意图是显示依据本发明实施例的应用程序存取。
图10为一示意图是显示依据本发明实施例的存储器中二元影像中程序执行的过程。
具体实施方式
为使本发明的上述目的、特征和优点能更明显易懂,下文特举实施例,并配合所附图示,详细说明如下。
图3显示依据本发明实施例的应用程序处理系统。
依据本发明实施例的应用程序处理系统300包括一函式接口310与一安全模块320。函式接口310为一接口,用以提供其他目标码/库与安全模块320于程序编译的连结阶段进行连结,并于执行阶段提供相应安全模块320的存取。安全模块320包括一保护演算法321、一连结信息表322与一二元影像(BinaryImage)323。保护演算法321用以决定安全模块320内相关的操作逻辑,其细节将于后说明。连结信息表322与二元影像323相应于包括源代码的一应用程序。连结信息表322中记录相应二元影像323的连结信息。二元影像323中记录相应应用程序编译后的执行码等数据。依据连结信息表322中记录的连结信息方可正确得知二元影像323中相关符号(Symbol)的地址,并正确执行。连结信息表322与二元影像323的产生方式将于图4中说明。
图4显示依据本发明实施例的应用程序处理方法。
如步骤S410,将应用程序编译为至少一目标码/库。如步骤S420,由目标码/库中取出所有或一部分的连结信息,如连结符号与程序码位移,且依据连结信息产生连结信息表322。在一些实施例中,目标码可以是一可执行可连接格式(ELF,Executableand Linkable Format)文件,且连结信息表可以包括可执行可连接格式文件的一符号表。如步骤S430,依据剩余的目标码/库中的执行码与常数数据产生二元影像323。如步骤S440,将连结信息表进行加密。必须说明的是,在此实施例中,连结信息表进行加密。然而,在一些实施例中,可以依据不同需求决定是否对于连结信息表进行加密。如步骤S450,将保护演算法321、连结信息表322与二元影像323封装于安全模块320中,并如步骤S460,提供函式接口310,以提供其他目标码/库与安全模块320于程序编译的连结阶段进行连结,并于执行阶段提供相应安全模块320的存取。值得注意的是,开发业者可以将函式接口310与安全模块320提供给客户。对于客户而言,安全模块320是一个黑盒子,客户无法得知安全模块320内部的相关信息。
图5显示依据本发明实施例的应用程序连结方法。图6显示依据本发明实施例的库连结。请同时参考图5与图6。在程序编译的连结阶段时,如步骤S510,目标码/库610与620与函式接口310进行连结,以通过函式接口310与安全模块320进行连结。之后,将相应其他目标码/库的影像文件写入存储器,且如步骤S520,将函式接口310与安全模块320写入存储器中的一特定位置,以成为最终二元影像630。
图7显示依据本发明实施例的应用程序存取方法。图9显示依据本发明实施例的应用程序存取。请同时参考图7与图9。
如步骤S710,于执行阶段通过函式接口310接收一存取要求。注意的是,存取要求可以包括相应应用程序/二元影像323的至少一符号。相应于存取要求,如步骤S720,将连结信息表322解密。值得注意的是,在此实施例中由于连结信息表322在建立时经过加密处理,因此需要进行解密的动作。在一些实施例中,若连结信息表322在建立时并未经过加密处理,则步骤S720的解密动作可以省略。如步骤S730,保护演算法321依据连结信息表322执行二元影像323。图8显示依据本发明实施例的保护演算法的操作。如步骤S731,依据相应应用程序/二元影像323的符号由连结信息表322中检索相应的一地址。如步骤S732,将目前程序计数器的值存入(Push)堆栈中。如步骤S733,将程序计数器的值改变为相应二元影像323的位移。必须提醒的是,若二元影像323在存储器中具有一基本地址时,则相应二元影像323的位移必须加上基本地址。如步骤S734,执行二元影像323,且得到相应的执行结果。之后,如步骤S735,由堆栈中取出(Pop)原先程序计数器的值。当执行结束之后,如步骤S740,通过函式接口310回传执行结果。
相较于图2,图10显示依据本发明实施例的存储器中二元影像中程序执行的过程。如图10所示,程序Func_b是欲保护的应用程序,且不希望客户对于程序Func_b进行任何分析与研究。当程序Func_a主体需要使用到Func_b时,其可以利用“Func_b”作为参数呼叫“getFuncPtrbyAlg()”函式。“getFuncPtrbyAlg()”函式便会致使保护演算法321由连结信息表322中检索出相应程序Func_b的位移与地址,并至相应的地址进行执行。通过函式接口310与将连结信息分离的二元影像323,客户将无法轻易使用侦错或反编译工具来找到程序Func_b的进入点,且无法研究程序Func_b的撰写方式。
本发明的方法,或特定型态或其部分,可以以程序码的型态包含于实体介质,如软盘、光盘片、硬盘、或是任何其他机器可读取(如计算机可读取)储存介质,其中,当程序码被机器,如计算机载入且执行时,此机器变成用以实现本发明的装置。本发明的方法与装置也可以以程序码型态通过一些传送介质,如电线或电缆、光纤、或是任何传输型态进行传送,其中,当程序码被机器,如计算机接收、载入且执行时,此机器变成用以实现本发明的装置。当在一般用途处理器操作时,程序码结合处理器提供一操作类似于专用逻辑电路的独特装置。
以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。
Claims (10)
1.一种应用程序处理方法,其特征在于,包括下列步骤:
取得至少一第一目标码与至少一第二目标码;
由该第一目标码取得至少一连结符号与至少一程序码位移,且依据该连结符号与该程序码位移产生一连结信息表;
依据剩余的该第一目标码中的执行码与常数数据产生二元影像;以及
封装该连结信息表与该二元影像,且提供对应该封装的一函式接口,其中该第二目标码可通过该函式接口连结已封装的该连结信息表与该二元影像。
2.根据权利要求1所述的应用程序处理方法,其特征在于,更包括将该连结信息表进行加密,并通过该函式接口进行下列步骤:
将该连结信息表进行解密;以及
依据该连结信息表以执行该二元影像。
3.根据权利要求1所述的应用程序处理方法,其特征在于,该第一目标码为一可执行可连接格式文件,且该连结信息表更包括该可执行可连接格式文件的一符号表。
4.一种应用程序处理系统,其特征在于,包括:
一安全模块,包括相应至少一第一目标码的一连结信息表与二元影像,其中由该第一目标码取得至少一连结符号与至少一程序码位移,且依据该连结符号与该程序码位移产生该连结信息表,及依据剩余的该第一目标码中的执行码与常数数据产生该二元影像;以及
一函式接口,用以供至少一第二目标码与该安全模块中的该连结信息表与该二元影像进行连结。
5.根据权利要求4所述的应用程序处理系统,其特征在于,该函式接口接收一存取要求,且相应于该存取要求通过该函式接口存取该安全模块中的该连结信息表与该二元影像,其中该函式接口依据该连结信息表以执行该二元影像,该安全模块更包括一保护演算法,用以由该连结信息表检索相应该二元影像的一地址,且依据该地址致使该二元影像被执行。
6.根据权利要求4所述的应用程序处理系统,其特征在于,该连结信息表更进行加密,该函式接口解密该连结信息表,且依据该连结信息表以执行该二元影像。
7.一种应用程序处理方法,其特征在于,包括下列步骤:
将相应于一应用程序的一连结信息表与二元影像封装于一安全模块中;
通过一函式接口接收一存取要求;以及
相应于该存取要求,依据该连结信息表以执行该二元影像,以实现通过该函式接口存取该安全模块中的该连结信息表与该二元影像;
其中,该应用程序被编译为至少一第一目标码,由该第一目标码取得至少一连结符号与至少一程序码位移,且依据该连结符号与该程序码位移产生该连结信息表,及依据剩余的该第一目标码中的执行码与常数数据产生该二元影像。
8.根据权利要求7所述的应用程序处理方法,其特征在于,该第一目标码为一可执行可连接格式文件,且该连结信息表更包括该可执行可连接格式文件的一符号表。
9.一种应用程序处理系统,其特征在于,包括:
一安全模块,包括相应于一应用程序的一连结信息表与二元影像,其中该应用程序被编译为至少一第一目标码,由该第一目标码取得至少一连结符号与至少一程序码位移,且依据该连结符号与该程序码位移产生该连结信息表,及依据剩余的该第一目标码中的执行码与常数数据产生该二元影像;以及一函式接口,用于接收一存取要求,且相应于该存取要求,依据该连结信息表以执行该二元影像,以实现通过该函式接口存取该连结信息表与该二元影像。
10.一种应用程序处理方法,其特征在于,包括下列步骤:
取得至少一第一目标码;
由该第一目标码取出一连结信息,使得剩余的该第一目标码成为二元影像;以及
于程序编译的一连结阶段提供至少一第二目标码通过一函式接口与该连结信息和该二元影像进行连结、或于一执行阶段通过该函式接口接收一存取要求,且相应于该存取要求通过该函式接口依据该连结信息执行该二元影像。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101429226A CN100464301C (zh) | 2007-08-09 | 2007-08-09 | 应用程序处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101429226A CN100464301C (zh) | 2007-08-09 | 2007-08-09 | 应用程序处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101089816A CN101089816A (zh) | 2007-12-19 |
CN100464301C true CN100464301C (zh) | 2009-02-25 |
Family
ID=38943183
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007101429226A Active CN100464301C (zh) | 2007-08-09 | 2007-08-09 | 应用程序处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100464301C (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102254125A (zh) * | 2010-05-21 | 2011-11-23 | 腾讯科技(北京)有限公司 | Elf文件加密方法及系统 |
CN102184356B (zh) * | 2011-04-21 | 2014-04-02 | 奇智软件(北京)有限公司 | 利用沙箱技术进行防御的方法、装置及安全浏览器 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030097577A1 (en) * | 2001-11-20 | 2003-05-22 | Rainbow Technologies, Inc. | Software protection method utilizing hidden application code in a protection dynamic link library object |
US20060031686A1 (en) * | 1999-09-03 | 2006-02-09 | Purdue Research Foundation | Method and system for tamperproofing software |
WO2006035227A2 (en) * | 2004-09-30 | 2006-04-06 | Ttpcom Limited | Source code protection |
CN1971519A (zh) * | 2005-11-24 | 2007-05-30 | 富士施乐株式会社 | 用于生成受保护可执行程序的设备、存储介质和方法 |
CN1987715A (zh) * | 2005-12-19 | 2007-06-27 | 普天信息技术研究院 | 一种软件保护的方法 |
-
2007
- 2007-08-09 CN CNB2007101429226A patent/CN100464301C/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060031686A1 (en) * | 1999-09-03 | 2006-02-09 | Purdue Research Foundation | Method and system for tamperproofing software |
US20030097577A1 (en) * | 2001-11-20 | 2003-05-22 | Rainbow Technologies, Inc. | Software protection method utilizing hidden application code in a protection dynamic link library object |
WO2006035227A2 (en) * | 2004-09-30 | 2006-04-06 | Ttpcom Limited | Source code protection |
CN1971519A (zh) * | 2005-11-24 | 2007-05-30 | 富士施乐株式会社 | 用于生成受保护可执行程序的设备、存储介质和方法 |
CN1987715A (zh) * | 2005-12-19 | 2007-06-27 | 普天信息技术研究院 | 一种软件保护的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101089816A (zh) | 2007-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6815385B2 (ja) | アプリケーションのコード難読化のためのシステムおよび方法 | |
CN103559449B (zh) | 一种代码改动的检测方法及装置 | |
CN105683990B (zh) | 用于保护动态库的方法和装置 | |
US20180260199A1 (en) | Method and apparatus for intermediate representation of applications | |
CN103413075B (zh) | 一种通过虚拟机保护java可执行程序的方法及设备 | |
EP3188063A1 (en) | A build system | |
CN104881611A (zh) | 保护软件产品中的敏感数据的方法和装置 | |
US20130111451A1 (en) | Program Log Record Optimization | |
CN104462990B (zh) | 字符串加解密方法和装置 | |
CN102982130A (zh) | 一种nosql与rdbms的数据库同步方法和系统 | |
CN111914225B (zh) | 一种源代码保护系统及源代码加密方法 | |
CN101853357A (zh) | 软件保护方法 | |
CN101968834A (zh) | 电子产品的防抄板加密方法和装置 | |
CN103914637A (zh) | 一种安卓平台的可执行程序加密方法 | |
US9201761B1 (en) | Debugging data format conversion | |
CN106598828B (zh) | 一种源代码中的无效类确定方法及装置 | |
CN103500586A (zh) | 检测移动存储装置容量的方法及设备 | |
CN101535969A (zh) | 使用内核模式重定向来改变代码执行路径 | |
CN101416143A (zh) | 基于许可的用户界面变形 | |
CN109740314A (zh) | 一种swf混淆加密的方法 | |
CN109271789A (zh) | 恶意进程检测方法、装置、电子设备及存储介质 | |
CN102779029A (zh) | 一种对JavaScript代码加扰的方法及设备 | |
CN105453104B (zh) | 系统保护用文件安全管理装置和管理方法 | |
CN110633073B (zh) | 基于Il2cpp编译的Unity代码混淆的方法 | |
CN100464301C (zh) | 应用程序处理方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |