[*] Binary protection state of liblttng-ust-libc-wrapper.so.1.0.0
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of liblttng-ust-libc-wrapper.so.1.0.0
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/liblttng-ust-libc-wrapper.so.1.0.0 @ 0x1194 */
| #include <stdint.h>
|
; (fcn) entry.fini2 () | void entry_fini2 () {
| int16_t var_4h;
0x00001194 push {r4, r5, r6, r7, lr} |
0x00001196 sub sp, 0xc |
0x00001198 ldr r4, [pc, 0x84] |
0x0000119a ldr r3, [pc, 0x88] | r3 = *(0x1226);
0x0000119c add r4, pc | r4 = 0x23c0;
0x0000119e ldr r5, [r4, r3] | r5 = *(0x23c0);
0x000011a0 ldr r3, [r5] | r3 = *(0x23c0);
0x000011a2 subs r3, 1 | r3--;
0x000011a4 str r3, [r5] | *(r5) = r3;
| if (r3 != 0) {
0x000011a6 cbnz r3, 0x11f6 | goto label_1;
| }
0x000011a8 ldr r3, [pc, 0x7c] | r3 = *(0x1228);
0x000011aa ldr r6, [r4, r3] | r6 = *((r4 + r3));
0x000011ac ldr r3, [r6] | r3 = *(r6);
| if (r3 == 0) {
0x000011ae cbz r3, 0x1202 | goto label_2;
| }
| label_0:
0x000011b0 ldr r3, [pc, 0x78] | r3 = *(0x122c);
0x000011b2 ldr r7, [r4, r3] | r7 = *((r4 + r3));
0x000011b4 ldr r3, [r7] | r3 = *(r7);
0x000011b6 cbz r3, 0x11fa |
| while (1) {
0x000011b8 ldr r3, [r6] | r3 = *(r6);
0x000011ba ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
| if (r3 != 0) {
0x000011bc cbz r3, 0x11c8 |
0x000011be ldr r2, [pc, 0x70] | r2 = *(0x1232);
0x000011c0 ldr r2, [r4, r2] | r2 = *((r4 + r2));
0x000011c2 mov r0, r2 | r0 = r2;
0x000011c4 str r2, [sp, 4] | var_4h = r2;
0x000011c6 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r2);
| }
0x000011c8 ldr r3, [r6] | r3 = *(r6);
0x000011ca ldr r3, [r3, 4] | r3 = *((r3 + 4));
| if (r3 != 0) {
0x000011cc cbz r3, 0x11f6 |
0x000011ce ldr r3, [r7] | r3 = *(r7);
0x000011d0 ldr r3, [r3, 8] | r3 = *((r3 + 8));
| if (r3 == 0) {
0x000011d2 cbz r3, 0x11f6 | goto label_1;
| }
0x000011d4 blx r3 | r0 = uint32_t (*r3)() ();
| if (r0 == 0) {
0x000011d6 cbz r0, 0x11f6 | goto label_1;
| }
0x000011d8 ldr r3, [r5] | r3 = *(r5);
| if (r3 != 0) {
0x000011da cbnz r3, 0x11f6 | goto label_1;
| }
0x000011dc ldr r3, [r6] | r3 = *(r6);
0x000011de ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000011e0 blx 0x10d0 | r0 = dlclose ();
| if (r0 != 0) {
0x000011e4 cbnz r0, 0x120a | goto label_3;
| }
0x000011e6 ldr r3, [r6] | r3 = *(r6);
0x000011e8 str r0, [r3] | *(r3) = r0;
0x000011ea str r0, [r3, 4] | *((r3 + 4)) = r0;
0x000011ec str r0, [r3, 8] | *((r3 + 8)) = r0;
0x000011ee str r0, [r3, 0xc] | *((r3 + 0xc)) = r0;
0x000011f0 str r0, [r3, 0x10] | *((r3 + 0x10)) = r0;
0x000011f2 str r0, [r3, 0x14] | *((r3 + 0x14)) = r0;
0x000011f4 str r0, [r3, 0x18] | *((r3 + 0x18)) = r0;
| }
| label_1:
0x000011f6 add sp, 0xc |
0x000011f8 pop {r4, r5, r6, r7, pc} |
0x000011fa ldr r3, [pc, 0x38] | r3 = *(0x1236);
0x000011fc ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x000011fe str r3, [r7] | *(r7) = r3;
0x00001200 b 0x11b8 |
| }
| label_2:
0x00001202 ldr r3, [pc, 0x34] | r3 = *(0x123a);
0x00001204 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x00001206 str r3, [r6] | *(r6) = r3;
0x00001208 b 0x11b0 | goto label_0;
| label_3:
0x0000120a ldr r5, [pc, 0x30] | r5 = *(0x123e);
0x0000120c mov r3, r0 | r3 = r0;
0x0000120e ldr r2, [pc, 0x30] |
0x00001210 movs r1, 1 | r1 = 1;
0x00001212 ldr r0, [r4, r5] | r0 = *((r4 + r5));
0x00001214 add r2, pc | r2 = 0x245a;
0x00001216 ldr r0, [r0] | r0 = *(r0);
0x00001218 blx 0x10ac | fprintf_chk ()
0x0000121c blx 0x10dc | abort ();
0x00001220 subs r5, 0xd4 | r5 -= 0xd4;
0x00001222 movs r0, r0 |
0x00001224 lsls r0, r7, 1 | r0 = r7 << 1;
0x00001226 movs r0, r0 |
0x00001228 lsls r4, r5, 1 | r4 = r5 << 1;
0x0000122a movs r0, r0 |
0x0000122c lsls r0, r4, 1 | r0 = r4 << 1;
0x0000122e movs r0, r0 |
0x00001230 lsls r4, r3, 1 | r4 = r3 << 1;
0x00001232 movs r0, r0 |
0x00001234 lsls r4, r6, 1 | r4 = r6 << 1;
0x00001236 movs r0, r0 |
0x00001238 lsls r4, r7, 1 | r4 = r7 << 1;
0x0000123a movs r0, r0 |
0x0000123c lsls r0, r5, 1 | r0 = r5 << 1;
0x0000123e movs r0, r0 |
0x00001240 asrs r0, r4, 0x1f | r0 = r4 >> 0x1f;
0x00001242 movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/liblttng-ust-libc-wrapper.so.1.0.0 @ 0x1338 */
| #include <stdint.h>
|
; (fcn) entry.init1 () | void entry_init1 () {
| int16_t var_0h;
| if (? >= ?) {
| label_1:
0x000012d4 ldrlt r4, [r0, -0x811] | r4 = *((r0 - 0x811));
| }
0x000012d8 sub sp, 0x10 |
0x000012da ldr r4, [pc, 0x44] |
0x000012dc add r0, pc | r0 += pc;
0x000012de add r4, pc | r4 = 0x2604;
0x000012e0 blx 0x107c | r0 = getenv (r0);
| if (r0 != 0) {
0x000012e4 cbz r0, 0x1316 |
0x000012e6 ldr r3, [pc, 0x3c] | r3 = *(0x1326);
0x000012e8 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x000012ea ldr r4, [r3] | r4 = *(0x1326);
0x000012ec blx 0x10a0 | getpid ();
0x000012f0 ldr r2, [pc, 0x34] |
0x000012f2 mov r3, r0 | r3 = r0;
0x000012f4 ldr r1, [pc, 0x34] |
0x000012f6 mov r0, r4 | r0 = r4;
0x000012f8 ldr.w ip, [pc, 0x34] |
0x000012fc add r2, pc | r2 = 0x2628;
0x000012fe add r1, pc | r1 = 0x262e;
0x00001300 adds r2, 0x28 | r2 += 0x28;
0x00001302 strd r1, r2, [sp, 4] | __asm ("strd r1, r2, [sp, 4]");
0x00001306 add ip, pc | ip = 0x263a;
0x00001308 ldr r2, [pc, 0x28] |
0x0000130a movs r1, 1 | r1 = 1;
0x0000130c str.w ip, [sp] | __asm ("str.w ip, [sp]");
0x00001310 add r2, pc | r2 = 0x2648;
0x00001312 blx 0x10ac | fprintf_chk ()
| }
0x00001316 add sp, 0x10 |
0x00001318 pop {r4, pc} |
0x00001338 push {r3, r4, r5, lr} |
0x0000133a ldr r3, [pc, 0x50] |
0x0000133c ldr r1, [pc, 0x50] | r1 = *(0x1390);
0x0000133e add r3, pc | r3 = 0x26d0;
0x00001340 ldr r2, [pc, 0x50] | r2 = *(0x1394);
0x00001342 ldr r0, [r3, r1] | r0 = *(0x26d0);
0x00001344 ldr r1, [r0] | r1 = *(0x26d0);
0x00001346 adds r4, r1, 1 | r4 = r1 + 1;
0x00001348 str r4, [r0] | *(r0) = r4;
0x0000134a ldr r4, [r3, r2] | r4 = *(0x26d0);
0x0000134c ldr r2, [r4] | r2 = *(0x26d0);
| if (r1 == 0) {
0x0000134e cbz r1, 0x135a | goto label_3;
| }
0x00001350 ldr r3, [r2, 4] | r3 = *((r2 + 4));
| if (r3 == 0) {
0x00001352 cbz r3, 0x1380 | goto label_4;
| }
| do {
| label_0:
0x00001354 pop.w {r3, r4, r5, lr} |
0x00001358 b 0x1264 | void (*0x1264)() ();
| if (r2 == 0) {
| label_3:
0x0000135a cbz r2, 0x1382 | goto label_5;
| }
| label_2:
0x0000135c ldr r5, [r4] | r5 = *(r4);
0x0000135e ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00001360 cmp r3, 0 |
0x00001362 bne 0x1354 |
| } while (r3 != 0);
0x00001364 ldr r0, [pc, 0x30] |
0x00001366 mov.w r1, 0x102 | r1 = 0x102;
0x0000136a add r0, pc | r0 = 0x2706;
0x0000136c blx 0x1088 | dlopen ();
0x00001370 ldr r3, [r4] | r3 = *(r4);
0x00001372 str r0, [r5, 4] | *((r5 + 4)) = r0;
0x00001374 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00001376 cmp r3, 0 |
| if (r3 != 0) {
0x00001378 bne 0x1354 | goto label_0;
| }
0x0000137a pop.w {r3, r4, r5, lr} |
0x0000137e b 0x12d4 | goto label_1;
| label_4:
0x00001380 pop {r3, r4, r5, pc} |
| label_5:
0x00001382 ldr r2, [pc, 0x18] | r2 = *(0x139e);
0x00001384 ldr r3, [r3, r2] | r3 = *((r3 + r2));
0x00001386 str r3, [r4] | *(r4) = r3;
0x00001388 b 0x135c | goto label_2;
| }
[*] Function printf used 3 times liblttng-ust-libc-wrapper.so.1.0.0