C/C++汇编 [2022]关于intel和amd指令行为不一样这件事 ### AMD CPU与INTEL CPU指令解析问题 假设一个情况: ```cpp 66 e8 00 00 00 00 ``` 在x86指令集中 66会作为e8的prefix,覆盖code segment size 假设当前大小为16bit 新大小会为32bit.反之一样. code segment size由 GDT/LDT 决定.实模式一般是16 bit("unreal"模式除外) 在x64中,我发现了一个很有意思的地方: 66 E8作为指令前缀时,AMD和INTEL呈现了完全不同的特性,即amd会遵循规则,将e8的code segment size设置为16bit 而intel则直接忽略. 这个问题已经被发现了有一段时间了,capstone在2016年,记录了这个问题. https://github.com/capstone-engine/capstone/issues/776 这是一个概念性代码,不用CPUID判断出是INTEL还是AMD的cpu. ### 简单的思考: 能否用于混淆? ### poc https://github.com/huoji120/cpu_duck 阅读全文 2022-04-16 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是否是支持的: ![1.png](https://key08.com/usr/uploads/2021/04/2334368837.png) 这是万事开头 阅读全文 2021-04-11 huoji 3 条评论