ARM-сокет с пользовательским вводом для IP-адреса - PullRequest
0 голосов
/ 01 июля 2019

Я хочу получить пользовательский ввод с консоли и использовать IP-адрес для сокетного соединения вместо жесткого кодирования IP-адреса.

Из моего изучения https://azeria -labs.com / tcp-bind-shell-in-assembly-arm-32-bit / я изменил структуру сокета (все еще используя жестко закодированный адрес) как таковой:

    struct:
    .ascii "\x02\xff"
    .ascii "\x11\x5c"
    ipv4: .byte 0
    ipv4_2: .byte 0
    ipv4_3: .byte 0
    ipv4_4: .byte 0

Затем я копирую фактический адрес в 4 байта для IP-адреса

    adr r1,ipv4
    mov r2,#127
    strb r2, [r1]

    adr r1,ipv4_2
    mov r2,#0
    strb r2, [r1]

    adr r1,ipv4_3
    mov r2,#0
    strb r2, [r1]

    adr r1,ipv4_4
    mov r2,#1
    strb r2, [r1]

Соединение будет успешно установлено. Однако, если я хочу получить ввод IP-адреса от пользователя, например 255.255.255.255, каждая отдельная цифра фактически занимает один байт по отдельности, поэтому 255 обрабатывается как 0x2 0x5 0x5, а не 0xff, который является предполагаемой интерпретацией (один байт). ). Код для чтения ввода:

    mov r7,#3
    mov r0,#0
    adr r1,userinput
    mov r2,#20
    svc #1

Как мне "объединить" три цифры в одну, а затем сохранить их в одном байте?

Если это не тот путь, то как правильно это сделать? Возможно ли это сделать без использования внешних функций libc?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...