[*] Binary protection state of libpacsiod.so

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


[*] Function strcat tear down of libpacsiod.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/libpacsiod.so @ 0x192c */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0000192c ()                  | void fcn_0000192c (int16_t arg1, int16_t arg2) {
                                             |     int32_t var_0h;
                                             |     int32_t var_0h_2;
                                             |     int32_t var_8h;
                                             |     int32_t var_8h_2;
                                             |     int32_t var_10h;
                                             |     int32_t var_10h_2;
                                             |     r0 = arg1;
                                             |     r1 = arg2;
    0x0000192c invalid                       |     
    0x00001930 ldr r4, [r0, 0x18]            |     r4 = *((r0 + 0x18));
    0x00001932 sub sp, 0x18                  |     
    0x00001934 mov r5, r1                    |     r5 = r1;
                                             |     if (r4 != 0) {
    0x00001936 cbnz r4, 0x193e               |         goto label_0;
                                             |     }
    0x00001938 b 0x194e                      |     goto label_1;
                                             |     do {
    0x0000193a ldr r4, [r4, 4]               |         r4 = *((r4 + 4));
                                             |         if (r4 == 0) {
    0x0000193c cbz r4, 0x194e                |             goto label_1;
                                             |         }
                                             | label_0:
    0x0000193e ldr r0, [r4]                  |         r0 = *(r4);
    0x00001940 mov r1, r5                    |         r1 = r5;
    0x00001942 blx 0x1638                    |         r0 = fcn_00001638 ();
    0x00001946 cmp r0, 0                     |         
    0x00001948 bne 0x193a                    |         
                                             |     } while (r0 != 0);
    0x0000194a add sp, 0x18                  |     
    0x0000194c pop {r4, r5, r6, pc}          |     
                                             | label_1:
    0x0000194e ldr r3, [pc, 0x3c]            |     
    0x00001950 movs r1, 0                    |     r1 = 0;
    0x00001952 ldr r0, [pc, 0x3c]            |     
    0x00001954 ldr r2, [pc, 0x3c]            |     
    0x00001956 add r3, pc                    |     r3 = 0x32e8;
    0x00001958 strd r6, r1, [sp, 0x10]       |     __asm ("strd r6, r1, [var_10h]");
    0x0000195c add r0, pc                    |     r0 = 0x32f2;
    0x0000195e strd r1, r3, [sp, 8]          |     __asm ("strd r1, r3, [var_8h]");
    0x00001962 add r2, pc                    |     r2 = 0x32fa;
    0x00001964 mov r3, r5                    |     r3 = r5;
    0x00001966 strd r0, r1, [sp]             |     __asm ("strd r0, r1, [sp]");
    0x0000196a ldr r0, [r6, 8]               |     r0 = *((r6 + 8));
    0x0000196c blx 0x180c                    |     r0 = fcn_0000180c ();
    0x00001970 mov r1, r0                    |     r1 = r0;
    0x00001972 ldr r0, [r6, 0x14]            |     r0 = *((r6 + 0x14));
    0x00001974 blx 0x172c                    |     r0 = g_variant_builder_new ();
    0x00001978 mov r3, r0                    |     r3 = r0;
    0x0000197a mov r1, r5                    |     r1 = r5;
    0x0000197c ldr r0, [r6, 0x18]            |     r0 = *((r6 + 0x18));
    0x0000197e str r3, [r6, 0x14]            |     *((r6 + 0x14)) = r3;
    0x00001980 blx 0x172c                    |     g_variant_builder_new ();
    0x00001984 str r0, [r6, 0x18]            |     *((r6 + 0x18)) = r0;
    0x00001986 add sp, 0x18                  |     
    0x00001988 pop {r4, r5, r6, pc}          |     
                                             | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpacsiod.so @ 0x2478 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.pio_unlock_device ()                 | void pio_unlock_device (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                     |     int16_t var_0h_4;
                                                     |     int16_t var_4h_4;
                                                     |     int16_t var_8h_4;
                                                     |     int16_t var_ch_4;
                                                     |     int16_t var_10h_4;
                                                     |     int16_t var_14h_4;
                                                     |     int16_t var_18h_4;
                                                     |     int16_t var_24h_4;
                                                     |     int16_t var_28h_4;
                                                     |     int16_t var_2ch_4;
                                                     |     int16_t var_0h;
                                                     |     int16_t var_4h;
                                                     |     int16_t var_8h;
                                                     |     int16_t var_ch;
                                                     |     int16_t var_10h;
                                                     |     int16_t var_14h;
                                                     |     int16_t var_18h;
                                                     |     int16_t var_24h;
                                                     |     int16_t var_28h;
                                                     |     int16_t var_2ch;
                                                     |     int16_t var_6ch;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
                                                     |     r2 = arg3;
                                                     |     r3 = arg4;
    0x00002478 mvnsmi lr, 0xb4000                    |     __asm ("mvnsmi lr, 0xb4000");
    0x0000247c mov r7, r1                            |     r7 = r1;
    0x0000247e ldr r1, [pc, 0xf4]                    |     
    0x00002480 mov r8, r2                            |     r8 = r2;
    0x00002482 sub sp, 0x74                          |     
    0x00002484 movs r4, 0                            |     r4 = 0;
    0x00002486 ldr r2, [pc, 0xf0]                    |     r2 = *(0x257a);
    0x00002488 add r1, pc                            |     r1 = 0x4a02;
    0x0000248a ldr r2, [r1, r2]                      |     
    0x0000248c ldr r2, [r2]                          |     r2 = *(0x4a02);
    0x0000248e str r2, [sp, 0x6c]                    |     var_6ch = r2;
    0x00002490 mov.w r2, 0                           |     r2 = 0;
    0x00002494 mov.w r2, -1                          |     r2 = -1;
    0x00002498 strd r2, r4, [sp, 0x24]               |     __asm ("strd r2, r4, [var_28h]");
                                                     |     if (r0 == 0) {
    0x0000249c cbz r0, 0x24cc                        |         goto label_1;
                                                     |     }
    0x0000249e movs r1, 1                            |     r1 = 1;
    0x000024a0 ldr r2, [r7, 4]                       |     r2 = *((r7 + 4));
    0x000024a2 str r1, [sp]                          |     *(sp) = r1;
    0x000024a4 ldr r1, [pc, 0xd4]                    |     
    0x000024a6 str.w r8, [sp, 4]                     |     __asm ("str.w r8, [var_4h]");
    0x000024aa add r1, pc                            |     r1 = 0x4a2a;
    0x000024ac blx 0x1604                            |     fcn_00001604 ();
    0x000024b0 mov r0, r4                            |     r0 = r4;
                                                     |     do {
    0x000024b2 ldr r2, [pc, 0xcc]                    |         
    0x000024b4 ldr r3, [pc, 0xc0]                    |         r3 = *(0x2578);
    0x000024b6 add r2, pc                            |         r2 = 0x4a3c;
    0x000024b8 ldr r3, [r2, r3]                      |         r3 = *(0x4a3c);
    0x000024ba ldr r2, [r3]                          |         r2 = *(0x4a3c);
    0x000024bc ldr r3, [sp, 0x6c]                    |         r3 = var_6ch;
    0x000024be eors r2, r3                           |         r2 ^= r3;
    0x000024c0 mov.w r3, 0                           |         r3 = 0;
                                                     |         if (r2 != r3) {
    0x000024c4 bne 0x256e                            |             goto label_2;
                                                     |         }
    0x000024c6 add sp, 0x74                          |         
    0x000024c8 pop.w {r4, r5, r6, r7, r8, sb, pc}    |         
                                                     | label_1:
    0x000024cc ldr r1, [pc, 0xb4]                    |         
    0x000024ce add r4, sp, 0x2c                      |         r4 += var_2ch;
    0x000024d0 mov r5, r0                            |         r5 = r0;
    0x000024d2 mov r0, r4                            |         r0 = r4;
    0x000024d4 mov r6, r3                            |         r6 = r3;
    0x000024d6 ldr.w sb, [r7]                        |         sb = *(r7);
    0x000024da add r1, pc                            |         r1 = 0x4a62;
    0x000024dc blx 0x1614                            |         fcn_00001614 ();
    0x000024e0 ldr r1, [pc, 0xa4]                    |         
    0x000024e2 mov r3, r8                            |         r3 = r8;
    0x000024e4 str r6, [sp]                          |         *(sp) = r6;
    0x000024e6 mov r0, r4                            |         r0 = r4;
    0x000024e8 ldr r2, [r7, 4]                       |         r2 = *((r7 + 4));
    0x000024ea add r1, pc                            |         r1 = 0x4a76;
    0x000024ec ldr r6, [pc, 0x9c]                    |         
    0x000024ee blx 0x1604                            |         fcn_00001604 ();
    0x000024f2 mov r0, r4                            |         r0 = r4;
    0x000024f4 blx 0x16e8                            |         r0 = fcn_000016e8 ();
    0x000024f8 mov r1, r0                            |         r1 = r0;
    0x000024fa ldr r0, [pc, 0x94]                    |         
    0x000024fc add r6, pc                            |         r6 = 0x4a8c;
    0x000024fe ldr.w r7, [sb, 8]                     |         r7 = *((sb + 8));
    0x00002502 add r0, pc                            |         r0 = 0x4a98;
    0x00002504 blx 0x183c                            |         r0 = fcn_0000183c ();
    0x00002508 mov r4, r0                            |         r4 = r0;
    0x0000250a mov r0, r6                            |         r0 = r6;
    0x0000250c blx 0x16b4                            |         fcn_000016b4 ();
    0x00002510 ldr r3, [pc, 0x80]                    |         
    0x00002512 add r1, sp, 0x28                      |         r1 += var_28h;
    0x00002514 ldr r2, [pc, 0x80]                    |         
    0x00002516 str r1, [sp, 0x18]                    |         var_18h = r1;
    0x00002518 mvn r1, 0x80000000                    |         r1 = ~0x80000000;
    0x0000251c add r3, pc                            |         r3 = 0x4ab4;
    0x0000251e str r0, [sp, 8]                       |         var_8h = r0;
    0x00002520 str r3, [sp]                          |         *(sp) = r3;
    0x00002522 mov r0, r7                            |         r0 = r7;
    0x00002524 ldr r3, [pc, 0x74]                    |         
    0x00002526 add r2, pc                            |         r2 = 0x4ac2;
    0x00002528 str r4, [sp, 4]                       |         var_4h = r4;
    0x0000252a str r1, [sp, 0x10]                    |         var_10h = r1;
    0x0000252c add r3, pc                            |         r3 = 0x4acc;
    0x0000252e str r5, [sp, 0x14]                    |         var_14h = r5;
    0x00002530 mov r1, r3                            |         r1 = r3;
    0x00002532 str r5, [sp, 0xc]                     |         var_ch = r5;
    0x00002534 blx 0x1668                            |         r0 = fcn_00001668 ();
    0x00002538 mov r4, r0                            |         r4 = r0;
                                                     |         if (r0 == 0) {
    0x0000253a cbz r0, 0x254e                        |             goto label_3;
                                                     |         }
    0x0000253c add r2, sp, 0x24                      |         r2 += var_24h;
    0x0000253e mov r1, r6                            |         r1 = r6;
    0x00002540 blx 0x16f4                            |         fcn_000016f4 ();
    0x00002544 mov r0, r4                            |         r0 = r4;
    0x00002546 blx 0x1780                            |         g_mutex_lock ();
                                                     | label_0:
    0x0000254a ldr r0, [sp, 0x24]                    |         r0 = var_24h;
    0x0000254c b 0x24b2                              |         
                                                     |     } while (1);
                                                     | label_3:
    0x0000254e ldr r4, [sp, 0x28]                    |     r4 = var_28h;
    0x00002550 movs r1, 0x10                         |     r1 = 0x10;
    0x00002552 ldr r3, [pc, 0x4c]                    |     
    0x00002554 ldr r2, [pc, 0x4c]                    |     
    0x00002556 ldr r5, [r4, 4]                       |     r5 = *((r4 + 4));
    0x00002558 add r3, pc                            |     r3 = 0x4afe;
    0x0000255a add r2, pc                            |     r2 = 0x4b02;
    0x0000255c str r5, [sp, 4]                       |     var_4h = r5;
    0x0000255e ldr r4, [r4, 8]                       |     r4 = *((r4 + 8));
    0x00002560 str r4, [sp]                          |     *(sp) = r4;
    0x00002562 blx 0x1830                            |     fcn_00001830 ();
    0x00002566 ldr r0, [sp, 0x28]                    |     r0 = var_28h;
    0x00002568 blx 0x17cc                            |     fcn_000017cc ();
    0x0000256c b 0x254a                              |     goto label_0;
                                                     | label_2:
    0x0000256e blx 0x1774                            |     g_malloc0 ();
    0x00002572 nop                                   |     
    0x00002574 cmp r2, 0x88                          |     
    0x00002576 movs r1, r0                           |     r1 = r0;
    0x00002578 lsls r4, r4, 3                        |     r4 <<= 3;
    0x0000257a movs r0, r0                           |     
    0x0000257c adds r2, r1, r4                       |     r2 = r1 + r4;
    0x0000257e movs r0, r0                           |     
    0x00002580 cmp r2, 0x5a                          |     
    0x00002582 movs r1, r0                           |     r1 = r0;
    0x00002584 adds r2, r2, r2                       |     r2 += r2;
    0x00002586 movs r0, r0                           |     
    0x00002588 adds r6, r0, r2                       |     r6 = r0 + r2;
    0x0000258a movs r0, r0                           |     
    0x0000258c adds r0, r0, r2                       |     r0 += r2;
    0x0000258e movs r0, r0                           |     
    0x00002590 adds r6, r6, r1                       |     r6 += r1;
    0x00002592 movs r0, r0                           |     
    0x00002594 adds r4, r4, r1                       |     r4 += r1;
    0x00002596 movs r0, r0                           |     
    0x00002598 asrs r2, r4, 0x1a                     |     r2 = r4 >> 0x1a;
    0x0000259a movs r0, r0                           |     
    0x0000259c asrs r0, r1, 0x1a                     |     r0 = r1 >> 0x1a;
    0x0000259e movs r0, r0                           |     
    0x000025a0 asrs r4, r4, 0x1b                     |     r4 >>= 0x1b;
    0x000025a2 movs r0, r0                           |     
    0x000025a4 adds r6, r6, r0                       |     r6 += r0;
    0x000025a6 movs r0, r0                           |     
                                                     | }

[*] Function strcat used 1 times libpacsiod.so