[*] Binary protection state of libxt_tcp.so
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of libxt_tcp.so
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/xtables/libxt_tcp.so @ 0xc88 */
| #include <stdint.h>
|
; (fcn) fcn.00000c88 () | void fcn_00000c88 (int16_t arg1) {
| r0 = arg1;
0x00000c88 invalid | goto label_3;
0x00000c8a push {r3, r4, r5, r6, r7, lr} |
0x00000c8c mov r5, r0 | r5 = r0;
0x00000c8e ldr r6, [pc, 0x60] |
0x00000c90 movs r0, 0 | r0 = 0;
0x00000c92 add r6, pc | r6 = 0x1988;
0x00000c94 adds r6, 0x30 | r6 += 0x30;
| label_0:
0x00000c96 ands r3, r5, 1 | r3 = r5 & 1;
0x00000c9a it eq |
| if (r3 != r5) {
0x00000c9c moveq r2, 2 | r2 = 2;
| }
| if (r3 == r5) {
0x00000c9e beq 0xca4 | goto label_4;
| }
0x00000ca0 b 0xcde | goto label_5;
| do {
0x00000ca2 ldr r2, [r1, 0xc] | r2 = *((r1 + 0xc));
| label_4:
0x00000ca4 tst r2, r5 |
0x00000ca6 add.w r3, r3, 1 | r3++;
0x00000caa add.w r1, r6, r3, lsl 3 | r1 = r6 + (r3 << 3);
0x00000cae beq 0xca2 |
| } while ((r2 & r5) == 0);
0x00000cb0 ldr r1, [pc, 0x40] |
0x00000cb2 mvns r2, r2 | r2 = ~r2;
0x00000cb4 uxtb r4, r2 | r4 = (int8_t) r2;
0x00000cb6 add r1, pc | r1 = 0x19ae;
0x00000cb8 add.w r3, r1, r3, lsl 3 | r3 = r1 + (r3 << 3);
0x00000cbc ldr r7, [r3, 0x30] | r7 = *((r3 + 0x30));
| if (r0 != 0) {
| label_2:
0x00000cbe cbnz r0, 0xcd6 | goto label_6;
| }
| label_1:
0x00000cc0 ldr r1, [pc, 0x34] |
0x00000cc2 mov r2, r7 | r2 = r7;
0x00000cc4 movs r0, 1 | r0 = 1;
0x00000cc6 add r1, pc | r1 = 0x19c2;
0x00000cc8 blx 0x73c | fcn_0000073c ();
0x00000ccc ands r5, r4 | r5 &= r4;
0x00000cce mov.w r0, 1 | r0 = 1;
| if (r5 != r4) {
0x00000cd2 bne 0xc96 | goto label_0;
| }
0x00000cd4 pop {r3, r4, r5, r6, r7, pc} |
| label_6:
0x00000cd6 movs r0, 0x2c | r0 = 0x2c;
0x00000cd8 blx 0x72c | printf_chk ()
0x00000cdc b 0xcc0 | goto label_1;
| label_5:
0x00000cde ldr r7, [pc, 0x1c] |
0x00000ce0 movs r4, 0xfe | r4 = 0xfe;
0x00000ce2 add r7, pc | r7 = 0x19e4;
0x00000ce4 b 0xcbe | goto label_2;
| label_3:
0x00000ce6 ldr r1, [pc, 0x18] |
0x00000ce8 movs r0, 1 | r0 = 1;
0x00000cea add r1, pc | r1 = 0x19f0;
0x00000cec b.w 0x738 | return void (*0x738)() ();
| }
[*] Function printf used 2 times libxt_tcp.so