[*] Binary protection state of libwsmedia.so
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of libwsmedia.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/libwsmedia.so @ 0xead4 */
| #include <stdint.h>
|
; (fcn) sym.delete_profile () | void delete_profile (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
0x0000ead4 blmi 0xb21388 | __asm ("blmi 0xb21388");
0x0000ead8 push.w {r4, r5, r6, r7, r8, lr} |
0x0000eadc mov r7, r0 | r7 = r0;
0x0000eade add r2, pc | r2 += pc;
0x0000eae0 ldr r0, [pc, 0xa8] |
0x0000eae2 sub sp, 8 |
0x0000eae4 mov.w r8, 0 | r8 = 0;
0x0000eae8 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000eaea mov r6, r1 | r6 = r1;
0x0000eaec add r0, pc | r0 = 0x1d67c;
0x0000eaee ldr r3, [r3] | r3 = *(r3);
0x0000eaf0 str r3, [sp, 4] | var_4h = r3;
0x0000eaf2 mov.w r3, 0 | r3 = 0;
0x0000eaf6 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0000eafa blx 0x6460 | fcn_00006460 ();
0x0000eafe ldr r1, [pc, 0x90] |
0x0000eb00 mov r2, r6 | r2 = r6;
0x0000eb02 mov r5, r0 | r5 = r0;
0x0000eb04 add r1, pc | r1 = 0x1d69a;
0x0000eb06 blx 0x61a0 | r0 = g_variant_unref ();
0x0000eb0a mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x0000eb0c cbz r0, 0xeb56 | goto label_1;
| }
0x0000eb0e ldr r2, [pc, 0x84] |
0x0000eb10 mov r1, r0 | r1 = r0;
0x0000eb12 mov r3, sp | r3 = sp;
0x0000eb14 mov r0, r5 | r0 = r5;
0x0000eb16 add r2, pc | r2 = 0x1d6b0;
0x0000eb18 blx 0x6210 | r0 = fcn_00006210 ();
| if (r0 != 0) {
0x0000eb1c cbz r0, 0xeb22 |
0x0000eb1e ldr r3, [sp] | r3 = *(sp);
| if (r3 != 0) {
0x0000eb20 cbnz r3, 0xeb72 | goto label_2;
| }
| }
0x0000eb22 mov r0, r6 | r0 = r6;
0x0000eb24 blx 0x601c | fcn_0000601c ();
0x0000eb28 mov r0, r5 | r0 = r5;
0x0000eb2a mov r1, r4 | r1 = r4;
0x0000eb2c blx 0x5c9c | r0 = g_strdup_printf ()
0x0000eb30 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x0000eb32 cbnz r0, 0xeb64 | goto label_3;
| }
| do {
| label_0:
0x0000eb34 mov r0, r4 | r0 = r4;
0x0000eb36 blx 0x5700 | fcn_00005700 ();
0x0000eb3a ldr r2, [pc, 0x5c] |
0x0000eb3c ldr r3, [pc, 0x48] | r3 = *(0xeb88);
0x0000eb3e add r2, pc | r2 = 0x1d6dc;
0x0000eb40 ldr r3, [r2, r3] | r3 = *(0x1d6dc);
0x0000eb42 ldr r2, [r3] | r2 = *(0x1d6dc);
0x0000eb44 ldr r3, [sp, 4] | r3 = var_4h;
0x0000eb46 eors r2, r3 | r2 ^= r3;
0x0000eb48 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000eb4c bne 0xeb80 | goto label_4;
| }
0x0000eb4e mov r0, r5 | r0 = r5;
0x0000eb50 add sp, 8 |
0x0000eb52 pop.w {r4, r5, r6, r7, r8, pc} |
| label_1:
0x0000eb56 mov r2, r0 | r2 = r0;
0x0000eb58 movs r1, 9 | r1 = 9;
0x0000eb5a mov r0, r7 | r0 = r7;
0x0000eb5c movs r5, 0xc | r5 = 0xc;
0x0000eb5e blx 0x6620 | g_variant_lookup_value ();
0x0000eb62 b 0xeb34 |
| } while (1);
| label_3:
0x0000eb64 movs r2, 0 | r2 = 0;
0x0000eb66 movs r1, 0xf | r1 = 0xf;
0x0000eb68 mov r0, r7 | r0 = r7;
0x0000eb6a movs r5, 0xc | r5 = 0xc;
0x0000eb6c blx 0x5958 | fcn_00005958 ();
0x0000eb70 b 0xeb34 | goto label_0;
| label_2:
0x0000eb72 mov r2, r8 | r2 = r8;
0x0000eb74 movs r1, 0xa | r1 = 0xa;
0x0000eb76 mov r0, r7 | r0 = r7;
0x0000eb78 movs r5, 0xc | r5 = 0xc;
0x0000eb7a blx 0x6620 | g_variant_lookup_value ();
0x0000eb7e b 0xeb34 | goto label_0;
| label_4:
0x0000eb80 blx 0x614c | fcn_0000614c ();
0x0000eb84 ldr r7, [pc, 0x338] | r7 = *(0xeec0);
0x0000eb86 movs r1, r0 | r1 = r0;
0x0000eb88 lsls r4, r7, 0x14 | r4 = r7 << 0x14;
0x0000eb8a movs r0, r0 |
0x0000eb8c movs r0, 0xe4 | r0 = 0xe4;
0x0000eb8e movs r0, r0 |
0x0000eb90 movs r1, 0x70 | r1 = 0x70;
0x0000eb92 movs r0, r0 |
0x0000eb94 cmp r2, 0xae |
0x0000eb96 movs r0, r0 |
0x0000eb98 ldr r7, [pc, 0x1b8] | r7 = *(0xed54);
0x0000eb9a movs r1, r0 | r1 = r0;
| }
[*] Function printf used 2 times libwsmedia.so