二进制安全C/C++ [2022]hypervisor一个麻烦: Time Stamp Counter ### Time Stamp Counter 时间戳计数器( TSC ) 是一个 64 位寄存器,存在于自Pentium以来的所有x86处理器上.它计算自复位以来的 CPU周期数.该指令返回 EDX:EAX 中的 TSC.在x86-64模式下,还会清除RAX和RDX的高32位. ### 特性 对CPU执行的时间高度敏感 大部分GUI、网络设备依赖它用于计数从而实现一些功能 包括ETW也有可选项使用它计数 ### 问题 一个对CPU执行时间高度敏感、而且不容易篡改的东西,最容易拿来干啥? 检测CPU的周期,用于探测hypervisor是否存在 这是一个简单的例子: 阅读全文 2022-07-19 huoji 0 条评论
系统安全C/C++一线开发 [2022]hypervisor: 检测与预防(三) copy paster们久等了 书接上回,前情回顾.如果没有看过请浏览: [[2022]hypervisor: 检测与预防 (一)](https://key08.com/index.php/2022/05/12/1477.html "[2022] hypervisor: 检测与预防 (一)") [[2022]hypervisor: 检测与预防 (二)](https://key08.com/index.php/2022/06/19/1489.html "[2022]hypervisor: 检测与预防 (二)") ### KiErrata671Present 阅读全文 2022-07-10 huoji 0 条评论
工具软件二进制安全C/C++汇编一线开发 [2021]基于hypervisor的HIPS架构 从0到1 四 (SSDT hook) # 前言 还记我们系列的标题吗? HIPS,作为系统监控,我们需要监控所有的syscall调用。这个部分会由hypervisor完成. ssdt hook是一个古老古老的东西了,还记得我以前入门就是很多人把ssdt hook看做是核心机密,现在已经烂大街了.我们的ssdt hook不同于传统的"内联hook",我们准确的说叫做msr hook.回忆一下amd64里面syscall的方式,看看AMD手册的介绍: 在AMD64体系下,为了解决之前int调用方式的不足,从而推出了syscall指令作为进入内核入口的指令,syscall在AMD64体系下调用的方式  可以看到,最终RIP的值会等与MSR_LSTAR相等,而在微软体系里,MSR_LSTAR存放着kisystemcall64的函数地址 因此,我们需要hook这个msr_star 阅读全文 2021-05-25 huoji 1 条评论
二进制安全C/C++汇编 [2021]syscall、sysret研究 https://events.static.linuxfound.org/sites/events/files/slides/entry-lce.pdf 备份: [entry-lce.pdf](https://key08.com/usr/uploads/2021/04/37404595.pdf) 阅读全文 2021-04-20 huoji 0 条评论
二进制安全C/C++汇编 [2021]基于虚拟化的HIPS架构 从0到1 二 (SVM部分) 上一章 [基[2021]于hypervisor的HIPS架构 从0到1(VT部分)](https://key08.com/index.php/2021/02/24/915.html "基[2021]于hypervisor的HIPS架构 从0到1(VT部分)") 我们讨论了INTEL的 VT-X的情况,对于AMD的SVM,我们还没有做过多讨论,本篇文章就会继续讨论SVM的情况. 网上关于AMD的资料几乎为0,我希望这篇文章给你带来启发 ## 1.准备工作 首先我们要确保SVM是否是支持的:  这是万事开头 阅读全文 2021-04-11 huoji 3 条评论