CN106897211A - 针对混淆脚本语言的定位方法和系统 - Google Patents

针对混淆脚本语言的定位方法和系统 Download PDF

Info

Publication number
CN106897211A
CN106897211A CN201510966901.0A CN201510966901A CN106897211A CN 106897211 A CN106897211 A CN 106897211A CN 201510966901 A CN201510966901 A CN 201510966901A CN 106897211 A CN106897211 A CN 106897211A
Authority
CN
China
Prior art keywords
masurium
replacement
code
source code
obscuring
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.)
Pending
Application number
CN201510966901.0A
Other languages
English (en)
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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201510966901.0A priority Critical patent/CN106897211A/zh
Priority to PCT/CN2016/109649 priority patent/WO2017107808A1/zh
Publication of CN106897211A publication Critical patent/CN106897211A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开一种针对混淆脚本语言的定位方法及系统,所述方法包括:解析源代码,并记录所述源代码中的元素名在所述源代码中的位置;替换所述解析后源代码中的元素名,并记录替换前的元素名与对应的替换后元素名的对应关系;将替换后的源代码生成可执行代码,并记录所述替换后元素名在所述可执行代码中的位置;获取所述可执行代码在客户端运行中发生错误的错误报告;根据所述错误报告中包含的替换后元素名以及所述替换后元素名的位置,确定所对应的替换前的元素名以及所述替换前的元素名的位置。本发明能够对错误信息中的元素进行定位,为开发人员分析并修复代码错误提供了便利。

Description

