PsChargePoolQuota と PsChargeProcessPoolQuota
Windows XP には PsChargeProcessPoolQuota という関数があるが、 2000 にはない。
afd.sys でそれぞれがコールされてるのだが、役割は同じように見えるので比較してみたところ…
PsChargePoolQuota: mov edi,edi push ebp mov ebp,esp push [ebp+10h] push [ebp+0Ch] push [ebp+08h] call PsChargeProcessPoolQuota test eax,eax jl L0045463C L0042075F: pop ebp retn 000Ch L0045463C: push eax call ExRaiseStatus jmp L0042075F |
2000 | XP | |
PsChargePoolQuota | ExRaiseStatus あり 返り値 viod |
ExRaiseStatus あり 返り値 viod |
PsChargeProcessPoolQuota | - | ExRaiseStatusなし のPsChargePoolQuota 返り値 Status あり |
こんな感じ ・ω・
関数の完全移植になるとちょっとめんどくさい感じですね
あと、XP以降は PS_QUOTA_TYPE に PsPageFile が追加されているようですが、XPが0~2以外の値だとエラー処理を行うのに対して、2000 は未チェックで変なアドレスにアクセスしてもスルーみたいです(((・ω・)))
Comments