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
从此山高路远,纵马扬鞭。愿往后旅途,三冬暖,春不寒,天黑有灯,下雨有伞。此生尽兴,不负勇往。

浙公网安备 33010602011771号