Ассемблер. Начало.

Discussion in 'Реверсинг' started by comstream, 24 Jan 2019.

  1. comstream

    comstream Member

    Joined:
    11 Aug 2015
    Messages:
    35
    Likes Received:
    8
    Reputations:
    0
    Всем привет!

    Не так давно начал изучать взрывной для меня и для моего моСка курс

    «PROGRAMMING ASSEMBLER»

    Код пишу в NotePad++ с подсветкой синтаксиса Assebly, а компилирую и дебажу в Microsoft Visual Studio 15 .

    Выкладываю пример решения простенькой задачи (для меня, как начинающего это было совсем не просто).

    ЗАДАЧА:

    Создайте программу, выводящую на экран все четырёхзначные числа последовательности 1000 1003 1006 1009 1012 1015 ….

    Решение:


    [​IMG]

    [​IMG]

    [​IMG]

    Создайте программу, выводящую на экран все четырёхзначные числа последовательности 1000 1003 1006 1009 1012 1015 ….
    .MODEL FLAT, STDCALL
    SetConsoleTitleA PROTO: DWORD; функция установки заголовка консоли
    GetStdHandle PROTO: DWORD
    WriteConsoleA PROTO: DWORD, DWORD, DWORD, DWORD, DWORD
    ReadConsoleA PROTO: DWORD, DWORD, DWORD, DWORD, DWORD
    ExitProcess PROTO: DWORD
    Sleep PROTO: DWORD
    .const
    sConsoleTitle BYTE «1000 to 9999»,0
    numC WORD 1000d
    numB WORD 9999d
    sleepTime WORD 5000d
    increment WORD 3d
    stringLenght BYTE 6d
    .data
    number BYTE 4 DUP(0),10,13;Массив для хранения разрядов числа (10,13 — символы перевода каретки)

    .code
    main PROC

    ;push OFFSET sConsoleTitle
    ;call SetConsoleTitleA

    INVOKE SetConsoleTitleA, OFFSET sConsoleTitle
    xor ECX,ECX
    mov CX,numC
    ;цикл
    wh1:
    cmp CX,numB
    jnl endwh1
    call show
    add CX, increment
    jmp wh1
    endwh1:

    ;push sleepTime
    ;call Sleep

    INVOKE Sleep, sleepTime

    ;push 0
    ;call ExitProcess

    INVOKE ExitProcess, 0
    ret
    Main ENDP

    ; процедура разбития на разряды
    show PROC
    LOCAL hStdout :DWORD
    push EAX
    INVOKE GetStdHandle, -11
    mov hStdout, EAX
    pop EAX
    ;push EAX
    ;выделение 1000

    mov AX,CX
    xor DX,DX
    mov BX,1000d
    div BX
    or AL,30h
    mov number[0],AL
    ;выделение 100
    mov AX,DX
    xor DX,DX
    mov BX,100d
    div BX
    or AL,30h
    mov number[1],AL
    ;выделение 10
    mov AX,DX
    xor DX,DX
    mov BX,10d
    div BX
    or AL,30h
    mov number[2],AL
    ;выделение единиц
    or DL,30h
    mov number[3],DL
    ;Выводим число
    push ECX
    ;push 0
    ;push 0
    ;push 6d
    ;push OFFSET number
    ;push hStdout
    ;call WriteConsoleA

    INVOKE WriteConsoleA, hStdout, OFFSET number, stringLenght, 0, 0
    pop ECX
    ret
    show ENDP
    END main



    Результат работы:

    [​IMG]

    Поддерживаю критику в комментариях. Спасибо

    С Уважением, C0mstr3am
     
    #1 comstream, 24 Jan 2019
    Last edited: 24 Jan 2019
    BillyBons likes this.
  2. Turanchocks_

    Turanchocks_ Well-Known Member

    Joined:
    11 May 2013
    Messages:
    961
    Likes Received:
    1,922
    Reputations:
    10
    Для начала - прячем код под спойлер. Смайлики в простынях - пригрешение
     
    K800 likes this.
  3. comstream

    comstream Member

    Joined:
    11 Aug 2015
    Messages:
    35
    Likes Received:
    8
    Reputations:
    0
    Исправляю. Спасибо
     
  4. Damper

    Damper Member

    Joined:
    6 Jul 2015
    Messages:
    21
    Likes Received:
    5
    Reputations:
    0
    Для "совсем начала" я бы советовал >>ЭТОТ КУРС<< .Конечно,не без погрехов,но один из простейших и толковых курсов.
     
  5. altblitz

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

    Joined:
    5 Jun 2009
    Messages:
    3,229
    Likes Received:
    2,626
    Reputations:
    230
    Этот MS синтаксис - путь в тупик.
    Правильный ассемблер - на синтаксисе Intel и с ассемблером GAS - GNU Assembler.

    Желаешь научится в asm coding?
    Скачай Turbo Debugger Borland и пару простейших cracks для изучения. Там - всё что нужно на практике.

    Кстати.
    GAS умеет вызывать и обращаться к функциям и процедурам .dll libraries MS.
    GAS умеет выравнивать массивы .data и .code, по 32-битной адресации в памяти, для самого быстрого доступа к данным и ввода инструкций в конвейер процессора для обработки. MS - такого не умеет.
     
  6. t0ma5

    t0ma5 Reservists Of Antichat

    Joined:
    10 Feb 2012
    Messages:
    831
    Likes Received:
    809
    Reputations:
    90
    _________________________
    BillyBons likes this.
  7. altblitz

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

    Joined:
    5 Jun 2009
    Messages:
    3,229
    Likes Received:
    2,626
    Reputations:
    230
    Каким редактором текста пользуется некто comstream?
    Всё кал. Даже mcedit и micro.

    Годно - sublime text. С лицензией от Сноудена.

    [​IMG]
     
  8. t0ma5

    t0ma5 Reservists Of Antichat

    Joined:
    10 Feb 2012
    Messages:
    831
    Likes Received:
    809
    Reputations:
    90
    блиц речь про асм была)) а ты тут баши какие то продвигаешь
     
    _________________________
    Spinus likes this.
  9. altblitz

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

    Joined:
    5 Jun 2009
    Messages:
    3,229
    Likes Received:
    2,626
    Reputations:
    230
    Так или иначе, любой проект начинается с систематизации файлов.

    Кто станет запускать GAS ради одного файла?
    Нужно будет подключить - файлы .desktop и ресурсы с иконками.

    sublime text, обучен в цветовой синтакс и asm.
    Это хотел сказать ))
     
  10. t0ma5

    t0ma5 Reservists Of Antichat

    Joined:
    10 Feb 2012
    Messages:
    831
    Likes Received:
    809
    Reputations:
    90
    извини блиц, но любое телодвижение начинается с "оо прикольная тема, попробую сделать". остальное вторично. если речь идёт о рил разработке, то спорить не буду, там без грамотного редактора нечего делать
     
    _________________________
    altblitz likes this.
  11. altblitz

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

    Joined:
    5 Jun 2009
    Messages:
    3,229
    Likes Received:
    2,626
    Reputations:
    230
    И о чём Блиц говорит?
    Разобрать досконально keygen с само-упаковщиком - и если не хватит терпения, забыть asm.

    5% - творчества, 95% - blood, sweat and tears.
     
  12. nenarokom

    nenarokom New Member

    Joined:
    12 Nov 2015
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
  13. altblitz

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

    Joined:
    5 Jun 2009
    Messages:
    3,229
    Likes Received:
    2,626
    Reputations:
    230
    Из своего опыта или по наслышке?
     
Loading...