Much software, whether beneficent or malevolent, is distributed only as binaries, sans source code. Absent source code, understanding binaries' behavior can be quite challenging, especially when compiled under higher levels of compiler optimization. These optimizations can transform comprehensible, "natural" source constructions into something entirely unrecognizable. Reverse engineering binaries, especially those suspected of being malevolent or guilty of intellectual property theft, are important and time-consuming tasks. There is a great deal of interest in tools to "decompile" binaries back into more natural source code to aid reverse engineering. Decompilation involves several desirable steps, including recreating source-language constructions, variable names, and perhaps even comments. One central step in creating binaries is optimizing function calls, using steps such as inlining. Recovering these (possibly inlined) function calls from optimized binaries is an essential task that most state-of-the-art decompiler tools try to do but do not perform very well. In this paper, we evaluate a supervised learning approach to the problem of recovering optimized function calls. We leverage open-source software and develop an automated labeling scheme to generate a reasonably large dataset of binaries labeled with actual function usages. We augment this large but limited labeled dataset with a pre-training step, which learns the decompiled code statistics from a much larger unlabeled dataset. Thus augmented, our learned labeling model can be combined with an existing decompilation tool, Ghidra, to achieve substantially improved performance in function call recovery, especially at higher levels of optimization.


翻译:大量软件, 无论是仁慈的还是恶意的, 都只是作为二进制、 sans 源代码。 不存在源代码, 理解二进制的行为可能相当具有挑战性, 特别是在编译者优化的更高水平下进行编译。 这些优化可以将可理解的“ 自然” 源构建转换成完全无法辨认的东西。 反向工程二进制, 特别是被怀疑具有恶意性或犯有知识产权盗窃罪的二进制, 是重要和耗时的任务。 对“ 腐蚀” 二进制到更自然源代码, 以帮助反向工程。 失正解包含若干可取的步骤, 包括重新创建源语言构建、 变量名称, 可能甚至评论。 这些优化可以将“ 自然” 源构建转化为完全无法辨认的。 反向工程二进制二进制二进制二进制的二进制二进制二进制工具, 大部分的变制的变制工具可以尝试, 但不能很好地运行。 在本文中, 我们评估一个不监督的学习方法, 重制的重塑的自动化的系统, 将数据转换到一个功能提升到一个大型的升级的升级的系统。

0
下载
关闭预览

相关内容

《DeepGCNs: Making GCNs Go as Deep as CNNs》
专知会员服务
30+阅读 · 2019年10月17日
Keras François Chollet 《Deep Learning with Python 》, 386页pdf
专知会员服务
144+阅读 · 2019年10月12日
[综述]深度学习下的场景文本检测与识别
专知会员服务
77+阅读 · 2019年10月10日
机器学习入门的经验与建议
专知会员服务
90+阅读 · 2019年10月10日
LibRec 精选:AutoML for Contextual Bandits
LibRec智能推荐
7+阅读 · 2019年9月19日
已删除
将门创投
8+阅读 · 2019年1月4日
Unsupervised Learning via Meta-Learning
CreateAMind
41+阅读 · 2019年1月3日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
16+阅读 · 2018年12月24日
carla 体验效果 及代码
CreateAMind
7+阅读 · 2018年2月3日
分布式TensorFlow入门指南
机器学习研究会
4+阅读 · 2017年11月28日
【学习】(Python)SVM数据分类
机器学习研究会
6+阅读 · 2017年10月15日
Adversarial Variational Bayes: Unifying VAE and GAN 代码
CreateAMind
7+阅读 · 2017年10月4日
Auto-Encoding GAN
CreateAMind
7+阅读 · 2017年8月4日
强化学习 cartpole_a3c
CreateAMind
9+阅读 · 2017年7月21日
Arxiv
0+阅读 · 2021年11月8日
A Survey of Deep Learning for Scientific Discovery
Arxiv
29+阅读 · 2020年3月26日
Image Segmentation Using Deep Learning: A Survey
Arxiv
43+阅读 · 2020年1月15日
Arxiv
6+阅读 · 2019年11月14日
Arxiv
4+阅读 · 2019年2月8日
Arxiv
6+阅读 · 2018年12月10日
VIP会员
相关资讯
LibRec 精选:AutoML for Contextual Bandits
LibRec智能推荐
7+阅读 · 2019年9月19日
已删除
将门创投
8+阅读 · 2019年1月4日
Unsupervised Learning via Meta-Learning
CreateAMind
41+阅读 · 2019年1月3日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
16+阅读 · 2018年12月24日
carla 体验效果 及代码
CreateAMind
7+阅读 · 2018年2月3日
分布式TensorFlow入门指南
机器学习研究会
4+阅读 · 2017年11月28日
【学习】(Python)SVM数据分类
机器学习研究会
6+阅读 · 2017年10月15日
Adversarial Variational Bayes: Unifying VAE and GAN 代码
CreateAMind
7+阅读 · 2017年10月4日
Auto-Encoding GAN
CreateAMind
7+阅读 · 2017年8月4日
强化学习 cartpole_a3c
CreateAMind
9+阅读 · 2017年7月21日
相关论文
Arxiv
0+阅读 · 2021年11月8日
A Survey of Deep Learning for Scientific Discovery
Arxiv
29+阅读 · 2020年3月26日
Image Segmentation Using Deep Learning: A Survey
Arxiv
43+阅读 · 2020年1月15日
Arxiv
6+阅读 · 2019年11月14日
Arxiv
4+阅读 · 2019年2月8日
Arxiv
6+阅读 · 2018年12月10日
Top
微信扫码咨询专知VIP会员