[*] Binary protection state of libxt_string.so
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of libxt_string.so
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/xtables/libxt_string.so @ 0xb6c */
| #include <stdint.h>
|
; (fcn) fcn.00000b6c () | void fcn_00000b6c (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
| label_1:
0x00000758 invalid | void (*0x75c)() ();
0x00000b6c push {r4, r5, r6, lr} |
0x00000b6e mov r5, r1 | r5 = r1;
0x00000b70 ldr r1, [pc, 0x48] |
0x00000b72 mov r4, r0 | r4 = r0;
0x00000b74 movs r0, 1 | r0 = 1;
0x00000b76 ldr r6, [pc, 0x48] |
0x00000b78 add r1, pc | r1 = 0x1738;
0x00000b7a add r6, pc | r6 = 0x1740;
0x00000b7c blx 0x76c | fcn_0000076c ();
| if (r5 == 0) {
0x00000b80 cbz r5, 0xbb2 | goto label_2;
| }
0x00000b82 subs r4, 1 | r4--;
0x00000b84 add r5, r4 | r5 += r4;
0x00000b86 b 0xb90 |
| while (r0 != 0x5c) {
0x00000b88 blx 0x75c | printf_chk ()
0x00000b8c cmp r5, r4 |
| if (r5 == r4) {
0x00000b8e beq 0xbb2 | goto label_2;
| }
| label_0:
0x00000b90 ldrb r0, [r4, 1]! | r0 = *((r4 += 1));
0x00000b94 cmp r0, 0x5c |
0x00000b96 it ne |
| if (r0 != 0x5c) {
0x00000b98 cmpne r0, 0x22 | __asm ("cmpne r0, 0x22");
| }
0x00000b9a bne 0xb88 |
| }
0x00000b9c ldr r3, [pc, 0x24] | r3 = *(0xbc4);
0x00000b9e movs r0, 0x5c | r0 = 0x5c;
0x00000ba0 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00000ba2 ldr r1, [r3] | r1 = *(0xbc4);
0x00000ba4 blx 0x784 | fcn_00000784 ();
0x00000ba8 ldrb r0, [r4] | r0 = *(r4);
0x00000baa blx 0x75c | printf_chk ()
0x00000bae cmp r5, r4 |
| if (r5 != r4) {
0x00000bb0 bne 0xb90 | goto label_0;
| }
| label_2:
0x00000bb2 pop.w {r4, r5, r6, lr} |
0x00000bb6 movs r0, 0x22 | r0 = 0x22;
0x00000bb8 b.w 0x758 | goto label_1;
| }
[*] Function printf used 3 times libxt_string.so