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
    Joined:
    Jun 11, 2008
    Messages:
    266
    я в этой ольке ваще ниче непанимаю :\
     
  2. Flint_ta

    Flint_ta New Member

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

    fragment New Member

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

    fragment New Member

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

    XshStasX New Member

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

    fragment New Member

    Blog Posts:
    0
    Joined:
    Jun 11, 2008
    Messages:
    266
    [​IMG]

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

    fragment New Member

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

    XshStasX New Member

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

    fragment New Member

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

    fragment New Member

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

    XshStasX New Member

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

    fragment New Member

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

    XshStasX New Member

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

    fragment New Member

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

    Flint_ta New Member

    Blog Posts:
    0
    Joined:
    May 25, 2008
    Messages:
    312
    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
    Joined:
    Jun 11, 2008
    Messages:
    266
    Да спасибо , все стало работать нормально!
    А почему именно 0Ch нужно прибавлять , я немогу в уме что-то пикинуть :dntknw:
     
  17. fragment

    fragment New Member

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

    Flint_ta New Member

    Blog Posts:
    0
    Joined:
    May 25, 2008
    Messages:
    312
    Три аргумента по 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
    Joined:
    Jun 11, 2008
    Messages:
    266
    я чето всеравно с трудом соображаю как это, но ничего, думаю со времянем пойму
     
  20. fragment

    fragment New Member

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

    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.