Сейчас на форуме: Magister Yoda, subword (+9 невидимых)

 eXeL@B —› Основной форум —› Как определить SerailVolume через CreateFileW ?
Посл.ответ Сообщение


Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 05 ноября 2008 18:49 · Поправил: ToBad
· Личное сообщение · #1

Хитрая программа делает вызов CreateFileW к kernel32.dll и выцепляет серийник диска на котором файл. GetVolumeInformationA я перехватываю и всё подменяю.
Может в недрах CreateFileW идёт вызов GetVolumeInformationW ?
Вопрос в том, где мне найти hdd serial после CreateFileW и как это делает программа?
Реверсить программу не вариант, там екзекриптор был, это длл и постоянно всё валится, код погаженный.
Даже на работу с реестром и на работу с файлами оля не браякется, керберос вызовов не видит, короче попа.
Хуки библеотечкой Рема - помогают.




Ранг: 303.7 (мудрец), 4thx
Активность: 0.190
Статус: Участник
tPORt Manager

Создано: 05 ноября 2008 19:14
· Личное сообщение · #2

Возможно открывается диск на прямой доступ и читается серийник




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 05 ноября 2008 19:15 · Поправил: Hellspawn
· Личное сообщение · #3

Code:
  1.      driveName := PChar(Format('\.\PhysicalDrive%d', [drive]));
  2.      hPhysicalDriveIOCTL := CreateFile(driveName,
  3.        GENERIC_READ or GENERIC_WRITE,
  4.        FILE_SHARE_READ or FILE_SHARE_WRITE, nil,
  5.        OPEN_EXISTING, 0, 0);
  6.     ...
  7.     DeviceIoControl(...,DFP_RECEIVE_DRIVE_DATA,...);

как то так

з.ы. запусти её под гостем, чтобы проверить...

-----
[nice coder and reverser]




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 05 ноября 2008 20:11 · Поправил: progopis
· Личное сообщение · #4

Hellspawn
Ну попадалась мне программа, которая юзала именно эти API.
А что будет под гостем? Нет доступа?
Add:
Да я уже прикинул... Вполне логично




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 05 ноября 2008 20:13
· Личное сообщение · #5

progopis

прав не хватит на открытие

-----
[nice coder and reverser]





Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 05 ноября 2008 20:16
· Личное сообщение · #6

Я нахожусь уже в перехваченой CreateFileW. Сейчас в перехваченных вызовах GetVolumeInformationA и W делаю бесконечный цикл. Программа естественно зависает, но Process monitor успевает заметить это:

Code:
  1. Operation: CreateFile
  2. Path: L:\Windows\System32\kernel32.dll
  3. Access:  Generic Read
  4. Disposition:      Open
  5. Options: Synchronous IO Non-Alert, Non-Directory File
  6. Attributes:       n/a
  7. ShareMode:        Read, Write
  8. AllocationSize:   n/a
  9. Operation: QueryInformationVolume
  10. Path: L:\Windows\System32\kernel32.dll
  11. VolumeCreationTime:        n/a
  12. VolumeSerialNumber:        5544-3322
  13. SupportsObjects:  False
  14. VolumeLabel:      
  15. Operation: QueryAllInformationFile
  16. Path: L:\Windows\System32\kernel32.dll
  17. CreationTime:     05.11.2008 16:35:06
  18. LastAccessTime:   05.11.2008
  19. LastWriteTime:    18.02.2009 17:53:58
  20. ChangeTime:       n/a
  21. FileAttributes:   A
  22. AllocationSize:   991 232
  23. EndOfFile:        990 720
  24. NumberOfLinks:    1
  25. DeletePending:    False
  26. Directory:        False
  27. IndexNumber:      0xe2fe40
  28. EaSize:  0
  29. Access:  Generic Read
  30. Position:         0
  31. Mode:    Synchronous IO Non-Alert
  32. AlignmentRequirement:      Word
  33. Operation: CloseFile
  34. Path: L:\Windows\System32\kernel32.dll


Как видно каким-то образом серийничек проскакивает...




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 05 ноября 2008 20:21
· Личное сообщение · #7

возможно он копирует kerne32 куда-нить под другим именем и потом подгружает её
или дёргает более низкие апи:

ntdll.ZwOpenFile
ntdll.ZwQueryVolumeInformationFile

-----
[nice coder and reverser]




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 05 ноября 2008 20:35
· Личное сообщение · #8

ToBad
А что за программа если не секрет? Вместе веселей было бы посмотреть...

[Offtop] "L:\Wind..." - сколько же у тебя разделов?[/Offtop]




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 05 ноября 2008 22:47
· Личное сообщение · #9

Hellspawn пишет:
возможно он копирует kerne32 куда-нить под другим именем и потом подгружает её


Не, это исключено. Проверял по-разному.

Hellspawn пишет:
ntdll.ZwQueryVolumeInformationFile


Да ! Это оно !!! Супер !
Вызова идёт 3. В первых двух в возвращающем буфере 3-м dword-ом идёт серийник, возврат третьего вызова его не содержит... Буду разбираться с тем, что на входе...

Спасибо всем отписавшимся !


 eXeL@B —› Основной форум —› Как определить SerailVolume через CreateFileW ?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати