Archive for 25. mai 2010

Programmeerimine: on mul ikka aega olnud :)

mai 25, 2010

Antud postitus mõeldud rohkem süsteemsete asjadega tegelevatele programmeerijatele 😉

Üldiselt enam Windowsi turvalisusega ei tegele ega tema erinevate API’de testimisega, eriti undocumented, mis olid kunagi ikka väga huvitavad, siis avalikustan osa enda “labview” koode. Koodipuhtust ärge otsige sealt, need “lab” tüüpi koodid on testid, et proovida kuidas erinevad asjad töötavad.

Sealt saab osa C struktuure, mille Delphi‘sse üle viisin:
– _IO_STATUS_BLOCK
– _FILE_INFORMATION_CLASS
– SYSTEM_INFORMATION_CLASS
– UNICODE_STRING
– KWAIT_REASON
– TCLIENT_ID
– THREAD_STATE
– SYSTEM_THREADS
– VM_COUNTERS
– IO_COUNTERS
– SYSTEM_PROCESSES
– SYSTEM_HANDLE_TABLE_ENTRY_INFO
– TUnicodeString
– TObjectNameInformation

Seal testprogrammis on kasutatud: NtQuerySystemInformation API’t, mis oli veel mõni aasta tagasi täiesti dokumenteerimata MS poolt.

Selle api abil (_sysProcesses) kuvab kõik töötavad protessid (CreateToolhelp32Snapshot alternatiiv, kuna viimast troojakad häkkisid).

Teine antud test (_sysHandles) kuvab kõik avatud failid / kataloogid, kus nö pide avatud (handle open) ja pole DenyRead lipuga. Vähemalt WinAmp poolt mängitavat lugu kuvas 🙂 Kuna tegemist testidega ammustest aegadest, siis võib seal olla kalakesi, mis ei näita kõiki faile.
Tegelikkuses on mul seal öeldud, et kuva vaid tüübiga 28 objektid, failid / kataloog. Reaalsuses saaks kõik mutex objektid kätte jne. Kuid PIPE puhul dublicatehandlet tehes programm hangub, see on kerneli tasemel bugi.

Programmis olemas ka APIde kasutus:
NtQueryObject API, sisuliselt selle abil saab pideme(handle) järgi teada, mis on failinimi või mutexi nimi jne, väga hea api
NtQueryInformationFile antud API vaid faili pideme spetsiifiline

adjustPrivileges protseduuris tehtud endale SE_DEBUG_NAME õiguste küsimine.

Siit saate programmi ja lähtekoodid download

Panen ka nö konsool programmi parameetrid:

-p kuvab protsessid
või
-f kuvab avatud failid
-d lisaparameeter, mis kirjutab väljundi programmiga samasse kataloogi dump.log

Tänaseks kõik … järgmises postituses näitan koodi, mille abil saab tuvastada muudatusi programmi IAT tabelis 😉

Advertisements