摘要: Main.cpp extern "C" void PopCalculator(); extern "C" void _INT3(); int main() { _INT3(); PopCalculator(); return 0; } Code.asm PopCalculator proto _IN 阅读全文
posted @ 2022-05-22 10:24 HyperVS 阅读(2812) 评论(0) 推荐(0)
摘要: Fastio.h 1 #pragma once 2 #include "Header.h" 3 4 5 BOOLEAN FastIoCheckIfPossible( 6 _In_ struct _FILE_OBJECT* FileObject, 7 _In_ PLARGE_INTEGER FileO 阅读全文
posted @ 2021-12-03 15:59 HyperVS 阅读(123) 评论(0) 推荐(0)
摘要: 我是小绿,研究了一下OpenSSL中SHA-1算法的实现流程。 我并没有去深究加密细节(如,某个哈希常量为什么是这个数字、为什么要在这里左移多少多少位),因为完全没有必要,发明者发明它享受荣誉,使用者使用它享受便捷。我是使用者,就是这样。 SHA/MD5加密流程: 01. 分块 02. 补位 03. 阅读全文
posted @ 2021-11-07 21:51 HyperVS 阅读(1032) 评论(0) 推荐(0)
摘要: 所有内容均翻译自 Intel CPU 手册,再经过整理,难免有误,见谅。 32位分页模式:CR0.PE=1, CR0.PG=1, CR4.PAE=0 PAE分页模式:CR0.PE=1, CR0.PG=1, CR4.PAE=1, IA32_EFER.LME=0 4级分页模式:CR0.PE=1, CR0 阅读全文
posted @ 2021-10-31 19:47 HyperVS 阅读(124) 评论(0) 推荐(0)
摘要: 所有内容均翻译自 Intel CPU 手册,再经过整理,难免有误,见谅。 段描述符表是一个段描述符数组。最多可容纳8192(2^16 / 8)个8字节的描述符。分为GDT和LDT。GDT为整个软硬件系统服务,由操作系统定义,管理所有用户程序。 # 进入保护模式之前必须先定义GDT表。由于是在实模式下 阅读全文
posted @ 2021-10-31 19:41 HyperVS 阅读(184) 评论(0) 推荐(0)
摘要: 所有内容均翻译自 Intel CPU 手册,再经过整理,难免有误,见谅。 Type 是什么取决于S位。 S=1: - 当S=1,表示该段描述符是一个代码段描述符(高位=1)或者数据段描述符(高位=0)。 # 对于数据段,低三位是A(是否访问过)、W(是否可写)、E(扩展方向)。堆栈段属于数据段,必须 阅读全文
posted @ 2021-10-31 19:32 HyperVS 阅读(470) 评论(0) 推荐(0)
摘要: 所有内容均翻译自 Intel CPU 手册,再经过整理,难免有误,见谅。 段描述符是位于GDT或LDT中8字节的项,给处理器提供一个段的位置、界限、访问特权级等信息。 段描述符的结构: # G:粒度标志。Segment Limit 字段的大小比例。G=0,Segment Limit 以字节为单位;G 阅读全文
posted @ 2021-10-31 19:21 HyperVS 阅读(638) 评论(0) 推荐(1)
摘要: 所有内容均翻译自 Intel CPU 手册,再经过整理,难免有误,见谅。 通过段选择符可以找到某个段的段描述符。 段选择符的结构: # Index:在GDT或LDT中的位置索引。处理器将此索引乘以8,再加上GDTR或LDTR中的基址就可以找到对应的段描述符。# TI:表示描述符表。TI=0,GDT; 阅读全文
posted @ 2021-10-31 19:12 HyperVS 阅读(168) 评论(0) 推荐(0)
摘要: 所有内容均翻译自 Intel CPU 手册,再经过整理,难免有误,见谅。 CS,SS,DS,ES,FS,GS # 段寄存器分为可见部分和隐藏部分(描述符高速缓存器)。在保护模式下,当段选择符装载入段寄存器的可见部分的时候,处理器会从该段选择符指向的段描述符中,将段基址、段界限、访问权限装载入不可见部 阅读全文
posted @ 2021-10-31 19:06 HyperVS 阅读(293) 评论(0) 推荐(0)
摘要: 所有内容均翻译自 Intel CPU 手册,再经过整理,难免有误,见谅。 逻辑地址:段起始地址与偏移的组合。 线性地址:在没有开启分页机制的情况下,线性地址就是物理地址。 开启分页机制的情况下,处理器得到物理地址需要两步: 01. 通过逻辑地址找到线性地址: 02. 将线性地址转换为物理地址,例如: 阅读全文
posted @ 2021-10-31 18:57 HyperVS 阅读(324) 评论(0) 推荐(0)