没有合适的资源?快使用搜索试试~ 我知道了~
软件混淆链的安全控制尼古拉斯·斯利菲耶尔斯基引用此版本:尼古拉斯·斯利菲尔斯基。软件混淆链的安全控制。编程语言[cs.PL]。2020年,大西洋矿业-电信国立高等学校。法语。NNT编号:2020IMTA0223。电话:03143040HAL ID:电话:03143040https://theses.hal.science/tel-03143040提交日期:2021年HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire博士学位论文l’École Nationale Superieure Mines-Telecom AtlantiqueBretagne Pays de la Loire - IMT和科尔 第601章第一次见面数学与信息与通信科学与技术通过尼古拉斯·斯利菲耶尔斯基软件混淆链的安全控制2020年12月17日在布雷斯特IMT Atlantique发表并答辩论文研究单位:Lab-STICC论文编号:2020IMTA0223答辩前的报告员:凯瑟琳·杜波依斯教授,ENSIIEPierre-Etienne MOREAU洛林大学南锡矿业教授评审团组成:主席:托马斯·詹森INRIA研究总监检查员:法比安·达尼亚IMT Atlantique高级讲师凯瑟琳·杜波依斯教授,ENSIIE劳拉·贡诺Claude Bernard Lyon大学塞尔日·圭尔顿工程师,Redhat皮埃尔-艾蒂安·莫罗洛林大学南锡矿业教授Dir.论文:法比安·达尼亚IMT Atlantique高级讲师客人:SébastienJOSSE研究员,DGA信息控制3这篇论文是由法国军备总局资助的,作为REMERCIENTS5我想在这里感谢不同的人,没有他们,我的博士学位和这篇论文的写作就不可能成功首先,我想我还要感谢我的博士生导师Fabien Dagnat和Serge Guelton在我攻读博士学位期间给予的建议和支持我还要感谢我还要感谢圣西尔·科特奎丹学校和我在那里的同事,是他们我还要感谢IMT Atlantic的同事。我特别想到了博士生,我和他们在我还要感谢Benjamin Somers,他在实习期间参与了接下来,我要感谢我的朋友和IMT大西洋巨魔给我的动力最后,我要感谢我的家人,特别是我的父母和祖母,感谢他们在我攻读博士学位期间对我的支持马的能力71导言132混淆和其他软件保护技术172.1导言172.2攻击伴侣182.2.1导言182.2.2MATE18攻击的目标2.2.3攻击者的手段202.2.4结论242.3MATE25攻击防御2.3.1导言252.3.2模糊252.3.3防篡改262.3.4水印272.3.5方案的多样性282.3.6这些技术的组合使用302.3.7对性能的302.3.8结论312.4加密混淆322.4.1虚拟黑盒混淆322.4.2难以区分的混淆332.4.3结论332.5当前转换342.5.1控制流"骗子"342.5.2控制流图的平面化342.5.3不透明谓词362.5.4虚拟化362.5.5自动修改代码372.5.6其他程序混淆技术材料表85.7结论。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...382.6转换的。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...382.7保护有效性的... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...402.8结论。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...413编译和混淆链423.1引言。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...423.2传统的编译。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...433.2.1编译。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...433.2.2优化变换... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...463.2.3通行证。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...473.3用于软件保护的编译器。 . . . . . . . ...483.3.1简介。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...483.3.2优化-混淆。... ... ... ... ... ... ... ... ... ... ... ... ... ... ...493.3.3转换。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...503.3.4转换顺序对级别的影响d’obfuscation... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...513.3.5编译器在防止攻击方面的局限性材料。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...... ... ... ... ... ...513.4对这些问题的。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...533.4.1手动。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...533.4.2自动。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...533.4.3行政混淆。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...554.4专用。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...56马的能力93.5结论。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...574函数式语言及其语义584.1引言。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...584.2函数式语言。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...584.2.1利息。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...584.2.2λ-计算。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...594.2.3示例。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...... ... ...604.3类型。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...614.3.1权益和财产。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...614.3.2λ- 简单类型。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...62材料表94.3.3子类型。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...634.3.4使用行进行化。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...644.3.5分级。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...674.3.6Lambda-分级类型计算。 . . . . . . . . . . . . . . . . ...684.4λ两步计算。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...714.4.1原则。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...714.4.2语法。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...724.4.3类型。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...724.4.4语义。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...734.5结论。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...745我们的编译和混淆过程755.1引言。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...755.2模糊通道。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...765.2.1引言。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...765.2.2通行证的内容... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...765.2.3进入/退出... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...775.3传球的。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...795.3.1简介。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...795.3.2属79材料表10性。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...5.3.3通行证申请的前提条件... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...805.3.4应用通行证的后条件 . . . . . . . . . . . . . . ...805.3.5传球之间的相互作用(信息传输. . . ...815.4编译方案。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...815.5编译。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...845.5.1引言。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...845.5.2脚本... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...855.5.3类型。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...865.5.4编译和执行混淆脚本 . . . . . . . . ...875.5.5原型。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...885.6结论。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...886语言Scol896.1引言。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...896.2基本语言。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...90材料表116.2.1与混淆相关的概念的集成6.2.2SCOL 94的评估语义6.2.3SCOL98的翻译语义6.3语言的扩展1016.3.1布尔和条件结构1026.3.2完整数字1056.3.3106号名单6.3.4107个元组6.3.5递归1086.4SCOL111程序示例6.4.1目标程序和通道的1116.4.2混淆脚本6.4.3脚本113的翻译6.4.4在本例中使用SCOL的兴趣6.5结论1147SCOL116的类型系统7.1导言1167.2我们语言中的类型系统1167.2.1导言1167.2.2功能类型1177.2.3通行证类型1207.2.4SCOL分型逐渐1247.2.5129型系统的性质7.3SCOL129中的扩展类型7.3.1布尔值和条件结构1307.3.2整数1317.3.3列表1327.3.4元组1347.3.5递归1357.4示例1367.4.1程序属性1367.4.2通行证类型1377.4.3铸造类型和插入138材料表127.5结论1388执行SCOL1408.1引言1408.2通行证管理员1418.2.1导言1418.2.2方案1418.2.3通过1418.2.4编译过程的执行1468.3类型和演员阵容1478.3.1导言1478.3.2C++类型的类型转换1478.3.3铸造149的实施8.3.4转换铸造1518.4脚本翻译SCOL1528.4.1导言1528.4.2翻译最低SCOL1528.4.3扩展的翻译1548.5示例1588.6结论1609结论1639.1论文贡献1639.2局限性和前景166参考书目169语法SCOL189A.1 SCOL189的语法A.2 SCOLsta和SCOLdyn190的语法B SCOL 191的评估语义B.1SCOL 191的评估语义C SCOL194中的翻译语义C.1 从SCOLsta到SCOLdyn194的翻译材料表13D 插入SCOL197铸造D.1 系统类型197D.2 插入铸件197E 从SCOL到C++202的翻译E.1翻译规则202E.2将类型转换为C++204类型13C第1章一、引言程序通常在开发人员编写的源代码和最终用户处理器执行的代码之间有很大的不同处理器执行的代码将与分发给最终用户的代码不同,最终用户的代码本身是开发人员编写的代码的转换,可能与提供给编译器的实际上,程序的代码在最明显的转换是由编译器执行的转换,即从编程语言的源代码到程序用户的处理器可执行的指令的转换但是,即使对于不使用编译器的语言,分发给用户的代码通常也与开发人员编写的代码这是因为某些解释语言在由虚拟机执行之前会对代码执行转换步骤例如,Python程序的开发人员类似地,Java程序被编译成Java字节码,然后由Java虚拟机执行。即使是以编写它们的语言分发的程序,在分发之前也经常被转换例如,网站中包含的JavaScript脚本通常会被缩小,以减小通过网络传输的文件的大小。此外,在绝大多数情况下,编写的程序代码最后,执行的代码甚至可以在程序执行期间改变我们可以识别在代码上执行的几种类型的转换1. [182][183]第184话14简介在其开发和执行之间的程序。第一种是将代码从源语言转换例如,将C程序的源代码转换为汇编程序。 这种翻译甚至通常分几个阶段完成。 GCC在编译过程中使用几种中间语言(GENERIC、GIMPLE、RTL...)[150][163] CLang在程序编译期间使用LLVM中间表示。最后,CompCert验证的编译器使用11种中间语言来编译C程序。 这些转换还可能检测错误(语法、类型等)。并为开发人员生成警告第二种类型的转换是以提高程序性能为目标的转换。性能可以是执行速度[147]、程序磁盘上的大小[2]、内存使用[201]、针对各种攻击的安全级别[71][156]... 这些转换包括修改程序的代码,通常,这些转换保留程序的语义,即 例如,一些优化变换使用未定义的行为2来提高程序性能。当程序检测到受到攻击时,安全转换还可以故意更改程序的行为。例如,如果程序检测到它处于一种状态(变量值、执行的函数...这在在这种情况下,程序可以改变其行为以避免攻击或提醒开发人员注意攻击,[ 13 ]这些技术通常被称为防篡改程序通常包含知识产权,特别是算法,或限制程序使用的机制由于开发人员向用户提供了可执行程序,因此恶意用户将能够检索程序代码。它可以使用此代码尝试访问机密或绕过保护机制。如前所述,用户可以访问的代码(提供给用户的可执行文件的代码)与开发人员编写的源代码不同,但是,如果没有额外的保护,经验丰富的攻击者或用户可能无法访问该代码。2. C’est-à-dire15简介使用高级工具可以从该代码中提取与从原始源代码中提取的信息一样多为了对抗这些攻击,编写直接无法理解的代码是不切实际的,因为这会使开发、维护和更新任务变得但是可以使用增加理解代码的因此,源代码和可执行程序之间的程序代码的完全转换需要连续应用几个这样的转换。这可能导致几个问题,例如,确保翻译和优化转换的正确性可能是有趣的,也就是说,它们很好地保持了这些转换可能具有相当精确的应用程序要求,必须对其进行验证才能正确执行 但是安全转换(包括混淆转换)比优化转换有额外的约束,并且当前的编译器经常删除或减少(手动或自动)添加到程序中的保护。然而,对安全相关编译器的研究要晚得多,也不太完整。[ 190 ][ 59]在这篇论文中,我们的目标将是提出解决方案的各种问题的编译和混淆的程序特别是,我们将提出解决方案,以促进编译器链的设计,考虑到混淆和更普遍的程序安全性为此,本论文的目的将是形式化编译和混淆及其组成,以允许对转换的应用进行更精细的控制,验证转换的各种约束是否得到满足,以及提供关于提供给开发人员的保护级别和覆盖范围为了实现这些目标,本文将提出几点贡献。我们将3. 这些将在以下章节中详细说明
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 新代数控API接口实现CNC数据采集技术解析
- Java版Window任务管理器的设计与实现
- 响应式网页模板及前端源码合集:HTML、CSS、JS与H5
- 可爱贪吃蛇动画特效的Canvas实现教程
- 微信小程序婚礼邀请函教程
- SOCR UCLA WebGis修改:整合世界银行数据
- BUPT计网课程设计:实现具有中继转发功能的DNS服务器
- C# Winform记事本工具开发教程与功能介绍
- 移动端自适应H5网页模板与前端源码包
- Logadm日志管理工具:创建与删除日志条目的详细指南
- 双日记微信小程序开源项目-百度地图集成
- ThreeJS天空盒素材集锦 35+ 优质效果
- 百度地图Java源码深度解析:GoogleDapper中文翻译与应用
- Linux系统调查工具:BashScripts脚本集合
- Kubernetes v1.20 完整二进制安装指南与脚本
- 百度地图开发java源码-KSYMediaPlayerKit_Android库更新与使用说明
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功