CN103425910A - 程序中函数是否被非法调用的检测方法 - Google Patents
程序中函数是否被非法调用的检测方法 Download PDFInfo
- Publication number
- CN103425910A CN103425910A CN2013103283205A CN201310328320A CN103425910A CN 103425910 A CN103425910 A CN 103425910A CN 2013103283205 A CN2013103283205 A CN 2013103283205A CN 201310328320 A CN201310328320 A CN 201310328320A CN 103425910 A CN103425910 A CN 103425910A
- Authority
- CN
- China
- Prior art keywords
- function
- machine code
- function result
- character string
- user
- 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.)
- Granted
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明提供一种程序中函数是否被非法调用的检测方法,在算法内部嵌入机器码算法,使每次调用该函数时计算的函数结果中携带本机机器码的哈希值,使用方在使用该函数结果时,即可由该哈希值判断此次调用是否是授权调用。本发明方法利用机器码认证的原理,从外部进行保护,在使用算法时,将机器码哈希字符串隐藏在函数结果中,使用函数结果时先验证函数结果中的机器码信息进行授权判断,从而有效防止算法被第三方未授权程序调用。
Description
技术领域
本发明涉及一种程序安全保护方法,特别涉及一种程序中函数是否被非法调用的检测方法。
背景技术
在程序安全领域中为了保护某个函数或算法不被逆向和非法调用的时候,一般可以采取外部非法程序的检测、非法挂入程序和模块的检测,以及采用将内部算法进行混淆变形、虚拟化、填充垃圾虚拟指令等方法进行防御,但是,当外部检测失败的时候,或者攻击者不通过还原被混淆的代码这种方法,攻击者只关心计算的结果,而不关心函数算法的计算过程,从而直接调用被保护的算法,则上述这些保护手段就失效了。
发明内容
本发明要解决的技术问题,在于提供一种程序中函数是否被非法调用的检测方法,防止程序中函数被非法调用。
本发明是这样实现的:一种程序中函数是否被非法调用的检测方法,在算法内部嵌入机器码算法,使每次调用该函数时计算的函数结果中携带本机机器码的哈希值,使用方在使用该函数结果时,即可由该哈希值判断此次调用是否是授权调用。
具体包括
步骤10、宿主程序获取本机的机器码信息并将机器码信息转换为哈希字符串;
步骤20、宿主程序调用被保护函数时,将机器码哈希字符串隐藏在函数结果中;
步骤30、在使用方需要使用函数结果的时候,宿主程序将函数结果提交给使用方;
步骤40、使用方在使用函数结果时,先分离出隐藏在函数结果中的机器码哈希字符串;
步骤50、使用方将该分离出的机器码哈希字符串与预先保存的授权的机器码哈希存储表进行比较判断,如果该分离出的机器码哈希字符串存在于所述授权的机器码哈希存储表中,则认为是合法调用,否则为非法调用。
所述步骤20是通过数字水印技术或加密技术将机器码哈希字符串隐藏在函数结果中。
进一步的,本发明所述的使用方为服务端或者应用程序。
进一步的,本发明所述的使用方在使用函数结果时,同时还记录调用者,并统计该调用者的调用次数,每次的调用时间。
本发明具有如下优点:本发明方法从外部进行保护,在使用算法时,将机器码哈希字符串隐藏在函数结果中,使用函数结果时先验证函数结果中的机器码信息进行授权判断,从而有效防止算法被第三方未授权程序调用。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为本发明方法执行流程图。
具体实施方式
如图1所示,本发明的程序中函数是否被非法调用的检测方法,是利用机器码认证的原理,在函数算法内部嵌入机器码算法,使每次调用该函数时计算的函数结果中携带本机机器码的哈希值,使用方在使用该函数结果时,即可由该哈希值判断此次调用是否是授权调用。
具体包括
步骤10、宿主程序获取本机的机器码信息并将机器码信息转换为哈希字符串;
步骤20、宿主程序调用被保护函数时,将机器码哈希字符串隐藏在函数结果中;具体可以通过数字水印技术或加密技术将机器码哈希字符串隐藏在函数结果中。
步骤30、在使用方需要使用函数结果的时候,宿主程序将函数结果提交给使用方;所述使用方为服务端或者应用程序,当然不限于此。
步骤40、使用方在使用函数结果时,先分离出隐藏在函数结果中的机器码哈希字符串;
步骤50、使用方将该分离出的机器码哈希字符串与预先保存的授权的机器码哈希存储表进行比较判断,如果该分离出的机器码哈希字符串存在于所述授权的机器码哈希存储表中,则认为是合法调用,否则为非法调用。
另外,使用方在使用函数结果时,同时还记录调用者,并统计该调用者的调用次数,每次的调用时间,以便使用者查看。
本发明方法从外部进行保护,在使用算法时,将机器码哈希字符串隐藏在函数结果中,使用函数结果时先验证函数结果中的机器码信息进行授权判断,从而有效防止算法被第三方未授权程序调用。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
Claims (5)
1.一种程序中函数是否被非法调用的检测方法,其特征在于:在算法内部嵌入机器码算法,使每次调用该函数时计算的函数结果中携带本机机器码的哈希值,使用方在使用该函数结果时,即可由该哈希值判断此次调用是否是授权调用。
2.根据权利要求1所述的程序中函数是否被非法调用的检测方法,其特征在于:具体包括
步骤10、宿主程序获取本机的机器码信息并将机器码信息转换为哈希字符串;
步骤20、宿主程序调用被保护函数时,将机器码哈希字符串隐藏在函数结果中;
步骤30、在使用方需要使用函数结果的时候,宿主程序将函数结果提交给使用方;
步骤40、使用方在使用函数结果时,先分离出隐藏在函数结果中的机器码哈希字符串;
步骤50、使用方将该分离出的机器码哈希字符串与预先保存的授权的机器码哈希存储表进行比较判断,如果该分离出的机器码哈希字符串存在于所述授权的机器码哈希存储表中,则认为是合法调用,否则为非法调用。
3.根据权利要求2所述的程序中函数是否被非法调用的检测方法,其特征在于:所述步骤20是通过数字水印技术或加密技术将机器码哈希字符串隐藏在函数结果中。
4.根据权利要求2所述的程序中函数是否被非法调用的检测方法,其特征在于:所述使用方为服务端或者应用程序。
5.根据权利要求1或2所述的程序中函数是否被非法调用的检测方法,其特征在于:所述使用方在使用函数结果时,同时还记录调用者,并统计该调用者的调用次数,每次的调用时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310328320.5A CN103425910B (zh) | 2013-07-31 | 2013-07-31 | 程序中函数是否被非法调用的检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310328320.5A CN103425910B (zh) | 2013-07-31 | 2013-07-31 | 程序中函数是否被非法调用的检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103425910A true CN103425910A (zh) | 2013-12-04 |
CN103425910B CN103425910B (zh) | 2016-09-07 |
Family
ID=49650637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310328320.5A Active CN103425910B (zh) | 2013-07-31 | 2013-07-31 | 程序中函数是否被非法调用的检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103425910B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103916395A (zh) * | 2014-04-09 | 2014-07-09 | 北京京东尚科信息技术有限公司 | 一种服务调用方法、设备及系统 |
CN104504312A (zh) * | 2014-12-23 | 2015-04-08 | 北京深思数盾科技有限公司 | 软件反调试保护方法 |
CN106650355A (zh) * | 2016-12-08 | 2017-05-10 | 武汉斗鱼网络科技有限公司 | 一种保护函数调用的方法及装置 |
CN110198299A (zh) * | 2019-03-07 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种入侵检测方法和装置 |
CN110968870A (zh) * | 2019-11-28 | 2020-04-07 | 广发证券股份有限公司 | 一种软件运行时安全的检测方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101149775A (zh) * | 2006-09-20 | 2008-03-26 | 展讯通信(上海)有限公司 | 实现硬件和软件绑定的加密和解密方法 |
CN101414263A (zh) * | 2007-10-17 | 2009-04-22 | 鸿富锦精密工业(深圳)有限公司 | 存储介质、软件安装方法及防盗版模块 |
CN101661545A (zh) * | 2009-09-22 | 2010-03-03 | 江汉大学 | 可卸载再安装的软件防盗版方法及装置 |
CN102609650A (zh) * | 2012-02-06 | 2012-07-25 | 上海易罗信息科技有限公司 | 实现电子设备中软件加密下载的系统及方法 |
-
2013
- 2013-07-31 CN CN201310328320.5A patent/CN103425910B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101149775A (zh) * | 2006-09-20 | 2008-03-26 | 展讯通信(上海)有限公司 | 实现硬件和软件绑定的加密和解密方法 |
CN101414263A (zh) * | 2007-10-17 | 2009-04-22 | 鸿富锦精密工业(深圳)有限公司 | 存储介质、软件安装方法及防盗版模块 |
CN101661545A (zh) * | 2009-09-22 | 2010-03-03 | 江汉大学 | 可卸载再安装的软件防盗版方法及装置 |
CN102609650A (zh) * | 2012-02-06 | 2012-07-25 | 上海易罗信息科技有限公司 | 实现电子设备中软件加密下载的系统及方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103916395A (zh) * | 2014-04-09 | 2014-07-09 | 北京京东尚科信息技术有限公司 | 一种服务调用方法、设备及系统 |
CN103916395B (zh) * | 2014-04-09 | 2017-04-19 | 北京京东尚科信息技术有限公司 | 一种服务调用方法、设备及系统 |
CN104504312A (zh) * | 2014-12-23 | 2015-04-08 | 北京深思数盾科技有限公司 | 软件反调试保护方法 |
CN106650355A (zh) * | 2016-12-08 | 2017-05-10 | 武汉斗鱼网络科技有限公司 | 一种保护函数调用的方法及装置 |
CN106650355B (zh) * | 2016-12-08 | 2020-04-10 | 武汉斗鱼网络科技有限公司 | 一种保护函数调用的方法及装置 |
CN110198299A (zh) * | 2019-03-07 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种入侵检测方法和装置 |
CN110198299B (zh) * | 2019-03-07 | 2021-08-17 | 腾讯科技(深圳)有限公司 | 一种入侵检测方法和装置 |
CN110968870A (zh) * | 2019-11-28 | 2020-04-07 | 广发证券股份有限公司 | 一种软件运行时安全的检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103425910B (zh) | 2016-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101700731B1 (ko) | 애플리케이션에 접근하기 위한 방법 및 장치 | |
CN103425910A (zh) | 程序中函数是否被非法调用的检测方法 | |
KR101754308B1 (ko) | 모바일 민감 데이터 관리 방법 및 이를 수행하는 위탁 서버 | |
CN105260663A (zh) | 一种基于TrustZone技术的安全存储服务系统及方法 | |
CN100495421C (zh) | 一种基于usb设备的认证保护方法 | |
CN101901313A (zh) | 一种Linux文件保护系统及方法 | |
CN103150524B (zh) | 一种安全存储器芯片、系统及其认证方法 | |
KR101756692B1 (ko) | 다이나믹 보안모듈 단말장치 및 그 구동방법 | |
CN107092816B (zh) | 一种Android应用程序加固方法 | |
CN103268435B (zh) | 内网许可生成方法及系统、内网许可保护方法及系统 | |
CN108334754B (zh) | 嵌入式系统程序的加密解密方法及系统 | |
CN105320535A (zh) | 一种安装包的校验方法、客户端、服务器及系统 | |
CN104794388A (zh) | 应用程序存取保护方法及应用程序存取保护装置 | |
CN102236756A (zh) | 一种基于TCM可信密码模块和USBKey的文件加密方法 | |
CN110245464B (zh) | 保护文件的方法和装置 | |
CN105243311A (zh) | 一种指纹信息的安全调用方法、装置及移动终端 | |
KR101834808B1 (ko) | 파일 암호화 방지 장치 및 방법 | |
JP2009505196A (ja) | コンピューティング・デバイスにおける安全性を改善するための保護されたソフトウェア識別子 | |
CN104978542B (zh) | 安全存储数据和访问数据的方法及系统 | |
Kim et al. | Shadowauth: Backward-compatible automatic can authentication for legacy ecus | |
CN103279705A (zh) | 具有安全启动功能的芯片的校验方法及校验装置 | |
CN104504310A (zh) | 基于壳技术的软件保护方法和装置 | |
CN106127034B (zh) | 一种防止系统被恶意关闭的方法、装置及电子设备 | |
CN112613033A (zh) | 一种可执行文件安全调用的方法及装置 | |
CN102592101A (zh) | 一种led显示管理软件安全的方法与系统 |
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 |