[*] Binary protection state of libwebsockets.so.15
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH Symbols
[*] Function mmap 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 mmap used 1 times libwebsockets.so.15