String 检测文件(或字符串)是否已修补的算法

String 检测文件(或字符串)是否已修补的算法,string,algorithm,compare,patch,datediff,String,Algorithm,Compare,Patch,Datediff,这个问题与字符串算法有关,而不是版本控制工具或管理工具 我学习了diff算法并尝试实现了一个。也就是说,给定字符串A和字符串B,diff计算可以将A转换为B的操作序列 我想知道,如果可能的话,给定一个字符串S,以及diff算法可以产生的一系列操作,该算法会告诉我们字符串S是否是a,原始字符串a,b,修补字符串b,c,不相关的字符串。如果S只是A和B中的一个呢 实际上,我真正要做的是研究一种方法,可以判断补丁是应用于源代码级别还是二进制代码级别。我试过谷歌,但没有找到有用的东西。这很复杂,但在某种

这个问题与字符串算法有关,而不是版本控制工具或管理工具

我学习了diff算法并尝试实现了一个。也就是说,给定字符串A和字符串B,diff计算可以将A转换为B的操作序列

我想知道,如果可能的话,给定一个字符串S,以及diff算法可以产生的一系列操作,该算法会告诉我们字符串S是否是a,原始字符串a,b,修补字符串b,c,不相关的字符串。如果S只是A和B中的一个呢


实际上,我真正要做的是研究一种方法,可以判断补丁是应用于源代码级别还是二进制代码级别。我试过谷歌,但没有找到有用的东西。

这很复杂,但在某种程度上是可以做到的

本质上,您将源代码级别解析为标记,然后构建抽象语法树。完成后,您必须构建一个可以在抽象语法树之间执行操作的diff工具。举个例子,他确实这样做了

一旦完成,两个源代码之间就有了语义上的差异,然后需要定义补丁的确切组成部分

其中一些规则可以是:

1变量内容已更改

2 A如果添加了检查

底线是,区分修补程序和新功能并非易事。最可靠的方法可能是检查二进制文件的版本号,并了解版本控制模式

例如,如果应用了补丁,则只更新次要版本