PWDelete plugin do ApiHooker 2.11

Aby plugin dzialal nalezy w pliku APIconfig.cxc umiescic:
PLUGIN=[ \\.\PWDELETE.vxd ] 
DeleteFileA KERNEL32.DLL 0 2 1 1 1 0000000000000001 1 0 0 1

Dzialanie plugina polega na tym, ze DeleteFileA nigdy nie kasuje pliku, ktory 
mial skasowac a zwraca programowi taka wartosc, ze program mysli, ze jednak plik 
zostal skasowany. Ta ostatnia cecha jest wazna o czym przekonalem sie, gdy 
pewien programik probowal skasowac siebie az do skutku a ze DeleteFileA zwracal 
kod niepowodzenia to wkrotce braklo miejsca na dysku na loga. Tak wiec jesli 
zobaczysz, ze log niepokojaco sie zapelnia to oznacza to, ze program sprawdza 
np. CreateFileA, czy plik wciaz istnieje -> to musisz 'oszukac' wlasnorecznie, 
choc mozliwe, ze nigdy nie bedziesz musial i wystarczy sam plugin.

Jak dokladnie dziala ten plugin? Na wejscie DeleteFileA jest odkladany adres 
ciagu, ktory zawiera nazwe pliku do skasowania. Plugin zmienia ta nazwe pliku na 
ciag pusty a przy wyjsciu z DeleteFileA przywraca stan poprzedni i w eax zwraca 
1; tak wiec program ma wszelkie podstawy, aby myslec, ze plik zostal skasowany a 
co nie jest bez znaczenia kod programu jest nieruszony. Plugin moze sie sprzydac 
przy pracy nad programami, ktore sa potencjalnie niebezpieczne - cos ala 
Restorator. Aktualna wersja plugina jest moze troche zamotana, ale wszystko ma 
swoje przyczyny. Struktura BackupDword a wlasciwie 20 takich struktur 
przechowuje nadpisany bajt z nazwy pliku oraz wartosc unikatowa dla kazdego 
wywolania DeleteFileA ( w INPUT_API pierwsza wolna struktura BackupByte jest 
wypelniana tymi wartosciami). W OUTPUT_API, wsrod struktur BackupByte szukam 
wartosci unikatowej dla aktualnej API, jak znajde - przywracam wartosc i zeruje 
uzyta strukture. Taka zabawa spowodowana jest tym, poniewaz istnieje mozliwosc, 
ze zanim zostanie wywolana OUTPUT_API jakis inny proces sprobuje skasowac jakis 
plik. Jezli nadpisany bajt bylby przechowywany na pojedynczym bajcie to w wyzej 
wymienionej sytuacji przywrocony bajt zmienilby pierwotny ciag.

Aha, plugin nie dziala, gdy kasujemy pliki w Exploratorze. Nie dziala, ale moze 
dzialac, jesli linie "EXCLUDE=[ Apihooke Explorer ]" zamienimy na "EXCLUDE=[ 
Apihooke ]". Po tej zmianie otrzymujemy zabezpieczenie przed omylkowym 
skasowaniem pliku pod Windows, plik znika, ale jak sie nacisnie F5 to 
zmartwychwstanie. ApiHooker moze stanowic ostatnia linie obrony przed rodzinka 
(gorzej jesli przed samym soba ;))- moze zdarzylo Ci sie, jak na jakiejs 
rodzinnej imprezie grupka rozwydrzonych maluchow zapragnela pograc na 
komputerze. Trudno sie wtedy przed tym bronic, bo zwykle wrog ma przewage 
liczebna a caly czas pilnowac komputera takze nie ma sensu. Wystarczy wtedy 
uruchomic ApiHookera... i modlic sie, aby czegos nie wylano na nasz ukochany 
sprzet (przed tym to chyba nic nie uchroni ;)).

pwaity/AAOCG/ pwaity@poczta.onet.pl