[*] 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