Intel SGX开发者参考书(三)—— 使用Intel SGX SDK工具(二)
@Intel SGX 读书笔记…
Enclave调试器
只有调试模式的Enclave可以使用Intel SGX调试器进行调试:
- Enclave必须构建为可调试的。在Enclave Settings中的Advanced设置里面取消勾选Ensure the enclave cannot be launched in debug mode。
- 在应用程序中,Enclave必须在调试模式下加载。为了在调试模式下加载Enclave,调试器标志(sgx_create_encalve的第二个参数)必须为TRUE。(在后面的函数说明里面会说的,不过在很后面,不知道我能不能坚持到)
为了利用Intel SGX调试器调试Enclave,你必须在Intel SGX 应用程序中改变项目属性。
1.点击右键不可信应用程序项目,选择属性。
2.点击属性->调试,并如下选择Intel SGX Debugger。
3.在你选择Intel SGX Debugger之后,编辑Working Directory为**$(OutDir)**。
在VS2017中启动和调试一个Enclave应用程序
一旦选择了Intel SGX 调试器,设置断点和进入Enclave,其工作原理与VS2017中正常应用程序调试完全相同。
附加到正在运行的进程中的Enclave并对其进行调试
使用以下步骤附加到正在运行的进程中的Enclave并对其进行调试:
1.调试->附加到进程->选择->Intel SGX code
2.突出显示要附加和调试的进程,然后单击Select按钮
3.在弹出的对话框中,选择代码类型中选择调试以下代码类型,然后勾选Intel® SGX
4.点击确定,再点击附加即可
当使用Intel SGX调试器作为远程调试器时,主机需要安装Intel SGX SDK和Intel SGX
调试器;目标机器需要Intel SGX调试器和VS2017远程调试器服务器:
1.在目标主机上,开启远程调试监管器(msvsmon.exe)
2.在主机上,选择调试->附加到进程->选择->Intel SGX代码,并将限定符设置为目标机器名或IP地址。
中途需要学习一下远程调试的建立~
https://docs.microsoft.com/en-us/visualstudio/debugger/remote-debugging
我参考了这个https://www.cnblogs.com/gougou1981/p/11639887.html
Intel SGX调试器可用于调试Enclave项目和不受信任的应用程序,但不能用于调试uRTS和tRTS,它们是Intel SGX SDK的一部分。当uRTS和tRTS中发生断点时,调试器无法显示任何特征,并且按钮step out也不起作用了。要修复这个问题,请在uRTS和tRTS之外手动添加一个断点。
Intel SGX调试器只支持本地C/C++代码。它不能调试托管代码或本机/托管代码混合模式。如果Enclave是混合模式下使用,您可以使用调试器附加功能来调试它。(什么玩意,等搞了远程调试可能就懂了吧)
附加到正在运行的通用Windows应用程序中的Encalve并对其进行调试
一个通用Windows平台(UWP)应用程序中的Enclave只能通过attach模式进行调试,因为Intel SGX调试器不能直接启动UWP应用程序。
Enclalve内存测量工具
Enclave是一个独立的环境。Intel SGX SDK提供sgx_emmt来测量Enclave运行时受保护的内存的真正使用情况。
目前,Enclave内存测量工具提供以下作用:
- 获取Enclave的栈峰值使用值。
- 获取Enclave的堆峰值使用值。
- 获取Enclave的保留内存峰值使用值。
该工具以KB为单位报告内存使用值。一旦你获取了精确的内存使用值,你可以基于此信息重做Enclave配置文件,以充分利用受保护的内存。
该工具是Windows OS下的一个独立应用程序。要度量一个Enclave所消耗的受保护内存,可以利用此工具启动一个测试程序,该程序返回来加载Enclave。对sgx_emmt使用以下语法:
sgx_emmt [–-enclave=<enclave list>] application_name <application args>
参数:
–-enclave
这是一个可选择的参数。它遵循<enclave list>指定的度量目标。如果你不提供这个参数,工具就会选择受保护内存使用信息所给的每一个可以测量的Enclave。如果有多个Enclave需要测量,所有的Enclave名都要在<enclave list>中用逗号(,)隔开,没有空格。
application _name:
这个参数是说明测试应用程序的名字的。应用程序参数在<application args>中提供(如果有的话)。
举例:
假设一个测试应用程序叫myAPP(这个程序咋写?),它有两个输入参数。这个测试应用程序管理三个Enclave,分别叫做:myEnclave1,myEnclave2,myEnclave3。
1.测试所有的Enclaves:
sgx_emmt myApp.exe app_arg1 app_arg2
2.测试两个Enclave目标:
sgx_emmt –-enclave=myEnclave1.signed.dll,myEnclave2.signed.dll myApp.exe app_arg1 app_arg2
注意:Enclave内存测量工具的工作原理是基于这样的假设:测量目标是可测量的Enclave,并且在默认情况下可以找到测量的标识文件。一个可测量的Enclave应符合以下要求:
1.该Enclave应该是可调试的Enclave。这意味着<DisableDebug>中的配置参数应该是0.
2.这个需要Enclave调试信息。该Enclave模块需要在构建时生成调试信息(/Zi/ZI/Z7和/DEBUG)。
3.Enclave应该在调试模式下启动。为了在调试模式下启动,当调用sgx_create_enclave函数去加载Enclave时,需要设置调试flag为1.
要在默认情况下启用标识文件,请定位生成标识文件的位置或将标识文件放置在当前工作目录中。
其实我实验的结果是(先继续下去吧):
E:\SGX\SGX\bin\x64\Release>sgx_emmt.exe --enclave=D:\HelloWorld\Project1\Simulation\Enclave1.signed.dll D:\HelloWorld\Project1\Simulation\Project1.exe
The command line is: "D:\HelloWorld\Project1\Simulation\Project1.exe ".
The enclave "D:\HelloWorld\Project1\Simulation\Enclave1.signed.dll" does not exist.
CPUSVN配置工具
CPUSVN表示CPU的安全版本号,它影响密钥派生和报告生成过程。CPUSVN不是一个数字概念,将随着硬件升级/降级而升级/降级。为了在不修改硬件的情况下模拟CPUSVN升级/降级,Intel SGX SDK提供了CPUSVN配置工具,供你配置CPUSVN。CPUSVN配置工具仅适用于Intel SGX仿真模式,可以作为命令行工具或GUI工具启动。这取决于你的输入。
命令行语法
为了运行Intel SGX CPUSVN配置工具,使用下列语法:
sgx_config_cpusvn [Command]
CPUSVN配置工具命令
-upgrade | 模拟CPUSVN升级 |
-downgrade | 模拟CPUSVN降级 |
-reset | 恢复CPUSVN的默认值 |
如果省略[Command],则该工具将作为GUI工具启动,并显示以下对话框。然后,你可以通过单击响应的按钮来模拟CPUSVN升级/降级/重置。
如有误,请指正!感激!
Intel SGX开发者参考书(三)—— 使用Intel SGX SDK工具(二)相关推荐
- Intel SGX开发者参考书(四)—— Enclave开发基础(三)
@Intel SGX 读书笔记- Enclave配置文件 Enclave配置文件是一个XML文件,包含用户定义的Enclave参数,此文件是Enclave项目的一部分.sgx_sign使用这个文件作为 ...
- Intel SGX开发者参考书(四)—— Enclave开发基础(一)
@Intel SGX 读书笔记- Enclave开发基础 本章节介绍以下Enclave开发工具: 编写Enclave函数 调用函数到Enclave内 调用函数到Enclave外 将Enclave与库连 ...
- Intel SGX开发者参考书(五)—— Intel SGX SDK示例代码(一)
@Intel SGX 读书笔记- Intel SGX SDK示例代码 安装Intel SGX SDK后,你可以在[Intel SGX SDK Install Path]src下找到示例代码. 你可以在 ...
- Intel SGX入坑必读——《Intel SGX Explained》(个人翻译,持续更新中)
写在最前 入坑Intel SGX之前先打好基础.<Intel SGX Explained>就是入坑必读之一,有助于理解Intel SGX的原理.这里仅作个人翻译,便于加深理解,也方便感兴趣 ...
- 最新酷睿计算机配置,三款intel九代酷睿全系列组装电脑配置推荐 每一款CPU都支持超频...
目前intel第九代酷睿桌面处理器,暂且首发了三款不锁频高端系列产品,CPU型号分别是i5-9600K.i7-9700K.i9-9900K,均钎焊设计,性能上相比八代有所提升.下面分享三套intel九 ...
- Android Studio中 HAXM安装失败的问题(Intel HAXM installation failed. To install Intel HAXM follow the...)
问题描述:安装Android Studio中 在最后一步出现 Intel HAXM installation failed. To install Intel HAXM follow the ins ...
- Intel的FORTRAN编译器(即Intel® Parallel Studio XE Cluster Edition)许可证过期 解决方法
Intel的FORTRAN编译器(即Intel® Parallel Studio XE Cluster Edition)许可证过期 解决方法 发现问题 解决问题 发现问题 在一段时间没有使用ifort ...
- [转}SkyEye硬件模拟平台,第三部分: 硬件仿真实现之二
SkyEye硬件模拟平台,第三部分: 硬件仿真实现之二 CPU/开发板仿真 文档选项 <script language=JavaScript type=text/javascript> & ...
- 【C++笔记三】- 英语相关/英语工具
[C++ 笔记三]- 英语相关/英语工具 文章目录 [C++ 笔记三]- 英语相关/英语工具 IV - 其他工具 4.1 - 英语问题 4.2 - 常用缩写 4.3 - 工具推荐 文接上文 https ...
- [ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器
原文:[ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器 上一章 [ 搭建Redis本地服务器实践系列二 ] :图解CentOS7配置Redis 介绍了Red ...
最新文章
- 分享Silverlight/WPF/Windows Phone一周学习导读(10月1日-10月15日)
- Linux字体显示不同颜色
- cacti的mysql密码_cacti 监控搭建
- MSP430F5529实现四位数码管数字显示
- MATLAB从入门到精通-最速下降算法、牛顿算法、BFGS拟牛顿算法、共轭梯度算法无约束极值问题
- 如何卸载ubuntu下的terminator
- 【tensorflow】张量tensor--数据容器(把它想象成一个数字的水桶)
- 论文盘点:ICCV 2019 Top 20,MobileNetV3居首!
- html 拖放实现拼图游戏,Canvas drag 实现拖拽拼图小游戏
- JavaScript数值类型及变量
- Python可视化工具Matplotlib 3.0版出炉,改进默认后端选择,饼图终于变圆了
- 虚拟空间和服务器哪个快,云服务器快还是虚拟空间快
- 如何把书上的字弄到电脑!
- SIEBEL基础学习
- PDCA理念融入软件测试
- 大一高数下册笔记整理_大学高等数学知识点整理(全)
- vue 导出word文档(包括图片)
- python语句print(type)的输出结果是_Python语句print(type(1/2))的输出结果是_____
- MFC 加载jpg等图片
- 山外看山 —— 评The Art of Unix Programming
热门文章
- 商标有效期、续展期、宽展期分别是什么意思?
- javaFX,Scene Builder引入Jfoenix
- 对话|Imagination推出B系列GPU IP,力挺本土芯片的图形渲染和AI创新
- 使用逐浪CMS识别图片文字-揭秘新逐浪CMS之OCR识图功能
- Ubuntu20.4安装gnuradio艰辛之路
- 做一个略调皮的个人博客--菜单篇
- 猴子吃桃 java_【Java编程基本功】(六)猴子吃桃,运动员的出场顺序,abc三个数排序...
- android nfc 启动流程,android-NFC-如何使用NDEF_DISCOVERED启动应用程序
- Wordpress主题制作之首页
- ByteV打造智慧建筑可视化管理平台——IBMS智能化集成系统赋予楼宇“智慧大脑