我想从控制台获取用户输入,并使用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函数就可以做到吗?