Map and projects (the most frequently updated page of this blog)

2010/07/14

Ne trouvez-vous donc pas, l'histoire un peu répétitive ?

a simple API jump
If you check Wine's source:
void WINAPI RtlCopyLuid (PLUID LuidDest, const LUID *LuidSrc)
{
*LuidDest = *LuidSrc;
}
you see that this little NtDll API is very strong: no check is done, so it could be used literally for anything. A simple way to use it is just to jump, by setting the right arguments.
mov eax, esp
sub eax, 10h
push jump_target
push esp
push eax
call RtlCopyLuid
Jumps is now updated with it. (Part 1 here)



un saut simple via API
Si on regarde le source de Wine:
void WINAPI RtlCopyLuid (PLUID LuidDest, const LUID *LuidSrc)
{
*LuidDest = *LuidSrc;
}
on voit que cette petite API de NtDll est très puissante: aucune vérification, donc elle pourrait être vraiment utilisée pour tout et n'importe quoi. Une façon simple de l'utiliser est pour sauter, en préparant correctement la pile:
mov eax, esp
sub eax, 10h
push jump_target
push esp
push eax
call RtlCopyLuid
cette technique est maintenant ajoutée à Jumps (première partie ici)

1 comment:

  1. also in the same family, the big sister, RtlCopyLuidAndAttributesArray . very similar, could be used for anything.

    http://source.winehq.org/source/dlls/ntdll/rtl.c#L889

    ReplyDelete