[*] Binary protection state of pidstat

  
  	Full RELRO     Canary found      NX enabled   PIE enabled  No RPATH     No RUNPATH   No Symbols


[*] Function printf tear down of pidstat

    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/pidstat @ 0x6f08 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00006f08 ()                  | void fcn_00006f08 (int16_t arg1) {
                                             |     int32_t var_0h;
                                             |     int32_t var_0h_2;
                                             |     int16_t var_8h;
                                             |     int16_t var_ch;
                                             |     int16_t var_1ch;
                                             |     int16_t var_4h;
                                             |     r0 = arg1;
    0x00006f08 push {r1, r2, r3}             |     
    0x00006f0a mov.w r3, 0x400               |     r3 = 0x400;
    0x00006f0c str r0, [r0, 0x38]            |     *((r0 + 0x38)) = r0;
    0x00006f0e ldr r1, [pc, 0x74]            |     
    0x00006f10 ldr.w ip, [pc, 0x74]          |     
    0x00006f14 add r1, pc                    |     r1 = 0xde9e;
    0x00006f16 push {r4, r5, lr}             |     
    0x00006f18 mov r5, r0                    |     r5 = r0;
    0x00006f1a add.w r0, r1, 0x410           |     r0 = r1 + 0x410;
    0x00006f1e sub sp, 0x10                  |     
    0x00006f20 add ip, pc                    |     ip = 0xdeac;
    0x00006f22 ldr r1, [pc, 0x68]            |     r1 = *(0x6f8e);
    0x00006f24 add r2, sp, 0x1c              |     r2 += var_1ch;
    0x00006f26 ldr r4, [r2], 4               |     r4 = *(r2);
                                             |     r2 += 4;
    0x00006f2a ldr.w r1, [ip, r1]            |     
    0x00006f2e ldr r1, [r1]                  |     r1 = imp.__aeabi_unwind_cpp_pr0;
    0x00006f30 str r1, [sp, 0xc]             |     var_ch = r1;
    0x00006f32 mov.w r1, 0                   |     r1 = 0;
    0x00006f36 strd r4, r2, [sp]             |     __asm ("strd r4, r2, [sp]");
    0x00006f3a str r2, [sp, 8]               |     var_8h = r2;
    0x00006f3c mov r1, r3                    |     r1 = r3;
    0x00006f3e movs r2, 1                    |     r2 = 1;
    0x00006f40 blx 0x1010                    |     vsnprintf_chk ()
    0x00006f44 cmp r5, 0                     |     
                                             |     if (r5 <= 0) {
    0x00006f46 ble 0x6f56                    |         goto label_0;
                                             |     }
    0x00006f48 movs r4, 0                    |     r4 = 0;
                                             |     do {
    0x00006f4a movs r0, 9                    |         r0 = 9;
    0x00006f4c adds r4, 1                    |         r4++;
    0x00006f4e blx 0x11ec                    |         fcn_000011ec ();
    0x00006f52 cmp r5, r4                    |         
    0x00006f54 bne 0x6f4a                    |         
                                             |     } while (r5 != r4);
                                             | label_0:
    0x00006f56 ldr r0, [pc, 0x38]            |     
    0x00006f58 add r0, pc                    |     
    0x00006f5a add.w r0, r0, 0x410           |     r0 = 0xe2fe;
    0x00006f5e blx 0x1104                    |     fcn_00001104 ();
    0x00006f62 ldr r2, [pc, 0x30]            |     
    0x00006f64 ldr r3, [pc, 0x24]            |     r3 = *(0x6f8c);
    0x00006f66 add r2, pc                    |     r2 = 0xdf00;
    0x00006f68 ldr r3, [r2, r3]              |     r3 = imp.__aeabi_unwind_cpp_pr0;
    0x00006f6a ldr r2, [r3]                  |     r2 = imp.__aeabi_unwind_cpp_pr0;
    0x00006f6c ldr r3, [sp, 0xc]             |     r3 = var_ch;
    0x00006f6e eors r2, r3                   |     r2 ^= r3;
    0x00006f70 mov.w r3, 0                   |     r3 = 0;
                                             |     if (r2 == r3) {
    0x00006f74 bne 0x6f80                    |         
    0x00006f76 add sp, 0x10                  |         
    0x00006f78 pop.w {r4, r5, lr}            |         
    0x00006f7c add sp, 0xc                   |         
    0x00006f7e bx lr                         |         return;
                                             |     }
    0x00006f80 blx 0x104c                    |     stack_chk_fail ();
    0x00006f84 ldrb r0, [r3, 0x14]           |     r0 = *((r3 + 0x14));
    0x00006f86 movs r0, r0                   |     
    0x00006f88 ldr r7, [pc, 0x190]           |     r7 = *(0x711c);
    0x00006f8a movs r0, r0                   |     
    0x00006f8c lsls r0, r2, 5                |     r0 = r2 << 5;
    0x00006f8e movs r0, r0                   |     
    0x00006f90 ldrb r4, [r2, 0x13]           |     r4 = *((r2 + 0x13));
    0x00006f92 movs r0, r0                   |     
    0x00006f94 ldr r7, [pc, 0x78]            |     r7 = *(0x7010);
    0x00006f96 movs r0, r0                   |     
                                             | }

[*] Function printf used 2 times pidstat