针对混淆脚本语言的定位方法和系统
技术领域
本申请涉及互联网领域,尤其涉及一种针对混淆脚本语言的定位方法和系统。
背景技术
在Web应用中,前端代码对用户和浏览器来说都是可见的。为了保护应用的脚本代码,在将产品发布给用户之前通常要对所有的脚本进行混淆,以防止具有恶意目的的其他人轻易的复用该前端代码。
以现有的JavaScript脚本语言为例,目前JavaScript脚本语言混淆的基本方法如下:
1、将所有的注释去掉,然后将所有的回车去掉,最后把多余的空格也去掉,从而将整个文件压缩为一行。
2、对所有局部变量和方法进行重命名,把所有的局部变量名和方法名都变成由1-3个字符组合的,达到进一步压缩和混淆的目的。
但是,脚本混淆在保护前端代码的同时,也增加了排查和诊断问题的难度,因为开发人员得到的错误信息中的变量和函数名是混淆后的变量/函数名称,报错位置也是混淆和压缩后的位置,以至于开发人员很难通过错误信息在源代码中定位问题,更难以分析和解决问题。
继续以上述的JavaScript脚本语言为例,当机器执行混淆后的代码之后,如果报错,则需要开发人员进行调试。因此需要通过代码美化工具进行适度的还原,使得混淆后的代码在结构上看起来更清楚一些,但因为变量名/方法名的替换过程是不可逆的,因此不可能对代码进行完全还原,更不可能找到出错信息对应的源代码中的位置,因此,开发人员仍无法根据机器报出的错误信息轻易地正确定位该错误在源文件中的位置,从而影响了分析并修复错误的效率。
发明内容
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的针对混淆脚本语言的定位方法和系统。
为解决上述问题,本申请公开一种针对混淆脚本语言的定位方法,包括:
解析源代码,并记录所述源代码中的元素名在所述源代码中的位置;
替换所述解析后源代码中的元素名,并记录替换前的元素名与对应的替换后元素名的对应关系;
将替换后的源代码生成可执行代码,并记录所述替换后元素名在所述可执行代码中的位置;
获取所述可执行代码在客户端运行中发生错误的错误报告;
根据所述错误报告中包含的替换后元素名以及所述替换后元素名的位置,确定所对应的替换前的元素名以及所述替换前的元素名的位置。
本申请还公开一种针对混淆脚本语言的定位系统,包括:
代码解析单元,用于解析源代码,并记录所述源代码中的元素名在所述源代码中的位置;
代码替换和记录单元,用于替换所述解析后源代码中的元素名,并记录替换前的元素名与对应的替换后元素名的对应关系;
代码生成和记录单元,用于将替换后的源代码生成可执行代码,并记录所述替换后元素名在所述可执行代码中的位置;
错误报告获取单元,用于获取所述可执行代码在客户端运行中发生错误的错误报告;以及
错误定位单元,用于根据所述错误报告中包含的替换后元素名以及所述替换后元素名的位置,确定所对应的替换前的元素名以及所述替换前的元素名的位置。
本申请实施例至少具有以下优点:
本申请实施例提出的针对混淆脚本语言的定位方法和系统,可以对混淆后代码中的错误信息中的元素进行定位,查找其在源代码中的位置,从而便于分析并修复错误。
附图说明
图1是本申请第一实施例的针对混淆脚本语言的定位方法的流程图。
图2是本申请第二实施例的针对混淆脚本语言的定位方法的流程图。
图3是本申请第三实施例的针对混淆脚本语言的定位方法的流程图。
图4是本申请第四实施例的针对混淆脚本语言的定位系统的方框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本申请保护的范围。
本申请的核心思想之一在于,由于现有技术在混淆脚本语言之后难以将执行时的错误定位到源代码,本申请提供的技术方案在源代码解析的步骤中记录源代码中的元素名在源代码中的位置,并记录替换前后元素名的对应关系,并在生成可执行代码的步骤中记录替换后元素名在可执行代码中的位置。当可执行代码在运行中发生错误,可以根据错误报告中包含的替换后元素名及位置定位到源代码中的元素名和位置,方便开发人员定位和分析执行中遇到的错误。
第一实施例
本申请第一实施例提出一种针对混淆脚本语言的定位方法,如图1所示为本申请第一实施例提出一种针对混淆脚本语言的定位方法的流程图。
步骤101,解析源代码,并记录所述源代码中的元素名在所述源代码中的位置;
源代码中的元素名可以包括局部变量名、全局变量名、常量名、方法名、类名等,在本实施例步骤101中,可以对元素中局部变量名和方法名在源代码中的位置进行记录。
以现有的JavaScript脚本语言为例进行说明,解析源代码可以是通过例如代码解析器将JavaScript源代码解析为抽象语法树,抽象语法树中的每一节点与JavaScript源代码中的每一元素对应。因此,在这一步骤中可以确定与每一个局部变量名和方法名对应的节点,并将该局部变量名或方法名在源代码中的位置(例如行号、列号)记录在该局部变量名或方法名对应的节点的数据结构中。
作为另一实施例,该元素名在源代码中的位置也可以记录在服务器的其他存储位置,例如新建的文档等,这一记录的位置只要能够关联到解析后该元素名对应的节点即可,并不特别限定其存储位置。
步骤102,替换所述解析后源代码中的元素名,并记录所述源代码中替换前的元素名与对应的替换后元素名的对应关系;
在这一步骤中,以JavaScript脚本语言为例,可以用最短的可用名替换解析后源代码中的元素名,同时将替换前的元素名记录在抽象语法树中对应于替换后元素名的节点的数据结构中。
此时,在抽象语法树的对应于JavaScript源文件的每一个元素名的节点的数据结构中,存储有该元素名在源代码中的位置以及替换后的元素名。由于替换后的元素名与节点相关联,这一步骤中能够建立存储在对应节点的替换后元素名与存储在该节点中的替换前元素名的对应关系。
另外,作为另一种实施例,替换后的元素名也可以被记录在服务器的其他位置,例如新建的文档等,然而这一记录的位置也必须能够关联到解析后该元素名对应的节点。
在这一步骤中,通常遵循如下替换规则:1.当前作用域不同变量混淆后的变量名不能重复,同时混淆后的名字不能是关键字;2.子作用域混淆的变量名不能与父作用域冲突;3.不能混淆全局变量名。
通过上述替换之后,所述抽象语法树的元素名被混淆,让恶意的使用者无法轻易复用上述源代码。
步骤103,将替换后的源代码生成可执行代码,并记录所述替换后元素名在所述可执行代码中的位置;
在这一步骤中,可以通过遍历抽象语法树的方式,将其节点的数据结构中存储的替换前元素名及位置、以及替换后元素名按顺序写入代码文件,形成可执行代码文件。在此过程中将会获得替换后元素名在可执行代码文件中的位置,之后可以将替换前的变元素名及其位置与替换后元素名及其位置写入元素位置对照表。
在本申请的另一优选的实施例中,元素位置对照表例如包括:
文件名,新元素名称,新元素行号,新元素列号,旧元素名称,旧元素行号,旧元素列号。
步骤104,获取所述可执行代码在客户端运行中发生错误的错误报告;
在这一步骤中,如果可执行代码在被机器执行过程中发生错误,可以通过在浏览器中安装插件,拦截该错误报告。当使用者通过浏览器访问服务器时,可以通过例如弹出对话框的方式提示使用者安装插件。当插件安装完成之后,如对应的网页运行中发生错误,该插件可以拦截错误,并上报至服务器。
步骤105,根据所述错误报告中包含的替换后元素名以及所述替换后元素名的位置,确定所对应的替换前的元素名以及所述替换前的元素名的位置。
在这一步骤中,上述错误中包含了替换后元素名及其位置,可以从上述的元素位置对照表中查找确定替换后元素名和位置对应的源代码中的替换前的元素名和元素名的位置,并将查询得到的源代码中的替换前的元素名和元素名的位置显示给开发人员,便于开发员人定位并进行问题分析。
优选地,在步骤104的获取所述可执行代码在客户端运行中发生错误的错误报告之后,以及步骤105的根据所述错误报告中包含的替换后元素名以及所述替换后元素名的位置,确定所对应的替换前的元素名以及所述替换前的元素名的位置的步骤之前,所述方法还包括:
验证所述上报至服务器的行为是否有效。
在这一步骤中,这一步骤可以通过在浏览器插件中安装验证信息,例如AccessKey,进行验证。只有验证通过,才能进行步骤105,即获取所述错误报告中包含的替换后元素名以及所述替换后元素名的位置,查找确定所对应的源代码的元素名以及所述源代码的元素的位置,从服务器中查找并显示对应的源代码的元素名以及所述源代码的元素的位置。以避免恶意的使用者窃取服务器中存储的元素位置对应表。
综上所述,本申请实施例提出的针对混淆脚本语言的定位方法,能够对错误信息中的元素进行定位,查找其在源代码中的位置,避免了现有技术中代码运行发生错误后开发人员无法轻易定位到原始解析前的代码中的位置的问题,为开发人员分析并修复错误提供了便利。
第二实施例
图2所示为本申请第二实施例提出一种针对混淆脚本语言的定位方法的流程图。如图2所示,该实施例中针对混淆脚本语言的定位方法包括如下步骤:
步骤201,解析源代码,并记录所述源代码中的元素名在所述源代码中的位置;
步骤202,替换所述解析后源代码中的元素名,并记录替换前的元素名与对应的替换后元素名的对应关系;
上述两个步骤与上一实施例中的步骤101和步骤102相同或相似,在此不再赘述。
步骤203,压缩所述解析后的源代码,并去除注释、空格和/或回车符。
在这一步骤中,为了进一步混淆解析后的源代码,可以将解析后的源代码中的注释、空格和/或回车符去掉,进一步降低代码的可读性。压缩之后的解析后源代码(例如抽象语法树)可以只有一行。
步骤203可以先于步骤202执行,也可以同时或后于步骤202执行,在此并不特别限定。
步骤204,将替换后的所述源代码生成可执行代码,并记录所述替换后元素名在所述可执行代码中的位置;
这一步骤可以与上述第一实施例的步骤103相同或相似,在此不再赘述。
值得注意的是,在一本申请的一实施例中,若压缩后的抽象语法树中回车符已被删除,所有的新元素可能位于同一行中,因此,可以显示新元素行号为1,或者元素位置对照表中可以不包括新元素行号。
步骤205,获取所述可执行代码在客户端运行中发生错误的错误报告;
步骤206,根据所述错误中包含的替换后元素名以及所述替换后元素名的位置,确定对应的替换前的源代码的元素名以及所述替换前的元素名的位置。
上述步骤205和206也可以与上一实施例中步骤104和105相同或相似,在此不再赘述。
通过上述实施例提出的针对混淆脚本语言的定位方法,能够对错误信息中的元素进行定位,查找其在源代码中的位置,避免了现有技术中代码运行发生错误后开发人员无法轻易定位到原始解析前的代码中的位置的问题,为开发人员分析并修复错误提供了便利。
第三实施例
图3所示为本申请第三实施例提出一种针对混淆脚本语言的定位方法的流程图。如图3所示,该实施例中针对混淆脚本语言的定位方法包括如下步骤:
步骤301,解析源代码,并记录所述源代码中的元素名在所述源代码中的位置;
步骤302,替换所述解析后源代码中的元素名,并记录替换前的元素名与对应的替换后元素名的对应关系;
上述两个步骤与上一实施例中的步骤101和步骤102相同或相似,在此不再赘述。
步骤303,压缩所述解析后的源代码,去除注释、空格和/或回车符。
这一步骤与第二实施例中的步骤203相同或相似,在此不再赘述。同样地,步骤303可以先于步骤302执行,也可以同时或后于步骤302执行,在此并不特别限定。
步骤304,将替换后的所述源代码生成可执行代码,并记录所述替换后元素名在所述可执行代码中的位置;
在这一步骤中,可与第一实施例步骤103相同或相似,在此不再赘述。
步骤305,记录可执行代码的版本信息;
在这一步骤中,可以将该可执行代码的版本信息记录在元素位置对照表中。生成版本信息的步骤例如可以使用现有的UUID软件来实现,然而本申请并不特别限制。
在这一实施例中,元素位置对照表例如包括:
文件名、版本号、新元素名称、新元素行号、新元素列号、旧元素名称、旧元素行号、旧元素列号。
值得注意的是,在本申请一实施例中,若压缩后的抽象语法树中回车符可能已被删除,因此所有新元素可能位于同一行中,因此,可以显示新元素行号为1,或者元素位置对照表中不包括新元素行号。
步骤306,获取所述可执行代码在客户端运行中发生错误的错误报告;以及
步骤307,根据所述错误报告中包含的替换后元素名以及所述替换后元素名的位置,确定所对应的源代码的元素名以及所述源代码的元素的位置。
这一步骤也可以与上一实施例中步骤104和105相同或相似,在此不再赘述。
优选地,在步骤306的获取所述可执行代码在客户端运行中发生错误的错误报告之后,以及步骤307的根据所述错误报告中包含的替换后元素名以及所述替换后元素名的位置,确定所对应的替换前的元素名以及所述替换前的元素名的位置的步骤之前,所述方法还包括:
验证所述上报至服务器的行为是否有效。
在这一步骤中,这一步骤可以通过在浏览器插件中安装验证信息,例如AccessKey,进行验证。只有验证通过,才能进行步骤307,即获取所述错误报告中包含的替换后元素名以及所述替换后元素名的位置,查找确定所对应的源代码的元素名以及所述源代码的元素的位置。如此可避免恶意的使用者窃取服务器中存储的元素位置对应表。
综上所述,本申请实施例提出的针对混淆脚本语言的定位方法,能够对错误信息中的元素进行定位,查找其在源代码中的位置,避免了现有技术中代码运行发生错误后开发人员无法轻易定位到原始解析前的代码中的位置的问题,为开发人员分析并修复错误提供了便利。
第四实施例
图4所示为本申请第四实施例的针对混淆脚本语言的定位系统的方框图。如图4所示,本申请实施例提出的对混淆脚本语言的定位系统100可以包括:
代码解析单元11,用于解析源代码,并记录所述源代码中的元素名在所述源代码中的位置;
代码替换和记录单元12,用于替换所述解析后源代码中的元素名,并记录替换前的元素名与对应的替换后元素名的对应关系;
代码生成和记录单元13,用于将替换后的源代码生成可执行代码,并记录所述替换后元素名在所述可执行代码中的位置;
错误报告获取单元14,用于获取所述可执行代码在客户端运行中发生错误的错误报告;以及
错误定位单元15,用于根据所述错误报告中包含的替换后元素名以及所述替换后元素名的位置,确定所对应的替换前的元素名以及所述替换前的元素名的位置。
在本申请的另一优选的实施例中,所述元素名可以包括:局部变量名和方法名。
在本申请的另一优选的实施例中,所述代码解析单元11具体用于将所述源代码解析为抽象语法树,并将所述源代码中的元素名在所述源代码中的位置记录在所述抽象语法树中对应于所述元素的节点的数据结构内。
在本申请的另一优选的实施例中,所述代码替换和记录单元12具体用于:
替换所述解析后源代码中的元素名;以及
将所述替换后元素名记录在所述抽象语法树中对应于所述替换前的元素名的节点的数据结构内。
在本申请的另一优选的实施例中,所述代码生成和记录单元13具体用于:
将替换后的源代码生成可执行代码;以及
在元素位置对照表中记录所述替换后元素名在所述可执行代码中的位置,同时将所述替换后元素名对应的替换前的元素名以及所述替换前的元素名的位置写入所述元素位置对照表。
在本申请的另一优选的实施例中,所述系统还包括:
代码压缩单元,用于压缩所述解析后的源代码,去除注释、空格和/或回车符。
在本申请的另一优选的实施例中,所述系统还包括:
代码版本信息记录单元,用于记录可执行代码的版本信息。
在本申请的另一优选的实施例中,所述代码生成和记录单元13具体用于:
在元素位置对照表中记录所述替换后元素名在所述可执行代码中的位置,同时将所述替换后元素名对应的替换前的元素名、所述替换前的元素名的位置、所述可执行代码的版本信息写入所述元素位置对照表。
在本申请的另一优选的实施例中,所述元素名的位置包括所述元素所在的行号和列号,所述元素位置对照表包括:
文件名、版本号、替换后元素名、替换后元素行号、替换后元素列号、源代码中元素名、源代码中元素行号以及源代码中元素列号。
在本申请的另一优选的实施例中,所述定位系统还包括:
验证单元,用于验证所述上报至服务器的行为是否有效。
通过上述实施例提出的针对混淆脚本语言的定位系统,能够对错误信息中的元素进行定位,查找其在源代码中的位置,避免了现有技术中代码运行发生错误后开发人员无法轻易定位到原始解析前的代码中的位置的问题,为开发人员分析并修复错误提供了便利。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
在一个典型的配置中,所述计算机设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信号存储。信号可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信号。按照本文中的界定,计算机可读介质不包括非持续性的电脑可读媒体(transitory media),如调制的数据信号和载波。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种针对混淆脚本语言的定位方法和系统,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (20)

