Я начинаю узнавать о сборке ARM из https://azeria -labs.com / writing-arm-shellcode / и хочу попрактиковаться в получении данных из сокета.Это фрагмент кода того, что я изучаю до сих пор.Тестирование выполняется на мобильном устройстве.
Код сетевого клиента
@socket syscall
movw r7,#281
mov r0,#2
mov r1,#1
sub r2,r2,r2
svc #1
mov r6,r0
@connect syscall
movw r7,#283
adr r1,struct
strb r2,[r1,#1]
mov r2,#16
mov r0,r6
svc #1
@recv syscall
mov r0,r6
mov r3, #100
adr r1,to_receive
mov r2,#receive_size
movw r7,#291
svc #1
@write syscall
mov r7,#4
mov r0,#1
adr r1,to_receive
mov r2,#receive_size
svc #1
@exit with error code from last syscall
mov r7,#1
svc #1
struct:
.ascii "\x02\xff" @AF_INET
.ascii "\x11\x5c" @port 4444
.byte 127,0,0,1 @ip 127.0.0.1
to_receive: .skip 40
after_to_receive:
.set receive_size, after_to_receive - to_receive
На другом конце сетевого подключения я настроил nc для прослушивания и передачи некоторых текстовых данных для успешного подключения..
Сетевой слушатель (сервер)
toybox nc -Lp 4444 < file_to_send.txt
Однако я не вижу никакого вывода на экран консоли клиента.Я подозреваю, что либо системный вызов recv не получает данные, либо я неправильно использую системный вызов write.
Я не вижу сообщений об ошибках, поэтому не уверен, правильно ли я это делаю.Любой совет приветствуется.
Я отдельно подтвердил, что подключение другого процесса nc к слушателю приведет к получению текстовых данных.