[*] Binary protection state of libcurl.so
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH Symbols
[*] Function strcat tear down of libcurl.so
; 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/libcurl.so @ 0x11734 */
| #include <stdint.h>
|
; (fcn) sym.Curl_protocol_connecting () | uint32_t Curl_protocol_connecting (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00011734 subs r2, r0, 0 | r2 = r0 - 0;
0x00011738 mov r3, r1 | r3 = r1;
| if (r2 != r0) {
0x0001173c beq 0x1175c |
0x00011740 ldr r2, [r2, 0x284] | r2 = *((r2 + 0x284));
0x00011744 ldr r2, [r2, 0x18] | r2 = *((r2 + 0x18));
0x00011748 cmp r2, 0 |
| if (r2 == 0) {
0x0001174c beq 0x1175c | goto label_0;
| }
0x00011750 mov ip, 0 |
0x00011754 strb ip, [r1] | *(r1) = ip;
0x00011758 bx r2 | return uint32_t (*r2)() ();
| }
| label_0:
0x0001175c mov r2, 1 | r2 = 1;
0x00011760 strb r2, [r3] | *(r3) = r2;
0x00011764 mov r0, 0 | r0 = 0;
0x00011768 bx lr | return r0;
| }
; 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/libcurl.so @ 0x2aec8 */
| #include <stdint.h>
|
; (fcn) sym.mime_part_rewind () | void mime_part_rewind (size_t size) {
| int32_t var_0h;
| int32_t var_ch;
| r0 = size;
0x0002aec8 push {r0, r1, r2, r4, r5, lr} |
0x0002aecc ldr r2, [r0, 0x48] | r2 = *((r0 + 0x48));
0x0002aed0 mov r3, 0 | r3 = 0;
0x0002aed4 tst r2, 2 |
0x0002aed8 ldr r2, [r0, 0x4c] | r2 = *((r0 + 0x4c));
| if ((r2 & 2) != 0) {
0x0002aedc moveq r5, r3 | r5 = r3;
| }
| if ((r2 & 2) == 0) {
0x0002aee0 movne r5, 4 | r5 = 4;
| }
0x0002aee4 cmp r2, r5 |
0x0002aee8 mov r4, r0 | r4 = r0;
0x0002aeec str r3, [r0, 0x5c] | *((r0 + 0x5c)) = r3;
0x0002aef0 str r3, [r0, 0x60] | *((r0 + 0x60)) = r3;
0x0002aef4 str r3, [r0, 0x64] | *((r0 + 0x64)) = r3;
| if (r2 > r5) {
0x0002aef8 bhi 0x2af14 | goto label_2;
| }
| label_0:
0x0002aefc mov r0, 0 | r0 = 0;
0x0002af00 str r5, [r4, 0x4c] | *((r4 + 0x4c)) = r5;
0x0002af04 str r0, [r4, 0x50] | *((r4 + 0x50)) = r0;
0x0002af08 str r0, [r4, 0x54] | *((r4 + 0x54)) = r0;
| do {
| label_1:
0x0002af0c add sp, sp, 0xc |
0x0002af10 pop {r4, r5, pc} |
| label_2:
0x0002af14 ldr r1, [r0, 0x18] | r1 = *((r0 + 0x18));
0x0002af18 cmp r1, 0 |
| if (r1 == 0) {
0x0002af1c beq 0x2af5c | goto label_3;
| }
0x0002af20 str r3, [sp] | *(sp) = r3;
0x0002af24 mov r2, 0 | r2 = 0;
0x0002af28 mov r3, 0 | r3 = 0;
0x0002af2c ldr r0, [r0, 0x20] | r0 = *((r0 + 0x20));
0x0002af30 blx r1 | r0 = uint32_t (*r1)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x0002af34 cmn r0, 1 |
| if (r0 == 1) {
0x0002af38 beq 0x2af5c | goto label_3;
| }
| if (r0 >= 1) {
0x0002af3c blt 0x2af48 |
0x0002af40 cmp r0, 2 |
| if (r0 <= 2) {
0x0002af44 ble 0x2af50 | goto label_4;
| }
| }
0x0002af48 mov r0, 1 | r0 = 1;
0x0002af4c b 0x2af0c |
| } while (1);
| label_4:
0x0002af50 cmp r0, 0 |
| if (r0 == 0) {
0x0002af54 beq 0x2aefc | goto label_0;
| }
0x0002af58 b 0x2af0c | goto label_1;
| label_3:
0x0002af5c mov r0, 2 | r0 = 2;
0x0002af60 b 0x2af0c | goto label_1;
| }
[*] Function strcat used 1 times libcurl.so