CN111522699B - 针对vmp指令引发目标内存变化的检测方法 - Google Patents

针对vmp指令引发目标内存变化的检测方法 Download PDF

Info

Publication number
CN111522699B
CN111522699B CN202010293599.8A CN202010293599A CN111522699B CN 111522699 B CN111522699 B CN 111522699B CN 202010293599 A CN202010293599 A CN 202010293599A CN 111522699 B CN111522699 B CN 111522699B
Authority
CN
China
Prior art keywords
breakpoint
executing
vmp
sequence
instruction
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
Application number
CN202010293599.8A
Other languages
English (en)
Other versions
CN111522699A (zh
Inventor
张毅斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Sikai Data Technology Group Co ltd
Original Assignee
Hangzhou Sikai Data Technology Group Co ltd
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 Hangzhou Sikai Data Technology Group Co ltd filed Critical Hangzhou Sikai Data Technology Group Co ltd
Priority to CN202010293599.8A priority Critical patent/CN111522699B/zh
Publication of CN111522699A publication Critical patent/CN111522699A/zh
Application granted granted Critical
Publication of CN111522699B publication Critical patent/CN111522699B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2221Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test input/output devices or peripheral units
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了针对VMP指令引发目标内存变化的检测方法。涉及VMP指令引发目标内存变化技术领域。利用VMP的低频指令对于目标内存的修改,往往就发生在低频指令的断点处;借助这些低频指令的断点,就能跳过大量的VMP指令序列,从而快速逼近引发内存变化的指令,找到VMP下的内存变化点,使得在VMP下检测内存变化的效率高,可靠性好。

Description

针对VMP指令引发目标内存变化的检测方法
技术领域
本发明涉及VMP指令引发目标内存变化技术领域,尤其涉及针对VMP指令引发目标内存变化的检测方法。
背景技术
出于安全考虑,安卓应用往往把报文加密算法封放在SO(容器)中,加密算法处理完明文后,会把加密结果输出到目标内存,引发目标内存的改变。如果能够找到引发目标内存变化的指令位置,则往往能够在其附近比较容易地找到加密算法。为了检测内存变化,逆向分析者可以借助于ida(交互式反汇编器)对加密函数的多处断点下指令,并在程序运行到断点时检测目标内存的变化,最终可以把变化点定位到某个函数或者某条指令。
但是当前随着VMP(加密壳)加固技术的盛行,上述检测方法日趋困难。因为VMP把受保护的c代码编译转换成新的指令形式,不仅使得ida无法识别,还插入大量的跳转、冗余指令把指令序列规模膨胀成百上千倍。
SO(soServiceObject)是容器管理的一组对象,完成系统中的业务功能。ServiceObject完成的工作可能是一系列对数据库操作,文件系统,内存操作的集合。ServiceObject存在于容器中,部署在应用服务器中,可以被外部程序如web程序,桌面程序,或是命令行程序等调用。ServiceObject由容器进行管理,每个ServiceObject在内存中只有一份实例,在容器启动时创建,容器关闭时销毁。
事实上,加密算法仍然把加密结果写入目标内存,只是对应的c代码被转化为VMP指令,被VMP指令解析器解释执行。只要在VMP指令解析器执行每条VMP指令进行监控,仍然可以发现内存的变化点。
但是问题出现在低效的ida断点机制。因为它是基于进程间通信,每秒最多执行数十次断点。而执行一次加密函数过程中,VMP指令数量可能高达千万。此时如果对每条指令都进行断点检测,则需要耗费数十个小时,时间成本令人无法承受。
MD5即Message-DigestAlgorithm5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。
发明内容
本发明是为了解决现有在VMP下检测内存变化存在效率较低的不足,提供一种在VMP下检测内存变化的效率高的针对VMP指令引发目标内存变化的检测方法。
为了实现上述目的,本发明采用以下技术方案:
针对VMP指令引发目标内存变化的检测方法。检测方法的实现过程如下:
步骤1,设置终点为VMP的出口点;
步骤2,断点到内存基准点,计算目标内存的md5;
步骤3,依断点次序执行完所有的历史增量子序列;
步骤4,对VMP的每条指令子序列的解析出口分别设置一个断点;
步骤5,在执行到下一个断点后,取消该断点;
步骤6,当前断点是否为终点?若当前断点是终点,则执行步骤7;若当前断点不是终点,则执行步骤11;
步骤7,目标内存md5是否改变?若目标内存md5有改变,则执行步骤8;若目标内存md5没有改变,则执行步骤10;
步骤8,增量子序列长度是否为0?若增量子序列长度为0,则执行步骤9;若增量子序列长度不为0,则执行步骤13;
步骤9,找到内存变化点,然后执行步骤16;
步骤10,错误,不应该有这种情况,然后执行步骤16;
步骤11,当前断点是否为同一个断点?若当前断点是同一个断点,则执行步骤12;若当前断点不是同一个断点,则执行步骤14;
步骤12,当前断点即为内存变化察觉点,并将该内存变化察觉点设置为下一轮逼近的终点,然后执行步骤13;
步骤13,本轮次逼近结束,把增量子序列增加到历史增量子序列中去,然后返回到步骤2;
步骤14,把当前断点加入到本轮次增量子序列中去,然后执行步骤15;
步骤15,所有断点是否执行完毕?如果所有断点没有执行完毕,则返回到步骤5;如果所有断点已执行完毕,则返回到步骤13;
步骤16,算法结束。
用于解决VMP下检测内存变化的性能问题。其主要思路基于以下原理
S1、VMP加固后的函数,其VMP指令序列是固定不变的。
S2、从内存基准点开始,必然存在确定的指令子序列通往首次内存变化点。
S3、指令子序列可由多轮逼近产生的增量子序列拼接后得到。
S4、VMP有高频指令和低频指令;低频指令是指虚拟机和外部系统的交互接口指令,低频指令以外的是高频指令;例如调用不适合被虚拟化的局部算法、获取设备信息、调用libc.so库函数等;
S5、对于目标内存的修改,往往就发生在低频指令的断点处;借助这些低频指令的断点,就能跳过大量的VMP指令序列,从而快速逼近引发内存变化的指令,找到VMP下的内存变化点。
作为优选,在步骤S3中,在依断点次序执行完所有的历史增量子序列的过程中,如果前一个断点的历史增量子序列的长度大于后一个断点的历史增量子序列的长度,则后一个断点的历史增量子序列的长度需要加一个修正值a,这个修正值a等于前一个断点的历史增量子序列的长度除以后一个断点的历史增量子序列的长度。
作为优选,在步骤S5中,在取消该断点时,将该断点的位置信息写入到下一个断点的前端。
本发明能够达到如下效果:
本发明利用VMP的低频指令对于目标内存的修改,往往就发生在低频指令的断点处;借助这些低频指令的断点,就能跳过大量的VMP指令序列,从而快速逼近引发内存变化的指令,找到VMP下的内存变化点,使得在VMP下检测内存变化的效率高,可靠性好。
附图说明
图1为本发明的一种找到VMP下内存变化点的实现过程流程图。
图2为本发明的第一轮逼近示意图。
图3为本发明的第二轮逼近示意图。
图4为本发明的第三轮逼近示意图。
其中:
①为内存基准点,是计算目标内存的md5值作为检测的基准。
②为内存变化点。
③为本轮逼近的内存变化观察点,作为下一轮逼近的终点。
④为本轮逼近的终点。
具体实施方式
下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。
实施例:针对VMP指令引发目标内存变化的检测方法,参见图1-4所示,
该检测方法的实现过程如下:
步骤1,设置终点为VMP的出口点;
步骤2,断点到内存基准点,计算目标内存的md5;
步骤3,依断点次序执行完所有的历史增量子序列;
步骤4,对VMP的每条指令子序列的解析出口分别设置一个断点;
步骤5,在执行到下一个断点后,取消该断点;
步骤6,当前断点是否为终点?若当前断点是终点,则执行步骤7;若当前断点不是终点,则执行步骤11;
步骤7,目标内存md5是否改变?若目标内存md5有改变,则执行步骤8;若目标内存md5没有改变,则执行步骤10;
步骤8,增量子序列长度是否为0?若增量子序列长度为0,则执行步骤9;若增量子序列长度不为0,则执行步骤13;
步骤9,找到内存变化点,然后执行步骤16;
步骤10,错误,不应该有这种情况,然后执行步骤16;
步骤11,当前断点是否为同一个断点?若当前断点是同一个断点,则执行步骤12;若当前断点不是同一个断点,则执行步骤14;
步骤12,当前断点即为内存变化察觉点,并将该内存变化察觉点设置为下一轮逼近的终点,然后执行步骤13;
步骤13,本轮次逼近结束,把增量子序列增加到历史增量子序列中去,然后返回到步骤2;
步骤14,把当前断点加入到本轮次增量子序列中去,然后执行步骤15;
步骤15,所有断点是否执行完毕?如果所有断点没有执行完毕,则返回到步骤5;如果所有断点已执行完毕,则返回到步骤13;
步骤16,算法结束。
用于解决VMP下检测内存变化的性能问题。其主要思路基于以下原理
S1、VMP加固后的函数,其VMP指令序列是固定不变的。
S2、从内存基准点开始,必然存在确定的指令子序列通往首次内存变化点。
S3、指令子序列可由多轮逼近产生的增量子序列拼接后得到。
S4、VMP有高频指令和低频指令;低频指令是指虚拟机和外部系统的交互接口指令,低频指令以外的是高频指令;例如调用不适合被虚拟化的局部算法、获取设备信息、调用libc.so库函数等;
S5、对于目标内存的修改,往往就发生在低频指令的断点处;借助这些低频指令的断点,就能跳过大量的VMP指令序列,从而快速逼近引发内存变化的指令,找到VMP下的内存变化点。使得在VMP下检测内存变化的效率高,可靠性好。
在步骤S3中,在依断点次序执行完所有的历史增量子序列的过程中,如果前一个断点的历史增量子序列的长度大于后一个断点的历史增量子序列的长度,则后一个断点的历史增量子序列的长度需要加一个修正值a,这个修正值a等于前一个断点的历史增量子序列的长度除以后一个断点的历史增量子序列的长度。
在步骤S5中,在取消该断点时,将该断点的位置信息写入到下一个断点的前端。

Claims (3)

1.针对VMP指令引发目标内存变化的检测方法,其特征在于,检测方法的实现过程如下:
步骤1,设置终点为VMP的出口点;
步骤2,断点到内存基准点,计算目标内存的md5;
步骤3,依断点次序执行完所有的历史增量子序列;
步骤4,对VMP的每条指令子序列的解析出口分别设置一个断点;
步骤5,在执行到下一个断点后,取消该断点;
步骤6,当前断点是否为终点,若当前断点是终点,则执行步骤7;若当前断点不是终点,则执行步骤11;
步骤7,目标内存md5是否改变,若目标内存md5有改变,则执行步骤8;若目标内存md5没有改变,则执行步骤10;
步骤8,增量子序列长度是否为0,若增量子序列长度为0,则执行步骤9;若增量子序列长度不为0,则执行步骤13;
步骤9,找到内存变化点,然后执行步骤16;
步骤10,错误,不应该有这种情况,然后执行步骤16;
步骤11,当前断点是否为同一个断点,若当前断点是同一个断点,则执行步骤12;若当前断点不是同一个断点,则执行步骤14;
步骤12,当前断点即为内存变化察觉点,并将该内存变化察觉点设置为下一轮逼近的终点,然后执行步骤13;
步骤13,本轮次逼近结束,把增量子序列增加到历史增量子序列中去,然后返回到步骤2;
步骤14,把当前断点加入到本轮次增量子序列中去,然后执行步骤15;
步骤15,所有断点是否执行完毕,如果所有断点没有执行完毕,则返回到步骤5;如果所有断点已执行完毕,则返回到步骤13;
步骤16,算法结束。
2.根据权利要求1所述的针对VMP指令引发目标内存变化的检测方法,其特征在于,在步骤S3中,在依断点次序执行完所有的历史增量子序列的过程中,如果前一个断点的历史增量子序列的长度大于后一个断点的历史增量子序列的长度,则后一个断点的历史增量子序列的长度需要加一个修正值a,这个修正值a等于前一个断点的历史增量子序列的长度除以后一个断点的历史增量子序列的长度。
3.根据权利要求1所述的针对VMP指令引发目标内存变化的检测方法,其特征在于,在步骤S5中,在取消该断点时,将该断点的位置信息写入到下一个断点的前端。
CN202010293599.8A 2020-04-14 2020-04-14 针对vmp指令引发目标内存变化的检测方法 Active CN111522699B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010293599.8A CN111522699B (zh) 2020-04-14 2020-04-14 针对vmp指令引发目标内存变化的检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010293599.8A CN111522699B (zh) 2020-04-14 2020-04-14 针对vmp指令引发目标内存变化的检测方法

Publications (2)

Publication Number Publication Date
CN111522699A CN111522699A (zh) 2020-08-11
CN111522699B true CN111522699B (zh) 2023-05-23

Family

ID=71902763

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010293599.8A Active CN111522699B (zh) 2020-04-14 2020-04-14 针对vmp指令引发目标内存变化的检测方法

Country Status (1)

Country Link
CN (1) CN111522699B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6263302B1 (en) * 1999-10-29 2001-07-17 Vast Systems Technology Corporation Hardware and software co-simulation including simulating the cache of a target processor
CN102184103A (zh) * 2011-05-12 2011-09-14 电子科技大学 软件保护壳的壳特征提取方法
CN102750475A (zh) * 2012-06-07 2012-10-24 中国电子科技集团公司第三十研究所 基于虚拟机内外视图交叉比对恶意代码行为检测方法及系统
CN104679495A (zh) * 2013-12-02 2015-06-03 贝壳网际(北京)安全技术有限公司 软件识别方法及装置
CN106022130A (zh) * 2016-05-20 2016-10-12 中国科学院信息工程研究所 加固应用程序的脱壳方法及装置
CN108038376A (zh) * 2017-12-21 2018-05-15 中国人民解放军战略支援部队信息工程大学 基于混合分析的加壳程序通用脱壳方法及装置
CN108959860A (zh) * 2018-07-20 2018-12-07 厦门市美亚柏科信息股份有限公司 一种检测Android系统是否被破解和破解记录获取方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10127137B2 (en) * 2015-06-03 2018-11-13 Fengwei Zhang Methods and systems for increased debugging transparency

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6263302B1 (en) * 1999-10-29 2001-07-17 Vast Systems Technology Corporation Hardware and software co-simulation including simulating the cache of a target processor
CN102184103A (zh) * 2011-05-12 2011-09-14 电子科技大学 软件保护壳的壳特征提取方法
CN102750475A (zh) * 2012-06-07 2012-10-24 中国电子科技集团公司第三十研究所 基于虚拟机内外视图交叉比对恶意代码行为检测方法及系统
CN104679495A (zh) * 2013-12-02 2015-06-03 贝壳网际(北京)安全技术有限公司 软件识别方法及装置
CN106022130A (zh) * 2016-05-20 2016-10-12 中国科学院信息工程研究所 加固应用程序的脱壳方法及装置
CN108038376A (zh) * 2017-12-21 2018-05-15 中国人民解放军战略支援部队信息工程大学 基于混合分析的加壳程序通用脱壳方法及装置
CN108959860A (zh) * 2018-07-20 2018-12-07 厦门市美亚柏科信息股份有限公司 一种检测Android系统是否被破解和破解记录获取方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
侯留洋.一种结合混淆思想的代码虚拟化保护方法.《科学技术与工程》.2019,全文. *
看雪学苑.通过编译优化进行VMP代码还原.《httpsmp.weixin.qq.coms__biz=MjM5NTc2MDYxMw==&mid=2458284695&idx=1&sn=e51ef8fa2d77f663b9b1e2f971d8cb1f&chksm=b181421d86f6cb0bb69397c58c4f18ec567788fe0fed914b3b7b1a33798acfd3242970acf154&scene=27》.2017,全文. *

Also Published As

Publication number Publication date
CN111522699A (zh) 2020-08-11

Similar Documents

Publication Publication Date Title
US8719791B1 (en) Display of aggregated stack traces in a source code viewer
KR102025556B1 (ko) 처리 장치, 추적 유닛 및 진단 장치
US9208307B2 (en) Automatic algorithm discovery using reverse dataflow analysis
US20190155598A1 (en) Techniques for updating a file using a multi-version patch file
US8140907B2 (en) Accelerated virtual environments deployment troubleshooting based on two level file system signature
US8423970B2 (en) Method, computer program product, and hardware product for handling breakpoints in an asynchronous debug model
US8997059B2 (en) Reverse debugging
US8799716B2 (en) Heap dump occurrence detection
CN110737892B (zh) 一种针对apc注入的检测方法和相关装置
CN105183789A (zh) 基于git源代码冲突的文件合并方法及系统
CN106874022B (zh) 一种热补丁注入方法及装置
CN111538665A (zh) 程序的测试方法和装置、存储介质、电子装置
CN111522699B (zh) 针对vmp指令引发目标内存变化的检测方法
CN108762787B (zh) 软件修复方法、装置、计算机设备和存储介质
CN107766247B (zh) Bootloader的测试方法、装置及可读存储介质
JP4913353B2 (ja) ソフトウェア動作モデル化装置及びソフトウェア動作監視装置
CN109002723B (zh) 一种分段式符号执行方法
CN108959915B (zh) 一种rootkit检测方法、装置及服务器
CN113127874A (zh) 内网敏感信息处理方法及装置
CN110826066B (zh) 代码摘要的生成方法、装置和计算机存储介质
CN106293897B (zh) 组件自动化调度系统
CN115586920B (zh) 脆弱代码片段克隆检测方法、装置、电子设备及存储介质
KR102544801B1 (ko) 데이터 재사용 공격에 대한 방어 방법 및 시스템
CN115329391B (zh) 一种文本数据库的防护方法、装置、设备及介质
CN111310174A (zh) 一种基于云架构的安全计算机系统及方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Room 1001, Building 2, No. 2 Zijinghua Road, Xihu District, Hangzhou City, Zhejiang Province, 310013

Applicant after: Hangzhou Sikai Data Technology Group Co.,Ltd.

Address before: Room 1001, Building 2, No. 2 Zijinghua Road, Xihu District, Hangzhou City, Zhejiang Province, 310013

Applicant before: HANGZHOU MEGA TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant