Итак, я читал этот учебник о том, как использовать Frida: https://www.frida.re/docs/functions/, и я столкнулся со следующим:
$ ./client 127.0.0.1
connect() is at: 0x400780
Here's the serv_addr buffer:
02 00 13 88 7f 00 00 01 30 30 30 30 30 30 30 30
Press ENTER key to Continue
В учебнике говорится, что байты представляет собой 0x1388 или 5000, поэтому явно не в шестнадцатеричном или десятичном формате. Я попытался использовать преобразователи base64 для преобразования строки, чтобы увидеть, подходит ли 0x1388 или 5000, но не повезло.
Это в каком именно формате? В последнее время я не занимался низкоуровневым программированием, и, насколько я помню, байты представляют собой группы из 8 битов, 1 и 0.
Обновлено: Да, в учебнике говорится, что это представляет собой структуру. Но как он узнал, что это 0x1388? Если я получил такую строку, есть ли способ понять, что она представляет определенное значение, не будучи автором кода, отправившего сообщение?





Соответствующие части кода таковы:
printf ("\nHere's the serv_addr buffer:\n");
b = (unsigned char *) &serv_addr;
for (i = 0; i != sizeof (serv_addr); i++)
printf ("%s%02x", (i != 0) ? " " : "", b[i]);
Он просто печатает необработанные данные из структуры serv_addr (которая имеет тип struct sockaddr_in).
Здесь нет «строки» (в смысле строки байтов C, оканчивающейся нулем).
0x1388 — это значение serv_addr.sin_port, которое печатается как третий и четвертый байты (13 и 88, в сетевом (большой порядок байтов) порядке байтов).
Зная, что вывод представляет собой необработанные данные структуры sockaddr_in, мы можем легко расшифровать данные.
02 00 Это элемент sin_family со значением 2 (десятичное). Это значение соответствует AF_INET. Это в порядке байтов хоста.
13 88 Это (как уже упоминалось) сетевой порядок байтов порта в sin_port.
7f 00 00 01 Это участник sin_addr и соответствует IP-адресу 127.0.0.1 (7f это 127). Это также в сетевом порядке байтов.
Остальное, 30 30 30 30 30 30 30 30, — это «мусор», который заполняет структуру до обычного размера для struct sockaddr, который составляет 16 байт.