[ Assembler ] — начинающим: задаем вопросы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by !_filin_!, 25 May 2007.

  1. Welemir

    Welemir Elder - Старейшина

    Joined:
    10 Jan 2008
    Messages:
    229
    Likes Received:
    11
    Reputations:
    -4
    хз чем они отличаются и какой лучше.Прикручивать к нему надо чтото или можно уже кодить ? если несложно кинь примеры,ибо их там нету.С англ описанием проги справлюсь какнить : ).
     
  2. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Использую masm, удобен в плане наличия большого количества макросов, упрощающих разработку, а еще имеется в самом инсталляторе множество примеров, по которым можно разбираться.
     
  3. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    Они настроены под разные компиляторы.
    --
    Вот тебе пример просто досовстой программы.
    masm:
    Code:
    CSEG segment
    org 100h
    Start:
    
    	mov ah,9h
    	mov dx,offset String
    	int 21h
    
    	int 20h
    
     String db 'Fuck This World$', 0
     CSEG ends
     end Start
    fasm:
    Code:
    use16
    org 100h
    
    	mov ah, 9h
    	mov dx, String
            int 21h
    
            int 20h
    
    String db 'Fuck This World!$', 0
    Если сложно разбираться в подобных IDE -- пиши пока что в блокноте, или Notepad++, как сказал slesh и компилируй вручную.
     
  4. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Не думаю, что пример досовской программы в наше время нужен кому-то)

    На масме простой месажбокс выглядит так:

    Code:
    .386
    .model flat,stdcall
    option casemap:none
    include \masm32\include\windows.inc
    include \masm32\macros\macros.asm
    
    uselib kernel32, user32
    
    .code
    main:
    invoke MessageBox, 0, chr$("Hello, world!"), chr$("Caption"), 0
    invoke ExitProcess, 0
    
    end main
    
    (С использованием стандартных макросов.)

    Для удобства компиляции есть такое: http://kaimi.ru/2009/08/пакет-для-компиляции-masm32/
     
    #764 GRRRL Power, 27 Jul 2010
    Last edited: 27 Jul 2010
  5. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    Ну если на то пошло -- то вот на фасме:
    Code:
    format  pe gui 4.0
    entry   start
    include 'include/win32a.inc'
    include 'include/api/kernel32.inc'
    include 'include/api/user32.inc'
    start:
             invoke  MessageBox, NULL, message, caption, MB_ICONERROR
             invoke  ExitProcess,0
     
    
    caption db 'Antichat', 0
    message db 'Fuck This World',0
    
    data import
    library kernel32,'kernel32.dll', user32, 'user32.dll'
    end data
    
    Только все равно начинать лучше с ДОСа, ИМХО.
     
  6. swt1

    swt1 Elder - Старейшина

    Joined:
    16 Feb 2008
    Messages:
    306
    Likes Received:
    78
    Reputations:
    21
    Ins3t
    MB_ICONERROR >> MB_OK
    :)
     
  7. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    Неужели ты думаешь, что я ошибся? :)
    Так страшнее сторится ,)

    UPD: К стати размер программы 1,00 КБ (1 024 байт)
     
    #767 Ins3t, 27 Jul 2010
    Last edited: 27 Jul 2010
    1 person likes this.
  8. Welemir

    Welemir Elder - Старейшина

    Joined:
    10 Jan 2008
    Messages:
    229
    Likes Received:
    11
    Reputations:
    -4
    Чет не пойму,че я непрально делаю ? копирую код примера или кидаю чужой пример в винасм,жму ctrl+8 и мне выдаёт execution failed.
    masm32 прикрутил с сайта http://www.masm32.com/masmdl.htm.Пути указал к бинарникам,инклуд папке и либ.
     
    #768 Welemir, 29 Jul 2010
    Last edited: 29 Jul 2010
  9. Welemir

    Welemir Elder - Старейшина

    Joined:
    10 Jan 2008
    Messages:
    229
    Likes Received:
    11
    Reputations:
    -4
    Как в MASM без подключения сторонних либ высокого уровня вывести десятичное число ? Да или вообще содержимое регистра ?!
     
  10. Catbert

    Catbert Banned

    Joined:
    29 Jun 2010
    Messages:
    80
    Likes Received:
    27
    Reputations:
    10
    http://support.microsoft.com/kb/85068
     
  11. Welemir

    Welemir Elder - Старейшина

    Joined:
    10 Jan 2008
    Messages:
    229
    Likes Received:
    11
    Reputations:
    -4
    Такой вот код имеется.Должен число вывести по идее:

    Code:
    
    
    .data
        numbers dd 50
        message db "Total is %u",0
    
    
    .data?
    
        buffer  db 10 dup(?)
    
    
    .code
    
    start:
    
    
        invoke  wsprintf,ADDR buffer,ADDR message,addr numbers
        invoke  MessageBox,0,addr buffer,addr buffer,0
        invoke  ExitProcess,0        
    
    end  start
    
    end
    
    
    Все этапы гут,вот только процесс падает сразу.
     
  12. Welemir

    Welemir Elder - Старейшина

    Joined:
    10 Jan 2008
    Messages:
    229
    Likes Received:
    11
    Reputations:
    -4

    мне не мс дос и биос - вин32:)
     
  13. Catbert

    Catbert Banned

    Joined:
    29 Jun 2010
    Messages:
    80
    Likes Received:
    27
    Reputations:
    10
    Замени на

    invoke wsprintf,ADDR buffer,ADDR message,numbers
     
  14. Welemir

    Welemir Elder - Старейшина

    Joined:
    10 Jan 2008
    Messages:
    229
    Likes Received:
    11
    Reputations:
    -4
    Терь работает.Привиреды(
     
  15. Welemir

    Welemir Elder - Старейшина

    Joined:
    10 Jan 2008
    Messages:
    229
    Likes Received:
    11
    Reputations:
    -4
    Возникла пара вопросов по одной из статей на васм:

    http_://www.wasm.ru/article.php?article=1001007

    1) Что означают символы <> в объявлении структуры hitpoint POINT <> ?
    2) Что ещё за нижнее/верхнее слова ?! Не привёл объяснений,мб кто поймёт.
    3) Зачем вообще это and eax,0FFFFx,когда можно использовать mov eax,0 или я чего-то не понял...Поясните,пожалуйста(
    4)

    Code:
    
    .IF MouseClick
    
                   invoke lstrlen,ADDR AppName
                   invoke TextOut,hdc,hitpoint.x,hitpoint.y,ADDR AppName,eax
    
               .ENDIF
    
    
    

    Только смутные догадки,зачем здесь нужна функция вычисления длины
     
  16. 2serg2

    2serg2 New Member

    Joined:
    21 Aug 2007
    Messages:
    24
    Likes Received:
    1
    Reputations:
    0
    Как при помощи OllyDbg 1.1 изменить функцию в dll-файле?

    Мне нужно внести некоторые изменения в один dll-файл.
    EntryPoint = 329C
    ImageBase = 10000000
    Отладчик OllyDbg 1.1 должен остановиться на точке входа:
    VA = ImageBase + ImageBase = 1000329С
    но он останавливается на адресе 0097329С.

    Подскажите, откуда взялась цифра 97? А то я не могу понять, как попасть в одну из секций файла.
     
  17. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Ну дык в DLL Image Base может быть игнорирован. потому что в ней есть в большинстве случаев релоки. которые позволяют её грузить почти в любую область памяти.
    Тока системные некоторые длл загружаются по фиксированному адерсу. А все остальные могут по другим грузиться, в зависимости от занятости этих участков.
     
  18. 2serg2

    2serg2 New Member

    Joined:
    21 Aug 2007
    Messages:
    24
    Likes Received:
    1
    Reputations:
    0
    Я переходил при помощи Ctrl+G на разные секции, но ту которая нужна не могу найти.
    Может, кто-нибудь знает, как узнать виртуальный адрес, с которого начинается одна из секций в dll-файле? Где-нибудь в OllyDbg 1.1 можно посмотреть по каким адресам, какие секции загружены?
     
  19. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Ну вообще они загружены именно по тем адресам который прописаны в таблице секций.
    С учетом адреса загрузки модуля.
     
  20. zeppe1in

    zeppe1in Elder - Старейшина

    Joined:
    12 Jul 2006
    Messages:
    343
    Likes Received:
    66
    Reputations:
    18
    Memory map буковка М сверху