本人是计算机类大学生,已经大三,具有一定的计算机知识体系基础,已经学习操作系统,C++,但并未系统学习过汇编
笔记内容省略本人已有知识,例如:堆栈,段页式管理,虚拟内存等
Intel体系芯片使用Little-Endian顺序存储多字节数据。低位字节存入低位地址
Kernel:由KERNEL32.DLL实现,包括进线程管理,内存管理,文件访问等
User:由USER32.DLL实现,负责处理用户接口,包括键鼠,窗口和菜单管理
GDI:由GDI32.DLL实现,在屏幕和打印机上显示文本和图形
ADVAPI32.DLL注册表操作,COMDLG32.DLL公共对话框,SHELL32.DLL界面外壳
GetWindowText:返回窗体的标题文字,获文本控件的内容
GetDlgItem:获取指定对话框的句柄
GetDlgItemText:获取对话框文本
GetDlgItemInt:获取对话框整数值
MessageBox:创建和显示信息框
Windows NT系列内核是只支持Unicode的,ANSI字符串经过翻译层(MessageBoxA等)最终调用Unicode版本的函数(MessageBoxW)
SendMessage:调用一个窗口函数,将一条信息发给窗口,直到消息处理完毕才返回
WM_COMMAND消息:菜单获按钮中选中命令获控件时发送给它的父窗口(快捷键释放也会)
WM_GETTEXT消息:将窗口的文本拷贝到缓冲区
实模式:MS-DOS的运行环境,利用寄存器的前16位
保护模式:Windows运行环境
权限级别PL,Privilege Level。Ring0级别(核心态),可以执行所有的指令并访问所有数据,内核,驱动;Ring3(用户态),Kernel和用户程序
PE的区块(区段、节,Section):PE(exe,dll)中的一个结构,有不同的名字表示功能:
.text:指令代码
.rdata:运行期只读数据
.data:初始化的数据块
.idata:包含其他外来DLL的函数及数据信息,即输入表
.rsrc:包含模块的全部资源,如图标、菜单和位图等
ImageBase:初始内存地址,基地址,VC++是00400000h,DLL是1000000h,可在link时修改/BASE选项
RVA:相对虚拟地址
VA(Memory Offset):某一绝对虚拟地址,又称为内存偏移地址
入口点(Entry Point):执行是的入口点,执行是的第一行代码的地址
文件偏移地址(File Offset):以PE第一个字节标号为0,将各数据的地址称作文件偏移地址
第一篇内容主要介绍PE结构,虚拟内存,字符集,API,消息机制,保护模式。