@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内存测量工具提供以下作用:

  1. 获取Enclave的栈峰值使用值。
  2. 获取Enclave的堆峰值使用值。
  3. 获取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工具(二)相关推荐

  1. Intel SGX开发者参考书(四)—— Enclave开发基础(三)

    @Intel SGX 读书笔记- Enclave配置文件 Enclave配置文件是一个XML文件,包含用户定义的Enclave参数,此文件是Enclave项目的一部分.sgx_sign使用这个文件作为 ...

  2. Intel SGX开发者参考书(四)—— Enclave开发基础(一)

    @Intel SGX 读书笔记- Enclave开发基础 本章节介绍以下Enclave开发工具: 编写Enclave函数 调用函数到Enclave内 调用函数到Enclave外 将Enclave与库连 ...

  3. Intel SGX开发者参考书(五)—— Intel SGX SDK示例代码(一)

    @Intel SGX 读书笔记- Intel SGX SDK示例代码 安装Intel SGX SDK后,你可以在[Intel SGX SDK Install Path]src下找到示例代码. 你可以在 ...

  4. Intel SGX入坑必读——《Intel SGX Explained》(个人翻译,持续更新中)

    写在最前 入坑Intel SGX之前先打好基础.<Intel SGX Explained>就是入坑必读之一,有助于理解Intel SGX的原理.这里仅作个人翻译,便于加深理解,也方便感兴趣 ...

  5. 最新酷睿计算机配置,三款intel九代酷睿全系列组装电脑配置推荐 每一款CPU都支持超频...

    目前intel第九代酷睿桌面处理器,暂且首发了三款不锁频高端系列产品,CPU型号分别是i5-9600K.i7-9700K.i9-9900K,均钎焊设计,性能上相比八代有所提升.下面分享三套intel九 ...

  6. 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 ...

  7. Intel的FORTRAN编译器(即Intel® Parallel Studio XE Cluster Edition)许可证过期 解决方法

    Intel的FORTRAN编译器(即Intel® Parallel Studio XE Cluster Edition)许可证过期 解决方法 发现问题 解决问题 发现问题 在一段时间没有使用ifort ...

  8. [转}SkyEye硬件模拟平台,第三部分: 硬件仿真实现之二

    SkyEye硬件模拟平台,第三部分: 硬件仿真实现之二 CPU/开发板仿真 文档选项 <script language=JavaScript type=text/javascript> & ...

  9. 【C++笔记三】- 英语相关/英语工具

    [C++ 笔记三]- 英语相关/英语工具 文章目录 [C++ 笔记三]- 英语相关/英语工具 IV - 其他工具 4.1 - 英语问题 4.2 - 常用缩写 4.3 - 工具推荐 文接上文 https ...

  10. [ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器

    原文:[ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器 上一章 [ 搭建Redis本地服务器实践系列二 ] :图解CentOS7配置Redis  介绍了Red ...

最新文章

  1. 分享Silverlight/WPF/Windows Phone一周学习导读(10月1日-10月15日)
  2. Linux字体显示不同颜色
  3. cacti的mysql密码_cacti 监控搭建
  4. MSP430F5529实现四位数码管数字显示
  5. MATLAB从入门到精通-最速下降算法、牛顿算法、BFGS拟牛顿算法、共轭梯度算法无约束极值问题
  6. 如何卸载ubuntu下的terminator
  7. 【tensorflow】张量tensor--数据容器(把它想象成一个数字的水桶)
  8. 论文盘点:ICCV 2019 Top 20,MobileNetV3居首!
  9. html 拖放实现拼图游戏,Canvas drag 实现拖拽拼图小游戏
  10. JavaScript数值类型及变量
  11. Python可视化工具Matplotlib 3.0版出炉,改进默认后端选择,饼图终于变圆了
  12. 虚拟空间和服务器哪个快,云服务器快还是虚拟空间快
  13. 如何把书上的字弄到电脑!
  14. SIEBEL基础学习
  15. PDCA理念融入软件测试
  16. 大一高数下册笔记整理_大学高等数学知识点整理(全)
  17. vue 导出word文档(包括图片)
  18. python语句print(type)的输出结果是_Python语句print(type(1/2))的输出结果是_____
  19. MFC 加载jpg等图片
  20. 山外看山 —— 评The Art of Unix Programming

热门文章

  1. 商标有效期、续展期、宽展期分别是什么意思?
  2. javaFX,Scene Builder引入Jfoenix
  3. 对话|Imagination推出B系列GPU IP,力挺本土芯片的图形渲染和AI创新
  4. 使用逐浪CMS识别图片文字-揭秘新逐浪CMS之OCR识图功能
  5. Ubuntu20.4安装gnuradio艰辛之路
  6. 做一个略调皮的个人博客--菜单篇
  7. 猴子吃桃 java_【Java编程基本功】(六)猴子吃桃,运动员的出场顺序,abc三个数排序...
  8. android nfc 启动流程,android-NFC-如何使用NDEF_DISCOVERED启动应用程序
  9. Wordpress主题制作之首页
  10. ByteV打造智慧建筑可视化管理平台——IBMS智能化集成系统赋予楼宇“智慧大脑