1.一种针对混淆脚本语言的定位方法,其特征在于,包括:
解析源代码,并记录所述源代码中的元素名在所述源代码中的位置;
替换所述解析后源代码中的元素名,并记录替换前的元素名与对应的替换后元素名的对应关系;
将替换后的源代码生成可执行代码,并记录所述替换后元素名在所述可执行代码中的位置;
获取所述可执行代码在客户端运行中发生错误的错误报告;
根据所述错误报告中包含的替换后元素名以及所述替换后元素名的位置,确定所对应的替换前的元素名以及所述替换前的元素名的位置。
2.如权利要求1所述的针对混淆脚本语言的定位方法,其特征在于,所述元素名包括:局部变量名和方法名。
3.如权利要求1所述的针对混淆脚本语言的定位方法,其特征在于,所述解析源代码具体包括:
将所述源代码解析为抽象语法树;
所述记录所述源代码中的元素名在所述源代码中的位置具体包括:
将所述源代码中的元素名在所述源代码中的位置记录在所述抽象语法树中对应于所述元素名的节点的数据结构内。
4.如权利要求3所述的针对混淆脚本语言的定位方法,其特征在于,所述替换所述解析后源代码中的元素名,并记录替换前的元素名与对应的替换后元素名的对应关系的步骤具体为:
替换所述解析后源代码中的元素名;以及
将所述替换后元素名记录在所述抽象语法树中对应于所述替换前的元素名的节点的数据结构内。
5.如权利要求1所述的针对混淆脚本语言的定位方法,其特征在于,
所述将替换后的源代码生成可执行代码,并记录所述替换后元素名在所述可执行代码中的位置的步骤具体为:
将替换后的源代码生成可执行代码;
在元素位置对照表中记录所述替换后元素名在所述可执行代码中的位置,同时将所述替换后元素名对应的替换前的元素名以及所述替换前的元素名的位置写入所述元素位置对照表。
6.如权利要求1所述的针对混淆脚本语言的定位方法,其特征在于,在所述将替换后的源代码生成可执行代码,并记录所述替换后元素名在所述可执行代码中的位置之前,所述方法还包括:
压缩所述解析后的源代码,并去除注释、空格和/或回车符。
7.如权利要求1所述的针对混淆脚本语言的定位方法,其特征在于,在所述获取所述可执行代码在客户端运行中发生错误的错误报告之前,所述方法还包括:
记录可执行代码的版本信息。
8.如权利要求7所述的针对混淆脚本语言的定位方法,其特征在于,
所述将替换后的源代码生成可执行代码,并记录所述替换后元素名在所述可执行代码中的位置的步骤具体为:
在元素位置对照表中记录所述替换后元素名在所述可执行代码中的位置,同时将所述替换后元素名对应的替换前的元素名、所述替换前的元素名的位置、所述可执行代码的版本信息写入所述元素位置对照表。
9.如权利要求8所述的针对混淆脚本语言的定位方法,其特征在于,所述元素名的位置包括所述元素名所在的行号和列号,所述元素位置对照表包括:
文件名、版本号、替换后元素名、替换后元素行号、替换后元素列号、源代码中元素名、源代码中元素行号以及源代码中元素列号。
10.如权利要求1所述的针对混淆脚本语言的定位方法,其特征在于,所述根据所述错误报告中包含的替换后元素名以及所述替换后元素名的位置,确定所对应的替换前的元素名以及所述替换前的元素名的位置的步骤之前,所述方法还包括:
验证所述上报至服务器的行为是否有效。
11.一种针对混淆脚本语言的定位系统,其特征在于,包括:
代码解析单元,用于解析源代码,并记录所述源代码中的元素名在所述源代码中的位置;
代码替换和记录单元,用于替换所述解析后源代码中的元素名,并记录替换前的元素名与对应的替换后元素名的对应关系;
代码生成和记录单元,用于将替换后的源代码生成可执行代码,并记录所述替换后元素名在所述可执行代码中的位置;
错误报告获取单元,用于获取所述可执行代码在客户端运行中发生错误的错误报告;以及
错误定位单元,用于根据所述错误报告中包含的替换后元素名以及所述替换后元素名的位置,确定所对应的替换前的元素名以及所述替换前的元素名的位置。
12.如权利要求11所述的针对混淆脚本语言的定位系统,其特征在于,所述元素名包括:局部变量名和方法名。
13.如权利要求11所述的针对混淆脚本语言的定位系统,其特征在于,
所述代码解析单元具体用于:
将所述源代码解析为抽象语法树,并将所述源代码中的元素名在所述源代码中的位置记录在所述抽象语法树中对应于所述元素名的节点的数据结构内。
14.如权利要求13所述的针对混淆脚本语言的定位系统,其特征在于,所述代码替换和记录单元具体用于:
替换所述解析后源代码中的元素名;以及
将所述替换后元素名记录在所述抽象语法树中对应于所述替换前的元素名的节点的数据结构内。
15.如权利要求11所述的针对混淆脚本语言的定位系统,其特征在于,
所述代码生成和记录单元具体用于:
将替换后的源代码生成可执行代码;以及
在元素位置对照表中记录所述替换后元素名在所述可执行代码中的位置,同时将所述替换后元素名对应的替换前的元素名以及所述替换前的元素名的位置写入所述元素位置对照表。
16.如权利要求11所述的针对混淆脚本语言的定位系统,所述系统还包括:
代码压缩单元,用于压缩所述解析后的源代码,并去除注释、空格和/或回车符。
17.如权利要求11所述的针对混淆脚本语言的定位系统,所述系统还包括:
代码版本信息记录单元,用于记录可执行代码的版本信息。
18.如权利要求17所述的针对混淆脚本语言的定位系统,其特征在于,
所述代码生成和记录单元具体用于:
在元素位置对照表中记录所述替换后元素名在所述可执行代码中的位置,同时将所述替换后元素名对应的替换前的元素名、所述替换前的元素名的位置、所述可执行代码的版本信息写入所述元素位置对照表。
19.如权利要求18所述的针对混淆脚本语言的定位系统,其特征在于,所述元素名的位置包括所述元素名所在的行号和列号,所述元素位置对照表包括:
文件名、版本号、替换后元素名、替换后元素行号、替换后元素列号、源代码中元素名、源代码中元素行号以及源代码中元素列号。
20.如权利要求11所述的针对混淆脚本语言的定位系统,其特征在于,所述系统还包括:
验证单元,用于验证所述上报至服务器的行为是否有效。
CN201510966901.0A 2015-12-21 2015-12-21 针对混淆脚本语言的定位方法和系统 Pending CN106897211A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201510966901.0A CN106897211A (zh) 2015-12-21 2015-12-21 针对混淆脚本语言的定位方法和系统
PCT/CN2016/109649 WO2017107808A1 (zh) 2015-12-21 2016-12-13 针对混淆脚本语言的定位方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510966901.0A CN106897211A (zh) 2015-12-21 2015-12-21 针对混淆脚本语言的定位方法和系统

