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

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

  1. DooD

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

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    urldownloadtofile тоже подойдет
     
    2 people like this.
  2. Ins3t

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

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    ты стало быть шутишь. но если диалог пошел в этом направление - Intel Manuals научит.
     
    #1342 Ins3t, 9 Feb 2014
    Last edited: 9 Feb 2014
  3. DeepBlue7

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

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    Вопрос по ассемблеру.

    Требуется следующие: из внешней программы сгенерировать так называемый codecave и вбить его в процесс. Дело в прочем не сложное, но столкнулся с следующей проблемой:
    команды JE, JLE и т.п. принимают байты, не совпадающие с реальными байтами адреса назначения (т.е. принимает относительный "оффсет"). Но вот относительно чего ?
     
  4. neviens

    neviens Member

    Joined:
    9 Oct 2013
    Messages:
    82
    Likes Received:
    28
    Reputations:
    3
    Относительно начала следующей команды.
     
  5. DooD

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

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    подсмотри адрес в отладчике и вбей его "статично" в код, т.е. не джамп на метку,а джамп на адрес.
     
  6. KIR@PRO

    KIR@PRO from Exception

    Joined:
    26 Dec 2007
    Messages:
    826
    Likes Received:
    291
    Reputations:
    359
    Он то, как раз научит, но ни как не фасмовский мануал! Имейте совесть различать мануалы! Вообще интеловские и амдешные мануалы это библия ассемблера.......
     
    _________________________
    #1346 KIR@PRO, 19 Feb 2014
    Last edited: 19 Feb 2014
  7. Ins3t

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

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    что ты мне пытаешься доказать? я вроде все предельно просто обрисовал. берешь мануал по тому же фасму и читаешь. там чудесно написано как переместить значение из одного регистра в другой, как сравнить значения, умножить одно на другое и вызвать функцию. интеловские мануалы - это всего лишь тутор по работе проца. ассемблер - всего навсего инструмент для работы с ним. и если ты не пишешь свой компилятор ассемблера, или ось какую ниюуть - то тебе по большому счету проебом на то, что на самом деле хранят сегментные регистры, или по каком правилам генерятся опкоды, или как генерятся прерывания. по большому счеты все это имет весьма косвенное отношение к ассемблеру.
     
  8. KIR@PRO

    KIR@PRO from Exception

    Joined:
    26 Dec 2007
    Messages:
    826
    Likes Received:
    291
    Reputations:
    359
    С этого надо было начинать, теперь понятно ваше представление о ассемблере. Печально.

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



    p.s. продолжать дискуссию не вижу смысла, ибо она в таком случае выйдет за рамки топика.
     
    _________________________
    #1348 KIR@PRO, 19 Feb 2014
    Last edited: 19 Feb 2014
  9. Ins3t

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

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    такое впечатление как будто со стенкой разговариваю.

    может поделишься своим пониманием?

    опять же слова общие у тебя. я утверждаю что получится. и не нужно мне про бедного человека заливать, которому совет нужет. тебе важнее сей час правым оказаться, а не помочь ему. твои посты не информативны увы. напоминиет чем то:

    Я: утверждаю, что "XYZ"
    Ты: НЕТ.
    Я: да, аргумент1, аргумент2, аргумент3. либо докажи обратное
    Ты: я же сказал, НЕТ.

    это говорит человек, который несколько дней назад расплескал 3 страницы нытья из за того что его в гугл направили? не смеши меня. лучше поясняй свою точку зрения если она у тебя есть.
     
    1 person likes this.
  10. KIR@PRO

    KIR@PRO from Exception

    Joined:
    26 Dec 2007
    Messages:
    826
    Likes Received:
    291
    Reputations:
    359
    Ins3t Я высказал все в самом первом сообщении еще несколько месяцев назад. Я вижу что тебе Ассемблер знаком поверхностно.

    Конечно можно назвать интеловские мануалы - тутором по процу, но говорить что ассемблер - инструмент для работы с процом это уже грубо. Каждая инструкция ассемблера выступает как источник питания для определенной электрической цепи процессора.


    ты похож на С++ кодера который поглядел в отладчик, потом ознакомился с fasm/masm/nasm/tasm и теперь считает что знает ассемблер....
    Тебе к примеру известны префиксы которые при использовании с интрукциями условного перехода указывают на вероятность перехода ожидаемый/не ожидаемый?


    я тебя умоляю, где ты аргументы приводил? Утрировать у тебя получается красиво! Я же теюе говорю, что по мануалам ни фасама, ни Насама, ни какого либо другого ассемблеру не научишься.... Вот только не надо после этих слов интеловские мануалы приводить, они и есть учебник, но ты не его порекомендовал а мануал от "компилятора".

    Если для тебя нет разницы между интеловскими мануалами и мануалом от fasm, то рекомендую почитать интеловские мануалы.




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


    ты даты посмотри, пустослов... и перечитай внимательней эти 4 страницы...
    Если ты считаешь, что с форума слать в гугл это нормально, то удались и ищи все в гугле, новости на ачате итак прочитать сможешь.



    p.s. модеры, потрите плиз последние сообщения, оффтопа много.
     
    _________________________
    #1350 KIR@PRO, 19 Feb 2014
    Last edited: 19 Feb 2014
  11. MaxFast

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

    Joined:
    12 Oct 2011
    Messages:
    575
    Likes Received:
    149
    Reputations:
    94
    Как добавить инклуд с файлом ресурсов в FASM?
     
  12. KIR@PRO

    KIR@PRO from Exception

    Joined:
    26 Dec 2007
    Messages:
    826
    Likes Received:
    291
    Reputations:
    359

    section '.rsrc' resource from 'my_res.RES'
     
    _________________________
    1 person likes this.
  13. Dimka-nov

    Dimka-nov New Member

    Joined:
    15 Feb 2014
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    В IDA_Pro_Advanced_6.1_Full решил отладить прогу я
    Вот открываю я программу

    [​IMG][/url][​IMG] [/img]

    [​IMG][/URL][/img]

    [​IMG][/URL][/img]

    [​IMG][/URL][/img]

    Вот я ее открыл. Что это за интерфейс? то есть почему я вижу маленьий участок кода?Какие шаги мне придпринять
     
  14. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    632
    Likes Received:
    245
    Reputations:
    42
    Удали иду, это лучший выход в твоем случае
     
  15. Dimka-nov

    Dimka-nov New Member

    Joined:
    15 Feb 2014
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Олли ее просто не открывает. Ну начинает открывать, видно также окошко с предуприждением. Жму окей- раз оп и олли пропадает!
     
  16. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    632
    Likes Received:
    245
    Reputations:
    42
    Скачай сборку, поставь плагины. В проге возможно антиотладка, вот олька и вылетает
     
  17. Dimka-nov

    Dimka-nov New Member

    Joined:
    15 Feb 2014
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Да!! В проге антиотладка, вот олька и вылетает. Против этого помогает Phantom для того чтобы скрыть отладчик нужен всего лишь один плагин. Есть один такой прекрасный плагин - Phantom от Hellspawn-а. Phantom делает свою работу прекрасно, прячет отладчик практически от всего.



    Помогите пожалуста распаковать VMProtect!!!

    Ниже я приведу суперотличнийший туториал по этому протектору, с ним же комплекс настроенных инструментов. (Автору респект 100%!!!!)


    И так. Программа http://webfile.ru/08f06ff4274f699e3d863ad25ae3047e
    Дальше я скачиваю и читаю http://webfile.ru/d7006031b798063b4371890321f2fdc3 .
    Вот не помню, откуда скачал- видемо откуда то с exelab. К стати
    офигено понравилось как написано!!
    И вот, делаю.Ищу OEP (стр 21) .
    Скрин http://webfile.ru/d091ba9c619edbc5c49beb52d3d6d0bf и http://webfile.ru/00f7273d8ae2336ba5e8df0d004d906d . Вопрос- Наверное ерунда какая то вышла.Или нет?
    Я программу запускаю сначала т.е открываю ее в OlliDbg и пытаюсь чирез
    Go To- Expression пoйти туда, куда указал скрипт- на 5FD63D.
    Cvjnhbnt!!!!Я никуда не прихожу! Я тиряюсь- а что же это и что же я делаю..
    Ну просто не знаю, что это, насколько я баран и где!



    В общем. Дийствитильно я на OEP или нет? Помогите понять пожалуйста!! И разобрать прогу дальше.
    Например мне непонятно удалось ли мне встать на EntryPoint этой программы.
    Я сам это не понял. Выполнение скрипта остановилость на строке 5FD63D.
    А самое непонятное, что когда я в отладчике OllyDbg снова открыл программу
    и попробовал стать на этот адрес, я увидел совсем не то, что при выполнении скрипта.
    Увидел отсуцтвие кода, по-сути. Вероятно я туплю зверски.

    Выходит что. Когда скрипт выполняит поиск OEP, я после этого в
    OllyDbg вижу как будто бы вменяемый код, который начинается с 0040100.
    До работы скрипта OllyDbg показывает на тех-же адресах ряды нолей.
    Но может так и надо!

    А на счет OEP пожалуста напишите-то или нет??
     
  18. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    632
    Likes Received:
    245
    Reputations:
    42
    Ты даже на этом форуме, как мудак, умудрился ошибиться разделом. На exelab'e тебе четко сказали, либо обращайся в эту тему https://ssl.exelab.ru/f/index.php?action=vthread&forum=1&topic=17633&page=23, либо отдыхай
     
  19. gidrokcid

    gidrokcid New Member

    Joined:
    21 Oct 2015
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Суть задания такая(VMLab):
    раз в секунду запускается АЦП, измеренное значение напряжения, формируемого
    управляемым источником напряжения, выдается в двоичном виде на линейку светодиодов.

    ; ******************************************************
    ; BASIC .ASM template file for AVR
    ; ******************************************************

    .include "C:\VMLAB\include\m88def.inc"

    ; Define here the variables
    ;
    .def temp =r16

    ; Define here Reset and interrupt vectors, if any
    ;
    reset:
    rjmp start
    reti ; Addr $01
    reti ; Addr $02
    reti ; Addr $03
    reti ; Addr $04
    reti ; Addr $05
    reti ; Addr $06 Use 'rjmp myVector'
    reti ; Addr $07 to define a interrupt vector
    reti ; Addr $08
    reti ; Addr $09
    reti ; Addr $0A
    reti ; Addr $0B This is just an example
    reti
    rjmp TIM1_OVF
    reti ; Addr $0F
    reti ; Addr $10
    reti ; Addr $11
    reti ; Addr $12
    reti ; Addr $13
    reti ; Addr $14
    rjmp interraptADC ; Addr $15 ADC Conversion Complete


    ; Program starts here after Reset
    ;
    start:
    ldi r16, low(RAMEND)
    out SPL, r16

    ldi r16, high(RAMEND)
    out SPH, r16

    ldi r16, 0b00011111
    out DDRB, r16

    ldi r16, (1<<CS10)
    sts TCCR1B, r16

    ldi r16, (1<<TOIE1)
    sts TIMSK1, r16


    cbi DDRC, 0


    ldi r16, (1<<REFS0)|(0<<REFS1)|(1<<ADLAR)|(0<<MUX3)|(0<<MUX2)|(0<<MUX1)|(0<<MUX0) ;îïîðíîå íàðÿæåíèå - íàïðÿæåíèå ïèòàíèÿ...PC0 - íîæêà ÀÖÏ
    sts ADMUX, r16

    ldi r16, (1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADIE)|(1<<ADPS2) ;âêë ÀÖÏ...ðàçðåøèë ïðåðûâàíèå îò ÀÖÏ...âûáîð íåïðåðûâíîãî ïðåîáðàçîâàíèÿ...ðàçðåøèë ïðåðûâàíèå ïî ÀÖÏ...÷àñòîòà 1 ÌÃö
    sts ADCSRA, r16

    ldi r16, (1<<ADTS2)|(1<<ADTS1)|(1<<ADTS0)
    sts ADCSRB, r16

    sei

    forever:

    rjmp forever

    TIM1_OVF:
    sbis interraptADC:
    rjmp mll
    cbi interraptADC:
    reti
    mll:
    sbi interraptADC:
    reti

    interraptADC:
    ldi r16, (0<<PORTB4)|(0<<PORTB3)|(0<<PORTB2)|(0<<PORTB1)|(0<<PORTB0)
    out PORTB, r16

    lds r16, ADCH
    mov r17, r16

    subi r17, 0b11111111 ;255

    brsh metka1 ;ïåðåéòè åñëè r16 >= 255

    mov r17, r16

    subi r17, 0b11001100 ;204
    brsh metka2 ;ïåðåéòè åñëè r16 >= 205

    mov r17, r16

    subi r17, 0b10011001 ;153
    brsh metka3 ;ïåðåéòè åñëè r16 >= 153

    mov r17, r16

    subi r17, 0b10011001 ;102
    brsh metka4 ;ïåðåéòè åñëè r16 >= 102

    mov r17, r16

    subi r17, 0b10011001 ;51
    brsh metka4 ;ïåðåéòè åñëè r16 >= 51

    reti

    metka1:
    ldi r16, (1<<PORTB4)|(1<<PORTB3)|(1<<PORTB2)|(1<<PORTB1)|(1<<PORTB0)
    out PORTB, r16
    reti
    metka2:
    ldi r16, (1<<PORTB3)|(1<<PORTB2)|(1<<PORTB1)|(1<<PORTB0)
    out PORTB, r16
    reti
    metka3:
    ldi r16, (1<<PORTB2)|(1<<PORTB1)|(1<<PORTB0)
    out PORTB, r16
    reti
    metka4:
    ldi r16, (1<<PORTB1)|(1<<PORTB0)
    out PORTB, r16
    reti
    metka5:
    ldi r16, (1<<PORTB0)
    out PORTB, r16
    reti

    не могу понять как правильно настроить ADCSRB под Atmega88
    и как правильно прописать запуск Ацп в таймере
    это небольшой набросок мой программы
     
  20. Koroz147

    Koroz147 New Member

    Joined:
    6 Dec 2015
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Компоновка ассемблерной программы с программой С++. Посчитать количество повторений первого элемента в пятисимвольном массиве.

    Инициализацию массива делаю в С++, дальше передаю указатель на массив в ассемблерную функцию
    и ожидаю получить результат(количество элементом массива эквивалентных первому).

    Не понимаю в чем ошибка, перепробовал уже всё что угодно. В одних случаях возвращает что-то вроде 6543, а сейчас возвращает "1".

    Прошу помощи.

    Ассемблерная программа


    1. .486
      .model
      flat, stdcall
      option casemap:none

      .code
      F proc, arr:DWORD

      xor ebx,ebx
      xor ecx,ecx
      mov esi,0

      mov eax, arr[0]

      mov cx, 5
      start_loop:
      mov edx, arr[esi]
      cmp eax, edx

      jz M2

      M1:
      inc esi

      loop start_loop
      jmp end_loop

      M2:
      add ebx,1
      inc esi

      loop start_loop

      end_loop:
      mov eax,ebx

      RET
      F endp
      end
      Программа на С++:

      1. #include <iostream>
        #include <Windows.h>

        using namespace std;
        #define USINT unsigned short int

        unsigned short int arr[5];
        unsigned short int num=5;
        unsigned short int number=0;
        extern "C" int _stdcall F(USINT*);

        int main()
        {
        SetConsoleCP(1251);
        SetConsoleOutputCP(1251);
        cout << "Введите элементы массива:" << endl;
        for (unsigned short int i = 0; i < 5; i++)
        {
        cout << i << ": ";
        cin >> arr;
        }

        number=0;
        number=F(arr);

        cout<<endl<<"Количество повторений первого элемента = "<<number<<endl;
        system("pause");
        return 0;
        }