昨晚就在思考起个什么酷炫的题目才能够让我这平平静静的四年变得不平静,然而想来想去,也无法从自己以往写过的代码中寻觅出什么像样的灵感,倒是蹦出了动漫里後で考える部(之后再想部)的名字。想想起个这题目也不合适,所以就暂定本科四年好了。写此文以测量一个工科毕业生词汇之匮乏,记录下还残留在我大脑颞叶中的记忆片段。(中二长文慎入) (2015-07-01写的,今天才想起来挪过来)
Xen Log 4-Log without Rate Limiting
#Xen Log without limiting(2016-01-04)
In many XSAs (43, 96, 118, 141, 146, 152 and 169 till now), The unlimited logging will cause a DoS attack in Hypervisor.
The prinkt is not rate limited and detailed info is recorded in lwn : http://lwn.net/Articles/66091/
Printk is log unlimited. If the log message is sent to console and the hypervisor vill have to spend all of its time to scrolling the console frame buffer (Try sudo apt-get install and list all possible results).
###Question about XSA
In xen, (XEN/xen/common/xenoprof.c)
1 | ret_t do_xenoprof_op(int op, XEN_GUEST_HANDLE_PARAM(void) arg) |
do_xenoprof_op is hypercall 31, which can be triggered by DomU. So DomU can cause a DoS of hypervisor.
Symbol与Pointer、Array与Function
在上一篇Summary里面已经提到过Array、Function与Pointer了。里面都是标准的语法,理解上也没有什么有问题的地方。本篇则讨论不知是编译器or链接器出于人性考虑进行优化还是什么的引起的一些语义和语法上的不一致。
Xen Log 3-Add New Hypercall to Xen
首先第一步便是给Xen中添加新的Hypercall, Hypercall、Hypervisor与GuestVM的关系与Systemcall、OS与Process的关系类似,如果GuestVM想要执行一些特权行为(如请求硬件)那么就要使用hypercall,控制权会转交给hypervisor,当hypervisor完成相关操作时会将控制权再交回GuestVM。
Xen Log 2-Build HVM DomainU
Xen Log 1-Running Xen
Calling Convention&Function Pointer
这一年因为工作原因得以跟着本科生一起学习ICS(Introduction to Computer Systems), ICS原本好像是CMU的课:https://www.cs.cmu.edu/~213/, 本校的主页:http://ipads.se.sjtu.edu.cn/courses/ics/。内容基本上涵盖了我本科时期操作系统、计算机组成与x86汇编的大部分内容,而且由于是一门课,所以很好的把这些内容都串了起来,我也有幸能再次学习和温习一下专业的基础知识。这一系列博文主要总结这次学习中的新的收获和以混淆的点,用来温习和回顾。
这次总结函数调用的 Calling Convention和C语言的Function Pointer, 本来还想加上Round to Even 和 x86与x86-64种struct, union对齐的,不过因为扯了C#的事件和委托机制,导致内容有点多,就放到下一篇好了。