Publications (1)

Publication Number Publication Date
CN106897211A true CN106897211A (zh) 2017-06-27

Family

ID=59089150

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510966901.0A Pending CN106897211A (zh) 2015-12-21 2015-12-21 针对混淆脚本语言的定位方法和系统

Country Status (2)

Country Link
CN (1) CN106897211A (zh)
WO (1) WO2017107808A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108182358A (zh) * 2017-12-28 2018-06-19 江苏通付盾信息安全技术有限公司 文件保护方法、装置、计算设备及计算机存储介质
CN108416194A (zh) * 2018-03-08 2018-08-17 北京顶象技术有限公司 符号混淆方法及装置
CN108710787A (zh) * 2018-03-26 2018-10-26 江苏通付盾信息安全技术有限公司 代码混淆方法及装置、计算设备、计算机存储介质
CN111090582A (zh) * 2019-11-22 2020-05-01 东软集团股份有限公司 错误代码定位方法、装置、存储介质及电子设备
CN114139084A (zh) * 2021-11-01 2022-03-04 上海绊糖信息科技有限公司 Web应用跨版本错误归类方法、系统、终端及介质
WO2023159920A1 (zh) * 2022-02-25 2023-08-31 深圳前海微众银行股份有限公司 一种脚本错误的处理方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103221960A (zh) * 2012-12-10 2013-07-24 华为技术有限公司 恶意代码的检测方法及装置
CN103927164A (zh) * 2014-03-10 2014-07-16 珠海市君天电子科技有限公司 一种脚本混淆方法及系统
CN104166822A (zh) * 2013-05-20 2014-11-26 阿里巴巴集团控股有限公司 一种数据保护的方法和装置
CN104298594A (zh) * 2014-09-25 2015-01-21 南京航空航天大学 一种源代码中值计算错误的自动检测和定位方法
CN104375940A (zh) * 2014-11-28 2015-02-25 浪潮电子信息产业股份有限公司 一种对javaScript文件的调试方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105468511A (zh) * 2014-09-05 2016-04-06 阿里巴巴集团控股有限公司 网页脚本错误定位方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103221960A (zh) * 2012-12-10 2013-07-24 华为技术有限公司 恶意代码的检测方法及装置
CN104166822A (zh) * 2013-05-20 2014-11-26 阿里巴巴集团控股有限公司 一种数据保护的方法和装置
CN103927164A (zh) * 2014-03-10 2014-07-16 珠海市君天电子科技有限公司 一种脚本混淆方法及系统
CN104298594A (zh) * 2014-09-25 2015-01-21 南京航空航天大学 一种源代码中值计算错误的自动检测和定位方法
CN104375940A (zh) * 2014-11-28 2015-02-25 浪潮电子信息产业股份有限公司 一种对javaScript文件的调试方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
阮一峰: "JavaScript Source Map详解", 《HTTP://WWW.CSDN.NET/ARTICLE/2013-01-25/2813953-JAVASCRIPT-SOURCE-MAP》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108182358A (zh) * 2017-12-28 2018-06-19 江苏通付盾信息安全技术有限公司 文件保护方法、装置、计算设备及计算机存储介质
CN108182358B (zh) * 2017-12-28 2020-09-29 江苏通付盾信息安全技术有限公司 文件保护方法、装置、计算设备及计算机存储介质
CN108416194A (zh) * 2018-03-08 2018-08-17 北京顶象技术有限公司 符号混淆方法及装置
CN108416194B (zh) * 2018-03-08 2020-10-23 北京顶象技术有限公司 符号混淆方法及装置
CN108710787A (zh) * 2018-03-26 2018-10-26 江苏通付盾信息安全技术有限公司 代码混淆方法及装置、计算设备、计算机存储介质
CN108710787B (zh) * 2018-03-26 2020-09-08 江苏通付盾信息安全技术有限公司 代码混淆方法及装置、计算设备、计算机存储介质
CN111090582A (zh) * 2019-11-22 2020-05-01 东软集团股份有限公司 错误代码定位方法、装置、存储介质及电子设备
CN114139084A (zh) * 2021-11-01 2022-03-04 上海绊糖信息科技有限公司 Web应用跨版本错误归类方法、系统、终端及介质
WO2023159920A1 (zh) * 2022-02-25 2023-08-31 深圳前海微众银行股份有限公司 一种脚本错误的处理方法、装置、设备及存储介质

