预计平均三天一课,录制过程中,大纲会实时更新(更改)
主讲:郁金香灬老师 QQ150330575
开发环境:VC6,VS2003,VS2008
教程购买地址:http://yjxsoft.taobao.com
1.3.3 用工具过驱动保护(确定学习方向)
A、用户层至内核的隐秘通道
B、浅谈过保护原理
C、实战过XX游戏驱动保护,让OD正常附加调试
D、小结
WIN32子系统:
Win32是Windows的一个子系统,还有另外的子系统如OS/2、POSIX、WOW等。
不同的子系统系统提供了不同的编程接口,即API,一般说的API指的就是Win32 API。
Win32子系统是最纯正的Windows子系统,提供了大量的API函数,程序员只需要熟练的使用这些API就可以写出Windows应用程序,当然程序员也可以考虑第三方库,如VC提供的MFC,但这些库不过是在应用程序和Win32子系统中间加了一层封装而以,没有本质的区别。
Windows API 分为三类 分别是USER函数,GDI函数,和KERNEL函数
USER函数(user32.dll):这类函数管理窗口,菜单,对话框和控件-Shadow SSDT-Dwin32k.sys
GDI函数(gdi32.dll):这类函数在物理设备上执行绘图操作 -Shadow SSDT-Dwin32k.sys
KERNEL函数(kernel32.dll):这类函数管理非GUI资源,例如,进程,线程,文件,和同步服务等.
ntkrnlpa.exe+ntkrnlpa.lib
Native API(Ntdll.dll)
NT native API 是可由用户模式和核心模式程序调用的NT系统服务集接口,它们直
接由NT操作系统实现。
SSDT
SSDT的全称是System Services Descriptor Table,系统服务描述符表。这个表就是一个把ring3的Win32 API和ring0的内核API联系起来。SSDT并不仅仅只包含一个庞大的地址索引表,它还包含着一些其它有用的信息,诸如地址索引的基地址、服务函数个数等。
A、应用层到内核隐秘通道
以OpenProcess为例
XX.dll----kernel32.OpenProcess---ntdll.NtOpenProcess======= ntdll.ZwOpenProcess
7C92D5E0 > B8 7A000000 MOV EAX,7A
7C92D5E5 BA 0003FE7F MOV EDX,7FFE0300
7C92D5EA FF12 CALL DWORD PTR DS:[EDX]
7C92D5EC C2 1000 RETN 10
7FFE0300 7C92E4F0 ntdll.KiFastSystemCall //EAX参数
7C92E4F0 > 8BD4 MOV EDX,ESP
7C92E4F2 0F34 SYSENTER //切换内核
0xA53A41AA 0x805CC40A
jmp ntkrnlpa.NtOpenProcess
内核ntkrnlpa.ZwOpenProcess---SSDT--ntkrnlpa.NtOpenProcess--
B、浅谈过保护原理
调试必经过程-获取进程ID-OpenProcess打开调试进程
WriteProcessMemory()
C、实战过XX游戏驱动保护,让OD正常附加调试
D、小结
shadow ssdt
Ntgdigetpixel 屏幕取点的函数