какие апи юзать чтоб писать/читать сектора?

Тема в разделе "WASM.WIN32", создана пользователем doctor_Ice, 2 авг 2005.

  1. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    все заработало! спасибо! а с какого фтп? можна линк?
     
  2. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    так читать то читает но останавливатся не хочет флешка на 128 у меня считалось 273 и читает дальше

    вот код



    .StillCopy:



    ;% read piece

    push 0

    mov eax, esp

    push NULL

    push eax

    push 1024

    push EngineData.DataBuf

    push edi

    call d_w_p [_ReadFile]

    pop ecx





    ;% write piece

    push 0

    mov eax, esp

    push NULL

    push eax

    push ecx

    push EngineData.DataBuf

    push esi

    call d_w_p [_WriteFile]

    pop eax



    cmp eax, 1024

    je .StillCopy



    читает действительно флешку я проверил. и это еще не все!

    я делал имадж вин хексом и то что он считал начинается в моем дампе по адресу 4c00 он что читает не сначала и не все? да и имадж у него 106 мегов вышел. кто что знает подскажите.
     
  3. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    S.T.A.S. (01:54 PM) :

    а GetFileSize возвращает размер 38654705663



    у него флешка на 64 метра не поймем че за фигня.
     
  4. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    GetFileSize вероятно не показатель, но почему ReadFile читает бесконечно ??

    таким образом:
    Код (Text):
    1. #include <windows.h>
    2. #include <stdio.h>
    3. #include <ctype.h>
    4. int main(int argc, char** argv)
    5. {
    6.     HANDLE FlashDrive = NULL;
    7.     unsigned read = 0;
    8.     unsigned block = 0;
    9.  
    10.     if ((FlashDrive = CreateFile("\\\\.\\PHYSICALDRIVE2", GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE,
    11.        NULL, OPEN_EXISTING, 0, NULL)) != INVALID_HANDLE_VALUE)
    12.     {
    13.         unsigned char
    14.         buffer[1024] = {0};
    15.         DWORD status = 0;
    16.  
    17.         while(1)
    18.             if( ReadFile(FlashDrive, buffer, sizeof(buffer)/sizeof(buffer[0]), &status, NULL) )
    19.             {
    20.                 printf("block : %d\tsize : %d\r", block++, status);
    21.                 read += status;
    22.             }
    23.             else
    24.             {
    25.                 printf("E0: %d\n", GetLastError());
    26.                 break;
    27.             }
    28.  
    29.         CloseHandle(FlashDrive);
    30.     }
    31.     else
    32.     printf("E1: %d\n", GetLastError());
    33.  
    34.     printf("TOTAL: %d\n", read);
    35.     return 0;
    36. }
    Кто захочет проверить, незабудте поправить имя устройства PHYSICALDRIVE2 на своё

    [​IMG] 1458759473__read_drive.exe
     
  5. Skif

    Skif New Member

    Публикаций:
    0
    Регистрация:
    31 дек 2003
    Сообщения:
    55
    Цитата из MSDN:





    Есть мнение, что нужно проверять еще и status != 0 :derisive: Для определения размера диска можно, кстати, использовать GetDiskFreeSpace (заодно можно выяснить sectors per cluster и bytes per sector).



    По поводу
    PhysicalDriveX и собственно том на диске это разные вещи.
     
  6. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    спасибо Skif. а смотрел ли ты мой листинг на асме я проверяю количество считанных и записанных байт. те мне винда говорит что она считала столько то байт и столько же пишу.
     
  7. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    doctor_Ice

    > все заработало! спасибо! а с какого фтп? можна линк?

    83.239.33.46

    только он не всегда работает, это мой домашний комп.

    логин WASM, пароля не надо,

    файл cd-cracking.funny-version.for-beer.full.zip
     
  8. Skif

    Skif New Member

    Публикаций:
    0
    Регистрация:
    31 дек 2003
    Сообщения:
    55
    Да, вариант с status != 0 при ReadFile однозначно работоспособный. Проверено на людях :derisive:
     
  9. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Если посмотреть на листинг doctor_Ice, то видно, что там именно status проверяется.

    И постоянно читается блок 1024байт, даже когда емкость флэшки исчерпана.
     
  10. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    kaspersky

    примного благодарен. тока я в сети новичек и не знаю как испльзовать ваши 83.239.33.46. если вым не жалко свои книги давать бесплатно почему на васм не выложите?



    Skif

    не работает и у меня и у S_T_A_S_ я первый затрубил тревогу потом попробовал он на сях и тоже ничего не вышло те как и у меня закуклилось винда готова читать и читать и читать....

    я тупо поставил ограничение больше 129 мего не читать.

    считал-форматнул-записал дамп и данные вернулись на место.

    но это плохой способ считывания путем ограничения условием. нуна считать все что есть а винда дает и дает... оч много...

    в чем затык? нифига не пойму.
     
  11. Skif

    Skif New Member

    Публикаций:
    0
    Регистрация:
    31 дек 2003
    Сообщения:
    55
    doctor_Ice
    Код (Text):
    1.  
    2. .StillCopy:
    3.  
    4. ;% read piece
    5. ...
    6. call d_w_p [_ReadFile]
    7. pop ecx
    8. cmp ecx, 0
    9. je  .StopCopy
    10.  
    11. ;% write piece
    12. ...
    13. jmp .StillCopy
    14. .StopCopy:
    15. ...
    16.  


    Попробуй вот так. По крайней мере, у меня работает аналогичный по смыслу код, написанный на C (дамп содержимого флэшки в файл). Постить тут не хочу, т.к. писано на скорую руку в процессе употребления пива - потом за такой код будет стыдно :derisive:



    Да, кстати, опять-таки MSDN:




    Код (Text):
    1.  
    2. bResult = ReadFile(hFile, &inBuffer, nBytesToRead,
    3. &nBytesRead, NULL) ;
    4. // Check for end of file.
    5. if (bResult &&  nBytesRead == 0)
    6. {
    7.     // we're at the end of the file
    8. }
    9.  
     
  12. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    doctor_Ice

    > примного благодарен. тока я в сети новичек и не знаю

    > как испльзовать ваши 83.239.33.46.

    примерно так (см. аттач)



    > если вым не жалко свои книги давать бесплатно

    > почему на васм не выложите?

    локальный сервак по-любому удобнее.

    я собственно, не против распростанения своих книг,

    но так же не хочу никому их навязывать, чтобы недовольные

    голоса не начинали ворчать, что типа опят тут крисыч

    х.рней занимается...

    домашний ftp в этом плане идеальное решение.

    хочешь - заходи, не хочешь - не надо ;)

    там даже баннеров нету ;)

    [​IMG] 921271985__far_ftp.gif
     
  13. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    Skif



    cmp eax, 1024

    je .StillCopy



    это тоже самое только красивей ибо если там не 1024 то размер куска который удалось считать те последние байты файла сколько их там осталось. тоже опробовано. но я обязательно попробую ваше решение - вот будет круто если заработет.



    kaspersky

    ого... все так странно выглядит... я попробую завтра.

    там только одна книга или много... лучше много а то я многого незнаю. вот бы все так своими знаниями делились!
     
  14. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    doctor_Ice

    > ого... все так странно выглядит...

    это far, в меню дисков и плагинов есть пункт FTP,

    там короче жмешь shift-f4, а дальше разберешься



    > я попробую завтра.

    > там только одна книга или много...

    достаточно много и постепенно выклдываются новые
     
  15. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    Skif

    я попробовал ваш код

    cmp ecx, 0

    je .StopCopy



    ;% write piece

    ...

    jmp .StillCopy

    .StopCopy:

    ...

    ситуация та же копирование никак нехочет останавливатся :dntknw:

    попробуйте сами! поскольку такая ситуация не только у меня но и у S_T_A_S_ то у выс скорее всего будет так же.

    паша уверенность в том что это работает базируется на том что это работает с файлами. я тоже с файлами незнал горя.



    kaspersky

    копируется все кроме зипов :dntknw: это так и должно быть? или всетаки что то нет так? названия книг оч заводит! оч охота познакомится с содержимым. я в принципе могу и купить. тока если налом. без всяких переводов.
     
  16. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    doctor_Ice

    > копируется все кроме зипов :dntknw: это так и должно быть?

    очень странно...

    во всяком случае у других копируются.

    их активно тянут. уже свыше 5 тыс. скачек.



    > или всетаки что то нет так?

    поиграйся с настройками своего ftp-клиента

    или возьми другую файлокачалку



    > названия книг оч заводит!

    это приятно ;)



    > оч охота познакомится с содержимым.

    > я в принципе могу и купить. тока если налом.

    > без всяких переводов.

    а нал куда заносить будешь? ;)
     
  17. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    kaspersky

    скачал все кроме авп.силент.бин он почемуто качается не до конца последние пару кил не докачивает :dntknw:.

    по поводу нала я имел ввиду что может в мосве есть магазин где эти книги продаются. я таких не встречал. правда в москве я недавно.

    СПАСИБО я в предвкушении интересного чтива.

    вот прочитаю - стану умным и тогда.... :)
     
  18. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    doctor_Ice

    > скачал все кроме авп.силент.бин он почемуто качается

    > не до конца последние пару кил не докачивает :dntknw:

    а ну и фиг с ним. там все равно ничего интересного



    > по поводу нала я имел ввиду что может в мосве есть

    > магазин где эти книги продаются.

    своего собственного магазина у меня в москве еще нет ;)

    но на развалах олимпийского мыщъх всегда встречается.

    да и в других магазинах нередкость.



    > СПАСИБО я в предвкушении интересного чтива.

    > вот прочитаю - стану умным и тогда.... :)

    да не за что!
     
  19. Skif

    Skif New Member

    Публикаций:
    0
    Регистрация:
    31 дек 2003
    Сообщения:
    55
    doctor_Ice





    Моя уверенность основана на изучении документации и натурном эксперименте :derisive: В аттаче лежит программка с исходником, которая пишет образ указанного логического диска (\\.\a: и т.п.) в файл.



    К примеру, если A - 3.5" дискета, то mkimage.exe \\.\a: c:\floppy.bin делает ее образ (размером 1 474 560 байт). То же самое проверено и для флэшек.



    Разбирайтесь, все работает.

    [​IMG] 228830773__mkimage.zip
     
  20. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Этот код работает точно также, как и предыдещие. Если читать с логичесгого устройства (\\.\F) то считывает полную ёмкость флэшки. Если же указать \\.\PHYSICALDRIVE2 - то читает бесконечно.