Also Published As

Publication number Publication date
WO2017107808A1 (zh) 2017-06-29

Similar Documents

Publication Publication Date Title
CN106897211A (zh) 针对混淆脚本语言的定位方法和系统
Raghavan Digital forensic research: current state of the art
CN109376291B (zh) 一种基于网络爬虫的网站指纹信息扫描的方法及装置
CN112560100B (zh) 数据脱敏方法及装置、计算机可读存储介质、电子设备
CN106844089B (zh) 一种用于恢复树形数据存储的方法与设备
CN106933689A (zh) 一种用于计算设备的方法和装置
CN106547782A (zh) 日志信息的获取方法及装置
CN110490773A (zh) 一种基于区块链的录屏取证方法、装置及电子设备
CN105468511A (zh) 网页脚本错误定位方法及装置
CN111625787A (zh) 一种基于ofd的电子签章多版本可追溯快速验签方法
US20220269820A1 (en) Artificial intelligence based data redaction of documents
CN103810172A (zh) 生成组件依赖关系图的方法和装置
CN106886547A (zh) 一种脚本生成方法与装置
CN107147645A (zh) 网络安全数据的获取方法及装置
CN110347573B (zh) 应用程序分析方法、装置、电子设备及计算机可读介质
CN111368227A (zh) 一种url处理方法以及装置
CN110347678B (zh) 一种金融数据的存储方法、系统、装置及设备
CN110895548B (zh) 用于处理信息的方法和装置
CN115599386A (zh) 代码生成方法、装置、设备及存储介质
KR20100123368A (ko) 악성코드 분석 방법 및 시스템
CN107103243A (zh) 漏洞的检测方法及装置
Stepien et al. Using TTCN-3 as a modeling language for web penetration testing
CN105975599A (zh) 一种监测网站的页面埋点的方法和装置
CN108241705B (zh) 一种数据插入方法及装置
CN117492756A (zh) 一种低代码平台可拖拽表单与列表的前端设计方法、装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20170627