WriteFile

Discussion in 'WASM.BEGINNERS' started by fragment, May 11, 2010.

Thread Status:
Not open for further replies.
  1. fragment

    fragment New Member

    Blog Posts:
    0
    я в этой ольке ваще ниче непанимаю :\
     
  2. Flint_ta

    Flint_ta New Member

    Blog Posts:
    0
    Человек пишуший код на ассемблере априори должен знать как пользоваться отладчиком.
     
  3. fragment

    fragment New Member

    Blog Posts:
    0
    помогите с процедурой то, а то я что-то торможу
     
  4. fragment

    fragment New Member

    Blog Posts:
    0
    или она так не запускается? нада что ддл делать для одной процедуры?
     
  5. XshStasX

    XshStasX New Member

    Blog Posts:
    0
    fragment
    Если не секрет ты хотя б одну книжку по асму читал? Какую ??
     
  6. fragment

    fragment New Member

    Blog Posts:
    0
    [​IMG]

    ды как так то? :dntknw:
     
  7. fragment

    fragment New Member

    Blog Posts:
    0
    читал пару, но у меня их нет под рукой щас... я их подарил
     
  8. XshStasX

    XshStasX New Member

    Blog Posts:
    0
    ты об этом : call ErrorP ?
    так это вообще не понятно что...
    Чему равна ErrorP ?
    По той картинку которую выложил можно только предсказаниями заниматься конца света ).
     
  9. fragment

    fragment New Member

    Blog Posts:
    0
    я так панимаю программа падает в мамент перезаписи буфера функцмей wsprintfA
    как узнать? че мне делать? помагите плиз
     
  10. fragment

    fragment New Member

    Blog Posts:
    0
    ну я вообще думал что так вызываются процедуры
     
  11. XshStasX

    XshStasX New Member

    Blog Posts:
    0
    Какие процедуры ?
    Что делает call знаешь ?
     
  12. fragment

    fragment New Member

    Blog Posts:
    0
    jump на указанную метку... в какомто другом компиляторе так вроде можно было вызывать функции, а как ето правельно делается ? и че делать с буфером ?
     
  13. XshStasX

    XshStasX New Member

    Blog Posts:
    0
    Не на метку а на адрес, просто компилятор сам вместо метки ставит адрес.
    А когда ты используешь call это не совсем джамп, тоесть там push eip + jmp
    В общем гугли эти книжки:
    АССЕМБЛЕР на примерах.
    Искусство программирования на Ассемблере
    Assembler для DOS, Windows и UNIX.
     
  14. fragment

    fragment New Member

    Blog Posts:
    0
    Книжки нада пакупать, не могу читать на компе долго. Но спасибо.
    Я вкурсе что он прыгает на метку (адрес в твоем отладчике) .. не могу просто в премерах найти как правильно вызывать такие функции, может один премер мне пакажите?
     
  15. Flint_ta

    Flint_ta New Member

    Blog Posts:
    0
    fragment, если бы вы юзали отладчик, то увидели бы что функа wsprintfA за собой не прибирает стэк, и то что вы передали ей при вызове так и остается на вершине стэка. Т.о в функция ErrorP не может правильно выйти по ret. Нужно добавить add esp, 0ch после call wsprintfA
    Code (Text):
    1. ....
    2. call wsprintfA
    3. add esp, 0ch
     
  16. fragment

    fragment New Member

    Blog Posts:
    0
    Да спасибо , все стало работать нормально!
    А почему именно 0Ch нужно прибавлять , я немогу в уме что-то пикинуть :dntknw:
     
  17. fragment

    fragment New Member

    Blog Posts:
    0
    А с помощью какой функции мне изменить права для файла?
     
  18. Flint_ta

    Flint_ta New Member

    Blog Posts:
    0
    Три аргумента по 4 байта каждый
    Code (Text):
    1.     push eax - 3
    2.     push offset sfc - 2
    3.     push offset ErrorCode - 1
    4.     call wsprintfA
    3*4 = 12 = 0ch

    По видимому это UAC не дает создать файл
     
  19. fragment

    fragment New Member

    Blog Posts:
    0
    я чето всеравно с трудом соображаю как это, но ничего, думаю со времянем пойму
     
  20. fragment

    fragment New Member

    Blog Posts:
    0
    ммм я плохо знаю язык , но не ета ли функция каторая мне нужна

    Code (Text):
    1. char _devicename[] = "\\\\.\\A:";
    2. _devicename[4] = Drive_letter;
    3. hDevice = CreateFileA( _devicename,
    4. GENERIC_READ,
    5. FILE_SHARE_READ | FILE_SHARE_WRITE,
    6. NULL,
    7. OPEN_EXISTING,
    8. 0,
    9. NULL);
    10. if (hDevice == INVALID_HANDLE_VALUE)
    11. return ;
    12.  
    13. SetFilePointer (hDevice, (i*SectorNumber_for_each_read*512),
    14. NULL,FILE_BEGIN);
    15.  
    16. if (!WriteFile (hDevice, sectorBuffer, 512*SectorNumber_for_each_read,
    17. &numberOfBytesWrite, NULL) )
    18. {
    19. win = GetLastError();
    20. break;
    21. }
    22. CloseHandle(hDevice);
    23. // win = 5 = permition denied
    понимаю ето SetFilePointer ? или не то?



    .....

    Чтобы извлечь дескриптор безопасности объекта файла или каталога, вызовите функцию GetNamedSecurityInfo или GetSecurityInfo. Чтобы изменить дескриптор безопасности объекта файла или каталога, вызовите функцию SetNamedSecurityInfo или SetSecurityInfo.

    думаю тогда вот это паможет, буду пробывать
     
Thread Status:
Not open for further replies.