是否可以使用 AI 对软件进行逆向工程?

人工智能 机器学习 深度学习 应用
2021-11-07 02:13:17

我在想这样的事情:

  1. 构建一个程序(称为这个假用户),该程序使用刺激和响应根据另一个程序(称为这个目标)的使用来生成大量数据。例如,如果目标是扫雷,假用户会玩 carl sagan 多次游戏,并尝试在各种不同的情况下点击所有按钮,等等......

  2. 运行一个机器学习程序(称之为复印机),旨在进化出与目标尽可能相似的代码。

  3. kablam,你有一个“足够好”的目标开源副本。

这可能吗?

是否有其他方法可以达到相同的结果,即获得原始目标程序的“足够好”的开源副本?

2个回答

值得注意的是,您描述的场景或多或少不仅是可行的,而且已经被证明(链接中的详细解释和引人入胜的视频)

但是,副本的保真度目前相当有限: 在此处输入图像描述

因此,就目前而言,您的副本质量将非常低。但是,这条规则有一个很大的例外:如果您要复制的软件本身是基于机器学习的,那么您可能可以非常便宜且轻松地制作出高质量的副本,正如我和我的合著者在这篇短文中所解释的那样文章。

有趣的问题,我很确定正确答案将在未来几年迅速改变。

这是使用 AI 对软件进行逆向工程的建议方法。

  • 程序 fake_user 以多种方式操作程序 target_prog 以生成庞大而全面的数据集。
  • 人工网络的参数经过训练,可以在指定的准确性和可靠性标准内产生与 target_prog 等效的行为。

这不仅是可能的,而且它正在成为除逆向工程游戏之外的 AI 项目的标准做法。

有警告。

  • 程序 target_prog 可能具有足够的复杂性以超过现有网络设计和融合技术的能力。
  • 该项目可能无法获得资金和计算资源来完成所需的生成和培训,以在分配的时间内达到合理的准确性和足够的可靠性。
  • 相关人员的专业知识可能不足以产生令人满意的结果。
  • 虽然没有复制源代码,并且通过学习获得的参数状态包含等效功能,但不能保证不会产生民事责任。版权法一个或多个司法管辖区可能被解释为对这种复制的保护,即使源代码的文本没有被逐字复制。