NtGdiFillPath内核函数逆向分析


0x00前言

函数作用关闭当前路径中的任何打开的图形,并使用当前笔刷和多边形填充模式填充路径的内部。

0x01分析

NtGdiFillPath会直接调用EPATHOBJ::bStrokeAndOrFill  进行当前画笔填充路径的内部

EPATHOBJ::bStrokeAndOrFill(&ppo, (struct XDCOBJ *)v9, 0i64, 0i64, 2u);

第一步判断ppo->cCurves 是否空 有无点,接着模2 就是清除低位1  更具点的类型修改不同a5值

DestSurfaceAccessCheck 调用成功走

EPATHOBJ::bSimpleFill

 接着调用EngFillPath 进行路径填写

 EngFastFill 文件填写 整体流程关键函数就是

win32kfull!bFill
win32kfull!bEngFastFillEnum+0xcd15c
win32kfull!bPaintPath+0xdc
win32kfull!EngFastFill+0xa3
win32kfull!EngFillPath+0x133
win32kfull!EPATHOBJ::bSimpleFill+0x10b
win32kfull!EPATHOBJ::bStrokeAndOrFill+0x2fe
win32kfull!NtGdiFillPath+0xa6

相关