带用户输入的IP地址的ARM套接字连接

时间:2019-07-01 10:56:18

标签: sockets assembly network-programming arm

我想从控制台获取用户输入,并使用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

然后我将实际地址复制到IP地址的4个字节中

    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函数就可以做到吗?

0 个答案:

没有答案