OllyAdvanced Bypass
Posted in Inne, assembler on Sierpień 17th, 2010 by GrzonuOstatnio zajmowałem się w dalszym ciągu metodom wykrywania debuggera i odłączenia go.
Przykładowo stosowalem metode o ktorej pisałem 2 posty temu. Kozystala ona z NtQuerySystemInformation z parametrem SystemHandleInformation. Lecz jesli ktos uzywal Ollyego z pluginem OllyAdvanced metoda ta nie sprawdzała się. Sprobowałem wywolac ta funkcje poprzed syscall. Lecz nadal OllyOdvanced modyfikował wyniki.
Podobnie rzecz się miała w przypadku funkcji NtOpenProcess tak ze nie moglem otworzyc procesu debuggera aby pobrac uchwyty, ani znalesc PID procesu rodzica gdyz OllyAdvanced tak zmienial wyniki ze PID procesu rodzica == PID mojego procesu. Jako ze kozystalem z własnej procedury wywolujacej syscall OllyAdvanced musiał albo zakładać hooki w kernelu ale tą metode narazie odrzuciłem wiec jedyna opcja mogl byc sysexit.
Ale jak wiadomo w systemie Windows mamy 2 mechanizmy wywolywania syscalla(sysenter i INT 2E)
sysenter po powrocie do user mode wraca pod KiFastSystemCallRet a INT 2E wraca za instrukcje.
Wystarczy wywolywac te funkcje nie poprzez sysenter a wlasnie przez INT 2E aby OllyAdvanced nie modyfikował wynikow i co za tym idzie aby dało się łatwo wykryć debugger.














