这是一个有点开放式的问题,所以请耐心等待。
无论是您从网络数据包中提取的二进制有效负载,还是您从一些 EPROM 中提取的固件 blob 或直接从物理总线截获的数据 - 这里有人使用机器学习模型来学习数据表示吗?
这里的问题是我们有大量已知长度的二进制数据序列,它具有某种尚未被理解的结构(想想 IP 数据包流)。
假设我们有足够的数据,我们可以以无监督的方式推断数据表示,例如,如果我们在以太网网络上捕获了网络数据包流的 pcap,我们可以推断出以太网标头是什么,它通常后跟诸如 IP 标头之类的东西,然后是 UDP/TCP 标头,最后是一些paylond。
您可以将“分类器”替换为我们现在使用的其他机器学习模型(在这种情况下可能是 RNN-GRU/LSTM)(除了分类,它可能会生成虚假流量等)。但关键是,与常见的 ML 领域(如自然语言处理)不同,我不知道有任何模型可以用来替代手动解析。现在最流行的学习单词在序列上下文中的含义的 NLP 模型是 word2vec,但是有没有类似的东西来表示二进制序列?
PS:我在图像中使用示例只是为了演示问题,这很可能是未知架构的二进制代码、USB 请求块或其他任何东西,重点是它通常是高度结构化的、不透明的和顺序的二进制输入。
我想真正的问题是,有人使用 ML 进行逆向工程吗?如果是这样,您介意分享您的经验吗?