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

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

  1. neviens

    neviens Member

    Joined:
    9 Oct 2013
    Messages:
    82
    Likes Received:
    28
    Reputations:
    3
    ;...
    F proc uses esi arr
    mov esi, arr
    xor eax, eax
    mov cx, [esi]
    mov edx, 1​
    L0:
    cmp [esi+2*edx], cx
    jne @F

    inc eax​
    @@:
    inc edx
    cmp edx, 5
    jb L0

    ret​
    F endp
    end
     
  2. st55

    st55 Level 8

    Joined:
    20 Apr 2016
    Messages:
    193
    Likes Received:
    338
    Reputations:
    47
    Есть строка
    PHP:
    hash db 'test'0
    Как мне содержимое hash поместить сюда (в сам параметр)?
    PHP:
    invoke  InternetOpenUrl, [hs], 'http://127.0.0.1:81/report.php?hash=1'0000
     
  3. neviens

    neviens Member

    Joined:
    9 Oct 2013
    Messages:
    82
    Likes Received:
    28
    Reputations:
    3
    .686
    .model flat, stdcall
    option casemap:none
    include \masm32\include\windows.inc
    include \masm32\include\wininet.inc
    include \masm32\include\kernel32.inc
    includelib \masm32\lib\wininet.lib
    includelib \masm32\lib\kernel32.lib
    include \masm32\Macros\Strings.mac

    .const
    hash db 'test', 0
    .data
    hs dd ?

    .code
    start:
    invoke InternetOpenUrlA, hs, $CTA0("http://127.0.0.1:81/report.php?hash=1"), OFFSET hash, 0, 0, 0
    invoke ExitProcess, 0
    END start
     
  4. skibidi

    skibidi Banned

    Joined:
    31 Oct 2018
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    А какими платформами вы пользуетесь для работы с асм? Или тут все на линухе и ни в чем не нуждаются?)
     
  5. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    632
    Likes Received:
    245
    Reputations:
    42
    а что, в линухе асм отменили? лично я юзаю масм под вин.
     
  6. FK-

    FK- Member

    Joined:
    25 Dec 2018
    Messages:
    31
    Likes Received:
    12
    Reputations:
    0
    да нет, я вот через месяц сяду въезжать в NASM
     
  7. xverizex

    xverizex New Member

    Joined:
    3 Jul 2017
    Messages:
    7
    Likes Received:
    0
    Reputations:
    2
    Делаю дизассемблер с возможностью вставки кода в любое место. И вот появилась проблема.
    Если написать такой код, например для получения локальной переменной ( это же для этого так? )
    Code:
    mov eax, [ebp + 0x01]
    То это один опкод.
    А если так
    Code:
    мov eax, [ebp + 0x101]
    То это уже другой машинный код команды. Так как я захотел в программе функционал вставки любого количества кода ( чтобы не нужно было писать jmp на пустое место и там производить операции ), то я отслеживаю некоторые команды. Например я отслеживаю команды lea. И если вставить код всередину, то в lea измениться адреса. Но как быть с такой адресацией, которую я привёл. Если с mov eax, [ebp + 1] понятно, там только с байт адресоваться можно на машинном коде, но если вписать число больше 255, то поменяется опкод и будет четырех байтным. Вместо этого числа может быть не число как таковое, а указатель на переменную в секции данных. А если это не указатель на данные, а указатель на стэк, только может ли быть в стеке элементов больше 255 байт? Ну может быть так никто не делает, но локальные переменных то может быть больше 255. Это локальные переменные вроде так получаются с помощью mov eax, [ebp - 8] например. Может ли быть, что в стеке будет локальных переменных больше 255? Тогда появляется проблема с адресацией. Пока что моя программа не поймёт на что указывает, если только не предусматривать сравнение адреса с секцией данных, тогда возможно понять что это к данным имеет дело.