IsBadWritePtr を書き換えてみた

IsBadXxxxPtr系APIは使用禁止 - yohhoyの日記
こんなのを見かけたのだけど
拡張カーネルの中で実はIsBadWritePtrを使っている ・ω・

_declspec(naked) _declspec(dllexport) bool IsBadReadPtr2(void* p,int size)
{
_asm{
push ebp
mov ebp,esp
sub esp,0x20
push esi

push 1ch
lea edx,[ebp-0x20]
push edx
mov esi,[ebp+0xc]
add esi,[ebp+0x8]
push DWORD PTR[ebp+8]
call DWORD PTR VirtualQuery
test        eax,eax 
jz L1
xor eax,eax
sub esi,dword ptr [ebp-14h] 
sub esi,dword ptr [ebp-20h] 
jnc L1
mov     edx,dword ptr [ebp-0Ch] 
test edx,0x101  // PAGE_NOACCESS | PAGE_GUARD
jz L2
and edx,0xcc // PAGE_READWRITE | PAGE_WRITECOPY |   PAGE_EXECUTE_READWRITE|PAGE_EXECUTE_WRITECOPY
neg     edx
sbb     edx,edx
add     edx,1
                mov eax,edx
jmp     L2
L1: inc eax
L2:
pop esi
add esp,0x20
leave
retn 8
}
}
and edx,0xcc のところを変えれば、IsBadReadになるね・ω・

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です