YiMiTuMi

使我进步的不是谦虚,而是别人羡慕我时我的那份骄傲!

获取系统分辨率和任务栏大小

c++

获取系统分辨率 方法1: //获取系统分辨率 int iWide = 0; int iHeight = 0; iWide = GetSystemMetrics(SM_CXSCREEN); //屏幕宽度 iHeight = GetSystemMetrics(SM_CYSCREEN); //屏幕高度 方法2: HDC hDC = ::GetDC(HWND(NULL)); //...

(三十四)总结--汇编笔记

汇编语言

注意 大于9FFFH的十六进制数据,在书写的时候都是以字母开头的。而在汇编源程序中,数据不能以字母开头,所以要在前面加0。 debug中 ds = 0B2DH 时,程序在0B3D:0处,段地址要+10H 10H为PSP所占的空间。 16位寄存器,不能直接add 8位内存单元中的值 在操作系统允许的情况下,程序可以获取任意容量的空间。 cx 存放循环次数 loop 连用 和 jcxz...

(三十二)外中断--汇编笔记

汇编语言

外中断 CPU在计算机系统中,除了能够执行指令,进行运算以外,还应该能够对外部设备进行控制,接受它们的输入,向它们进行输出。 CPU除了有运算能力外,还要有I/O能力。  1)外设的输入送入端口  2)向CPU发出外中断(可屏蔽中断)信息  3)CPU检测到可屏蔽中断信息,如果IF = 1,CPU在执行完当前指令后响用中断,执行相应的中断例程。  4)可在中断例程中实现对外设输入...

(三十三)直接定址表--汇编笔记

汇编语言

描述了单元长度的标号 例:将code段中的a标号处的8个数据累加,结果保存到b标号处。 assume cs:code code segment a: db 1, 2, 3, 4, 5, 6, 7, 8 b: dw 0 start: mov si, offset a mov bx, offset b mov cx, 8 s: mov al, cs:[si] mov...

(三十一)端口--汇编笔记

汇编语言

端口 各种存储器都和CPU的地址线、数据线、控制线相连。CPU在控制它们的时候,把他们都当作内存来对待,把他们总地看做一个由若干存储单元组成的逻辑存储器,这个逻辑存储器我们称为内存地址空间。 在PC系统中,和CPU通过总线相连的芯片除各种存储器外,还有:  1)各种接口卡(显卡、网卡等)上的接口芯片,它们控制接口卡进行工作。  2)主板上的接口芯片,CPU通过它们对部分外设进行访问。...

基于异常处理的Hook函数(VEH Hook)

c++

基于异常处理的Hook函数 向量化异常处理(Vectored Exception Handler, VEH) 结构化异常处理(Structure Exception Handler, SEH) 原理: 参考 在用户模式下发生异常时,异常处理分发函数在内部会先调用遍历 VEH 记录链表的函数, 如果没有找到可以处理异常的注册函数,再开始遍历 SEH 注册链表。 二者之间具体联系:VEH...

InlineHook

c++

InlineHook – jmp 1) TargetFun:要被Hook的目标函数 2)DetourFun:用于代替TargetFun的自定义函数 3)TrampolineFun:调用原函数的入口 步骤: 1)确定Hook方式及需要在Trampoline中执行的命令。 2)准备TrampolineFun函数:因为TrampolineFun函数的每条指令都需要自行控制,需要该函数为...

(三十)shl 和 shr指令(逻辑移位指令)--汇编笔记

汇编语言

shl 和 shr指令(逻辑移位指令) shl 和 shr使逻辑位移指令。 shl是逻辑左移指令,功能:  1)将一个寄存器或内存单元中的数据向左移位;  2)将最后移出的一位写入CF中;  3)最低位用0补充。 指令: mov al, 01001000b shl al, 1 执行后(al)= 10010000b CF = 0。 如果移位大于1时,必须将移动位数放在cl...

AddressHook -- 虚函数Hook

c++

虚函数Hook 在编译后,虚函数表就是一个固定的表了,它位于PE的.rdata段。 对虚函数表进行Hook:查找原函数位置、修改页面属性、写入Detour函数的地址。 步骤: 1)确定虚函数表中的函数位置及函数原型:在C++类中如果有虚函数成员,那么第一个元素就是虚函数表,也就是地址表,重载就是用子类的方法去覆盖父类的方法,也就是地址替换(实际上Hook时也是这么做的)。 2)根据...

AddressHook -- IATHook

c++

IAT–Hook 注释已经写的很清楚了,InstallModuleIATHook主要是对输入表进行修改。 1) 定义一个Detour函数 2)查表、遍历匹配替换原地址,关闭写保护,以及写入Detour函数的地址。 #include "stdafx.h" #include <windows.h> #include <dbghelp.h> #include <...