[*] Binary protection state of libwebsockets.so.15

  
  	Partial RELRO  No Canary found   NX disabled  DSO          No RPATH     No RUNPATH   Symbols


[*] Function strcat tear down of libwebsockets.so.15

    ; assembly                       | /* r2dec pseudo code output */
                                     | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libwebsockets.so.15 @ 0x7754 */
                                     | #include <stdint.h>
                                     |  
    ; (fcn) entry.fini0 ()           | void entry_fini0 () {
    0x00007754 ldr r3, [pc, 0x68]    |     r3 = *(0x77c0);
    0x00007758 push {r4, lr}         |     
    0x0000775c ldr r4, [pc, 0x64]    |     r4 = $d;
    0x00007760 add r3, pc, r3        |     r3 = pc + r3;
    0x00007764 ldrb r3, [r3]         |     r3 = *(r3);
    0x00007768 add r4, pc, r4        |     r4 = pc + r4;
    0x0000776c cmp r3, 0             |     
    0x00007770 popne {r4, pc}        |     
    0x00007774 ldr r3, [pc, 0x50]    |     r3 = *(0x77c8);
    0x00007778 ldr r3, [r4, r3]      |     r3 = $d;
    0x0000777c cmp r3, 0             |     
                                     |     if (r3 != 0) {
    0x00007780 beq 0x7790            |         
    0x00007784 ldr r3, [pc, 0x44]    |         r3 = *(0x77cc);
    0x00007788 ldr r0, [pc, r3]      |         r0 = *(0x00007790);
    0x0000778c bl 0x6c9c             |         cxa_finalize ();
                                     |     }
    0x00007790 bl 0x7698             |     entry0 ();
    0x00007794 ldr r3, [pc, 0x38]    |     r3 = *(0x77d0);
    0x00007798 ldr r3, [r4, r3]      |     r3 = *((r4 + r3));
    0x0000779c cmp r3, 0             |     
                                     |     if (r3 != 0) {
    0x000077a0 beq 0x77b0            |         
    0x000077a4 ldr r0, [pc, 0x2c]    |         r0 = *(0x77d4);
    0x000077a8 add r0, pc, r0        |         r0 = pc + r0;
    0x000077ac bl 0x7674             |         loc_imp_deregister_frame_info ();
                                     |     }
    0x000077b0 ldr r3, [pc, 0x24]    |     r3 = *(0x77d8);
    0x000077b4 mov r2, 1             |     r2 = 1;
    0x000077b8 add r3, pc, r3        |     r3 = pc + r3;
    0x000077bc strb r2, [r3]         |     *(r3) = r2;
    0x000077c0 pop {r4, pc}          |     
                                     | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libwebsockets.so.15 @ 0x1b768 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.sha1_loop ()                                 | void sha1_loop (int32_t arg1, int32_t arg2) {
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x0001b768 push {r4, r5, r6, r7, r8, sl, fp, lr}         |     
    0x0001b76c mov r5, r0                                    |     r5 = r0;
    0x0001b770 mov r7, r1                                    |     r7 = r1;
    0x0001b774 mov r6, r2                                    |     r6 = r2;
    0x0001b778 mov r8, 0                                     |     r8 = 0;
                                                             |     do {
    0x0001b77c cmp r8, r6                                    |         
                                                             |         if (r8 < r6) {
    0x0001b780 pophs {r4, r5, r6, r7, r8, sl, fp, pc}        |             
                                                             |         }
    0x0001b784 ldrb r0, [r5, 0x60]                           |         r0 = *((r5 + 0x60));
    0x0001b788 sub r4, r6, r8                                |         r4 = r6 - r8;
    0x0001b78c and r0, r0, 0x3f                              |         r0 &= 0x3f;
    0x0001b790 rsb r3, r0, 0x40                              |         r3 = 0x40 - r0;
    0x0001b794 cmp r4, r3                                    |         
                                                             |         if (r4 < r3) {
    0x0001b798 movhs r4, r3                                  |             r4 = r3;
                                                             |         }
    0x0001b79c add r0, r0, 0x20                              |         r0 += 0x20;
    0x0001b7a0 mov r2, r4                                    |         r2 = r4;
    0x0001b7a4 add r1, r7, r8                                |         r1 = r7 + r8;
    0x0001b7a8 add r0, r5, r0                                |         r0 = r5 + r0;
    0x0001b7ac bl 0x6b10                                     |         memcpy (r0, r1, r2);
    0x0001b7b0 ldrb r1, [r5, 0x60]                           |         r1 = *((r5 + 0x60));
    0x0001b7b4 ldrd r2, r3, [r5, 0x18]                       |         __asm ("ldrd r2, r3, [r5, 0x18]");
    0x0001b7b8 add r1, r1, r4                                |         r1 += r4;
    0x0001b7bc lsl r0, r4, 3                                 |         r0 = r4 << 3;
    0x0001b7c0 adds sl, r2, r0                               |         sl = r2 + r0;
    0x0001b7c4 and r1, r1, 0x3f                              |         r1 &= 0x3f;
    0x0001b7c8 adc fp, r3, 0                                 |         __asm ("adc fp, r3, 0");
    0x0001b7cc cmp r1, 0                                     |         
    0x0001b7d0 strb r1, [r5, 0x60]                           |         *((r5 + 0x60)) = r1;
    0x0001b7d4 strd sl, fp, [r5, 0x18]                       |         __asm ("strd sl, fp, [r5, 0x18]");
                                                             |         if (r1 == 0) {
    0x0001b7d8 bne 0x1b7e4                                   |             
    0x0001b7dc mov r0, r5                                    |             r0 = r5;
    0x0001b7e0 bl 0x1b028                                    |             sha1_step ();
                                                             |         }
    0x0001b7e4 add r8, r8, r4                                |         r8 += r4;
    0x0001b7e8 b 0x1b77c                                     |         
                                                             |     } while (1);
                                                             | }

[*] Function strcat used 1 times libwebsockets.so.15