На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
Страницы: (3) 1 [2] 3  все  ( Перейти к последнему сообщению )  
> Прямой доступ к диску
    Цитата Velin @
    Хм.А что помогать? Прототипы функций у тебя есть? Описания? Ну вообще, если хочеш, давай в асю<203-529-473>, поболтаем.

    Нет к сожалению у меня нет ни деклараций функций, ни типов. Т.е. по работе с файлами через Zw функйии вообще ничего нет.

    2 ALXR У меня твой код показывает серийник 0000 - 0100 - это явно не серийник =(
      Цитата SCINER @
      Цитата Velin @
      Хм.А что помогать? Прототипы функций у тебя есть? Описания? Ну вообще, если хочеш, давай в асю<203-529-473>, поболтаем.

      Нет к сожалению у меня нет ни деклараций функций, ни типов. Т.е. по работе с файлами через Zw функйии вообще ничего нет.

      2 ALXR У меня твой код показывает серийник 0000 - 0100 - это явно не серийник =(

      Ах, ну да, забыл дополнить. Этот адрес ФС-зависимый. На дисках с FAT32 у меня возвращается верный серийный номер, а на NTFS то же самое 0000 - 0100. В NTFS он лежит по адресу 48h.

      Вот, работающий на NTFS код:
      ExpandedWrap disabled
        Option Explicit
         
        Private Const OPEN_EXISTING = 3
        Private Const FILE_SHARE_READ = &H1
        Private Const FILE_SHARE_WRITE = &H2
        Private Const GENERIC_READ = &H80000000
        Private Const GENERIC_WRITE = &H40000000
         
        Private Type OVERLAPPED
          Internal As Long
          InternalHigh As Long
          offset As Long
          OffsetHigh As Long
          hEvent As Long
        End Type
         
        Private Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
        Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
        Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
        Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As OVERLAPPED) As Long
         
        Private Sub Form_Load()
          Dim MBR() As Byte
          Dim OV As OVERLAPPED
          Dim br As Long
          Dim hDrive As Long, s As String, serial As String
          ReDim MBR(0 To 511)
          hDrive = CreateFile("\\.\C:", GENERIC_READ Or GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
          Call SetFilePointer(hDrive, 0, 0, 0)
          Call ReadFile(hDrive, MBR(0), 512, br, OV)
          Call CloseHandle(hDrive)
          s = StrConv(MBR, vbUnicode)
          serial = Mid(s, 73, 4)
          MsgBox "Серийный номер устройства: " & ClipHex(Mid(serial, 4, 1)) & ClipHex(Mid(serial, 3, 1)) & _
                                                 " - " & _
                                                 ClipHex(Mid(serial, 2, 1)) & ClipHex(Mid(serial, 1, 1))
          End
        End Sub
         
        Function ClipHex(ByVal s As String) As String
        If s <> "" Then ClipHex = Right("00" & Hex(Asc(Left(s, 1))), 2)
        End Function


      2Velin:
      а) то что хранится у скинера в переменной MBR это никакая не MBR(он сам это сказал) - увы и ах, но это все-таки MBR. В этом вопросе, по-видимому, Вы не очень компетенты и поэтому воздержитесь от резких высказываний.
      б) И как следствие, приведенное вами "доказательство" наличия в MBR серийного номера не верно - доказательство (без кавычек!) выше.
        Цитата
        увы и ах, но это все-таки MBR.
        Говорить это не черное а белое это конечно весьма аргументированно.
        Цитата
        В этом вопросе, по-видимому, Вы не очень компетенты
        Кажеться, я где то уже описывал свойство некоторых людей выдавать свое невежество за невежество других.
        ------
        2SCINER, я не знаю, какие прототипы у Zw-функций в um(вероятно, такие же), но в km прототип такой:
        ExpandedWrap disabled
          NTSTATUS
            ZwCreateFile(
              OUT PHANDLE  FileHandle,
              IN ACCESS_MASK  DesiredAccess,
              IN POBJECT_ATTRIBUTES  ObjectAttributes,
              OUT PIO_STATUS_BLOCK  IoStatusBlock,
              IN PLARGE_INTEGER  AllocationSize  OPTIONAL,
              IN ULONG  FileAttributes,
              IN ULONG  ShareAccess,
              IN ULONG  CreateDisposition,
              IN ULONG  CreateOptions,
              IN PVOID  EaBuffer  OPTIONAL,
              IN ULONG  EaLength
              );
           
          NTSTATUS
            ZwOpenFile(
              OUT PHANDLE  FileHandle,
              IN ACCESS_MASK  DesiredAccess,
              IN POBJECT_ATTRIBUTES  ObjectAttributes,
              OUT PIO_STATUS_BLOCK  IoStatusBlock,
              IN ULONG  ShareAccess,
              IN ULONG  OpenOptions
              );
        Сообщение отредактировано: Velin -
          Цитата Velin @
          Цитата
          увы и ах, но это все-таки MBR.
          Говорить это не черное а белое это конечно весьма аргументированно.
          Цитата
          В этом вопросе, по-видимому, Вы не очень компетенты
          Кажеться, я где то уже описывал свойство некоторых людей выдавать свое невежество за невежество других.

          1. Я считаю, что выше приведенный мною код вполне аргументирует мое высказывание. Сделайте резервную копию MBR с помощью какой-либо программы по работе с жесткими дисками и сравните полученные данные.
          2. "Стрелки переводить" - не хорошо. В последнем Вашем сообщении не вижу ничего, что противоречит предыдущему моему сообщению, однако Вы продолжаете "гнуть" свое. Чье же здесь невежество?

          Кстати, номер <203-529-473> не найден. Я бы хотел пообщаться с Вами в icq.
            2SCINER: У тебя объявления NtCreateFile есть? Где ты ее будеш использовать?
            2ALXR:Тогда дай свой, если не найден. А что противоречит - ты в своем коде читаеш header логического диска, видиш там серийный номер. Так? А потом вдруг утверждаеш, что серийный номер хранится в MBR :blink:
              Основные недостатки:
              ALXR, в твоем коде вылазит месаг бокс и пишет что мол такой-то такой-то серийный номер устройства... Так какого устройства? Если жесткача, то какого? если их ДВА в системе и где второй серийник?

              :offtop:

              Velin!!!
              ALXR!!!
              Развели тут спор! для чего вам приват?! спорьте там :angry:

              Добавлено
              Опять форум глючит <_<
              Сообщение отредактировано: Zhenya -
                Цитата
                такой-то такой-то серийный номер устройства.
                Не устройства, а логического диска. Из кода лекго понять, что это серийный номер диска C.
                  Цитата SCINER @
                  таким методом найти и скрыть файл с диска

                  а чем ZwQueryDirectoryFile не утраивает?
                    Цитата Алиса @
                    Цитата SCINER @
                    таким методом найти и скрыть файл с диска

                    а чем ZwQueryDirectoryFile не утраивает?

                    устроит, если примерчиком поделишься или почитать чего нить подкинешь по теме ;)
                      в архиве простой пример перечисления без FindFile...
                      но на счет скрытия <_<
                      ZwQueryDirectoryFile надо перехватывать (хорошо бы на уровне системы в r0). здесь VB не катит:(
                      блин, файл не цепляется.

                      архив тебе в мыло ушел.
                      Сообщение отредактировано: Алиса -
                        Цитата Алиса @
                        в архиве простой пример перечисления без FindFile...
                        но на счет скрытия <_<
                        ZwQueryDirectoryFile надо перехватывать (хорошо бы на уровне системы в r0). здесь VB не катит:(
                        блин, файл не цепляется.

                        архив тебе в мыло ушел.

                        Спасибо, будем посмотреть.
                        А зачем перехватывать, я просто хотел нарушить немного структуру файла, чтобы его вообще не видели никто кроме меня.
                          Цитата
                          А зачем перехватывать, я просто хотел нарушить немного структуру файла, чтобы его вообще не видели никто кроме меня.
                          А вас не беспокоит, что в один прекрасный момент драйвер файловой системы то же "не увидит" Ваш файл и запишет на его место что-нибудь еще?
                            Цитата Velin @
                            Цитата
                            А зачем перехватывать, я просто хотел нарушить немного структуру файла, чтобы его вообще не видели никто кроме меня.
                            А вас не беспокоит, что в один прекрасный момент драйвер файловой системы то же "не увидит" Ваш файл и запишет на его место что-нибудь еще?

                            Но Windows не запишет в занятый сектор.
                            А файл ведь можно уместить и просто в частично занятом секторе.
                              Цитата
                              Но Windows не запишет в занятый сектор
                              Ну вообщето, ячейки для файлов в ФС называются кластерами. Как раз записать в частично занятый сектор Windows может запрасто. Проблема в том, что checkdisk может увидеть файл, запись о котором есть в ФС, но которого нету не в одной папке. И как Вы думаете, что он с ним сделает?
                              Сообщение отредактировано: Velin -
                                Цитата
                                И как Вы думаете, что он с ним сделает?

                                ни чего!! такой метод применяеться при очистке оглавления. т.е. очистке таблицы файлов. просто файловая система может подумать что на этом месте пусто и записать туда новые данные. помоему такая фишка вообше на NTFS не получиться.
                                SCINER, а ты выдел где ни нить такую реализацию??
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (3) 1 [2] 3  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.1113 ]   [ 16 queries used ]   [ Generated: 18.06.26, 15:10 GMT ]