Recovery of Object Oriented Features from C++ Binaries

Kyungjin Yoo, R. Barua
{"title":"Recovery of Object Oriented Features from C++ Binaries","authors":"Kyungjin Yoo, R. Barua","doi":"10.1109/APSEC.2014.44","DOIUrl":null,"url":null,"abstract":"Reverse engineering is the process of examining and probing a program to determine the original design. Over the past ten years researchers have produced a number of capabilities to explore, manipulate, analyze, summarize, hyperlink, synthesize, componentize, and visualize software artifacts. Many reverse engineering tools focus on non-object-oriented software binaries with the goal of transferring discovered information into the software engineers trying to reengineer or reuse it. In this paper, we present a method that recovers object-oriented features from stripped C++ binaries. We discover RTTI information, class hierarchies, member functions of classes, and member variables of classes. The information obtained can be used for reengineering legacy software, and for understanding the architecture of software systems. Our method works for stripped binaries, i.e., Without symbolic or relocation information. Most deployed binaries are stripped. We compare our method with the same binaries with symbolic information to measure the accuracy of our techniques. In this manner we find our methods are able to identify 80% of virtual functions, 100% of the classes, 78% of member functions, and 55% of member variables from stripped binaries, compared to the total number of those artifacts in symbolic information in equivalent non-stripped binaries.","PeriodicalId":380881,"journal":{"name":"2014 21st Asia-Pacific Software Engineering Conference","volume":"40 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2014-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"11","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"2014 21st Asia-Pacific Software Engineering Conference","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/APSEC.2014.44","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 11

Abstract

Reverse engineering is the process of examining and probing a program to determine the original design. Over the past ten years researchers have produced a number of capabilities to explore, manipulate, analyze, summarize, hyperlink, synthesize, componentize, and visualize software artifacts. Many reverse engineering tools focus on non-object-oriented software binaries with the goal of transferring discovered information into the software engineers trying to reengineer or reuse it. In this paper, we present a method that recovers object-oriented features from stripped C++ binaries. We discover RTTI information, class hierarchies, member functions of classes, and member variables of classes. The information obtained can be used for reengineering legacy software, and for understanding the architecture of software systems. Our method works for stripped binaries, i.e., Without symbolic or relocation information. Most deployed binaries are stripped. We compare our method with the same binaries with symbolic information to measure the accuracy of our techniques. In this manner we find our methods are able to identify 80% of virtual functions, 100% of the classes, 78% of member functions, and 55% of member variables from stripped binaries, compared to the total number of those artifacts in symbolic information in equivalent non-stripped binaries.
查看原文
分享 分享
微信好友 朋友圈 QQ好友 复制链接
本刊更多论文
从c++二进制文件中恢复面向对象的特性
逆向工程是对程序进行检查和探索以确定原始设计的过程。在过去的十年中,研究人员已经产生了许多探索、操作、分析、总结、超链接、综合、组件化和可视化软件工件的能力。许多逆向工程工具专注于非面向对象的软件二进制文件,其目标是将发现的信息传递给试图重新设计或重用它的软件工程师。在本文中,我们提出了一种从剥离的c++二进制文件中恢复面向对象特征的方法。我们发现了RTTI信息、类的层次结构、类的成员函数和类的成员变量。获得的信息可用于重新设计遗留软件,并用于理解软件系统的体系结构。我们的方法适用于剥离的二进制文件,即,没有符号或重定位信息。大多数部署的二进制文件都被剥离了。我们将我们的方法与具有符号信息的相同二进制文件进行比较,以衡量我们技术的准确性。通过这种方式,我们发现我们的方法能够从剥离二进制文件中识别80%的虚函数、100%的类、78%的成员函数和55%的成员变量,与同等非剥离二进制文件中符号信息中的这些工件的总数相比。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 去求助
来源期刊
自引率
0.00%
发文量
0
期刊最新文献
pIML -- An Interrupt Program Modelling Language for Real-Time and Embedded Systems What Community Contribution Pattern Says about Stability of Software Project? Guidelines for the Use of Function Block Diagram in Reactor Protection Systems Data Flow Based Integration Testing for Embedded System Using Interaction Model Model Checking of Software Product Lines in Presence of Nondeterminism and Probabilities
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
已复制链接
已复制链接
快去分享给好友吧!
我知道了
×
扫码分享
扫码分享
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1