[*] Binary protection state of libattr.so.1.1.2501
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function strcat tear down of libattr.so.1.1.2501
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libattr.so.1.1.2501 @ 0x1a98 */
| #include <stdint.h>
|
; (fcn) fcn.00001a98 () | void fcn_00001a98 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00001a98 invalid |
0x00001a9c mov r0, r1 | r0 = r1;
0x00001a9e mov r7, r1 | r7 = r1;
0x00001aa0 mov r5, r2 | r5 = r2;
0x00001aa2 mov r6, r3 | r6 = r3;
0x00001aa4 blx 0xe68 | r0 = fcn_00000e68 ();
0x00001aa8 cmp r0, 0xff |
| if (r0 > 0xff) {
0x00001aaa bhi 0x1afe | goto label_1;
| }
0x00001aac lsls r2, r5, 0x1e | r2 = r5 << 0x1e;
| if (r2 < r5) {
0x00001aae bpl 0x1acc |
| if (r6 == 0) {
0x00001ab0 cbz r6, 0x1af8 | goto label_2;
| }
0x00001ab2 ldr r3, [pc, 0x5c] |
0x00001ab4 add r3, pc | r3 = 0x35ca;
| label_0:
0x00001ab6 ldm r3!, {r0, r1} | r0 = *(r3!);
| r1 = *((r3! + 4));
0x00001ab8 ldrb r3, [r3] | r3 = *(r3);
0x00001aba str r0, [r4] | *(r4) = r0;
0x00001abc mov r0, r4 | r0 = r4;
0x00001abe str r1, [r4, 4] | *((r4 + 4)) = r1;
0x00001ac0 mov r1, r7 | r1 = r7;
0x00001ac2 strb r3, [r4, 8] | *((r4 + 8)) = r3;
0x00001ac4 blx 0xdd4 | strcat (r0, r1)
0x00001ac8 movs r0, 0 | r0 = 0;
0x00001aca pop {r3, r4, r5, r6, r7, pc} |
| }
0x00001acc lsls r3, r5, 0x1c | r3 = r5 << 0x1c;
| if (r3 >= r5) {
0x00001ace bpl 0x1aea | goto label_3;
| }
0x00001ad0 ldr r3, [pc, 0x40] |
0x00001ad2 add r3, pc | r3 = 0x35ea;
0x00001ad4 ldm r3!, {r0, r1} | r0 = *(r3!);
| r1 = *((r3! + 4));
0x00001ad6 ldrh r3, [r3] | r3 = *(r3);
0x00001ad8 str r0, [r4] | *(r4) = r0;
0x00001ada str r1, [r4, 4] | *((r4 + 4)) = r1;
0x00001adc strh r3, [r4, 8] | *((r4 + 8)) = r3;
| do {
0x00001ade mov r1, r7 | r1 = r7;
0x00001ae0 mov r0, r4 | r0 = r4;
0x00001ae2 blx 0xdd4 | strcat (r0, r1)
0x00001ae6 movs r0, 0 | r0 = 0;
0x00001ae8 pop {r3, r4, r5, r6, r7, pc} |
| label_3:
0x00001aea ldr r3, [pc, 0x2c] |
0x00001aec add r3, pc | r3 = 0x360a;
0x00001aee ldr r0, [r3] | r0 = *(0x360a);
0x00001af0 ldrh r3, [r3, 4] | r3 = *((r3 + 4));
0x00001af2 str r0, [r4] | *(r4) = r0;
0x00001af4 strh r3, [r4, 4] | *((r4 + 4)) = r3;
0x00001af6 b 0x1ade |
| } while (1);
| label_2:
0x00001af8 ldr r3, [pc, 0x20] |
0x00001afa add r3, pc | r3 = 0x361a;
0x00001afc b 0x1ab6 | goto label_0;
| label_1:
0x00001afe blx 0xe80 | fcn_00000e80 ();
0x00001b02 movs r2, 0x16 | r2 = 0x16;
0x00001b04 mov r3, r0 | r3 = r0;
0x00001b06 str r2, [r3] | *(r3) = r2;
0x00001b08 mov.w r0, -1 | r0 = -1;
0x00001b0c pop {r3, r4, r5, r6, r7, pc} |
| }
[*] Function strcat used 3 times libattr.so.1.1.2501