[*] Binary protection state of libconfutils.so
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function strcat tear down of libconfutils.so
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libconfutils.so @ 0x1ee0 */
| #include <stdint.h>
|
; (fcn) sym.simpleconf_create () | void simpleconf_create (int16_t arg_20h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00001ee0 invalid |
0x00001ee4 mov sb, r0 | sb = r0;
0x00001ee6 movs r0, 0x10 | r0 = 0x10;
0x00001ee8 mov r6, r1 | r6 = r1;
0x00001eea mov r8, r2 | r8 = r2;
0x00001eec mov r7, r3 | r7 = r3;
0x00001eee blx 0x1200 | r0 = fcn_00001200 ();
0x00001ef2 mov r5, r0 | r5 = r0;
0x00001ef4 mov r0, sb | r0 = sb;
0x00001ef6 blx 0x10c0 | fcn_000010c0 ();
0x00001efa ldr r4, [pc, 0xd8] |
0x00001efc str r0, [r5] | *(r5) = r0;
0x00001efe mov r0, r8 | r0 = r8;
0x00001f00 blx 0x1190 | g_key_file_unref ();
0x00001f04 ldr r3, [pc, 0xd0] | r3 = *(0x1fd8);
0x00001f06 add r4, pc | r4 = 0x3ee0;
0x00001f08 ldr r2, [pc, 0xd0] | r2 = *(0x1fdc);
0x00001f0a ldr r1, [pc, 0xd4] | r1 = *(0x1fe2);
0x00001f0c strd r7, r6, [r5, 8] | __asm ("strd r7, r6, [r5, 8]");
0x00001f10 str r0, [r5, 4] | *((r5 + 4)) = r0;
0x00001f12 ldr r1, [r4, r1] | r1 = *(0x3ee0);
0x00001f14 ldr r0, [r4, r3] | r0 = *(0x3ee0);
0x00001f16 movs r3, 0 | r3 = 0;
0x00001f18 ldr r2, [r4, r2] | r2 = *(0x3ee0);
0x00001f1a blx 0x10a8 | fcn_000010a8 ();
0x00001f1e ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x00001f20 mov r6, r0 | r6 = r0;
0x00001f22 ldr r3, [r1] | r3 = *(0x3ee0);
| if (r3 == 0) {
0x00001f24 cbz r3, 0x1f8e | goto label_1;
| }
0x00001f26 movs r4, 0 | r4 = 0;
0x00001f28 b 0x1f5e |
| while (r3 >= 0) {
0x00001f2a blx 0xff4 | r0 = fcn_00000ff4 ();
0x00001f2e mov r3, r0 | r3 = r0;
0x00001f30 movs r0, 4 | r0 = 4;
| if (r3 != 0) {
0x00001f32 cbnz r3, 0x1f9a | goto label_2;
| }
0x00001f34 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00001f36 ldr r3, [r3, r4] | r3 = *((r3 + r4));
0x00001f38 subs r3, 1 | r3--;
0x00001f3a cmp r3, 2 |
| if (r3 > 2) {
0x00001f3c bhi 0x1fba | goto label_3;
| }
0x00001f3e blx 0xf80 | g_malloc ();
0x00001f42 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00001f44 mov r2, r0 | r2 = r0;
0x00001f46 mov r1, r0 | r1 = r0;
0x00001f48 mov r0, r6 | r0 = r6;
0x00001f4a add r3, r4 | r3 += r4;
0x00001f4c adds r4, 0xc | r4 += 0xc;
0x00001f4e ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00001f50 str r3, [r2] | *(r2) = r3;
0x00001f52 blx 0x112c | fcn_0000112c ();
0x00001f56 ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x00001f58 ldr r3, [r1, r4] | r3 = *((r1 + r4));
0x00001f5a add r1, r4 | r1 += r4;
| if (r3 == 0) {
0x00001f5c cbz r3, 0x1f8e | goto label_1;
| }
0x00001f5e ldr r3, [r1, 8] | r3 = *((r1 + 8));
0x00001f60 mov r0, r6 | r0 = r6;
0x00001f62 adds r1, 8 | r1 += 8;
0x00001f64 cmp r3, 0 |
0x00001f66 bge 0x1f2a |
| }
0x00001f68 blx 0x1060 | fcn_00001060 ();
0x00001f6c ldr r2, [pc, 0x74] |
0x00001f6e movs r1, 7 | r1 = 7;
0x00001f70 add r2, pc | r2 = 0x3f58;
0x00001f72 blx 0xf50 | g_error_new ();
0x00001f76 ldr r3, [sp, 0x20] | r3 = *(arg_20h);
0x00001f78 str r0, [r3] | *(r3) = r0;
0x00001f7a mov r0, r6 | r0 = r6;
0x00001f7c blx 0x1144 | fcn_00001144 ();
| do {
| label_0:
0x00001f80 mov r0, r5 | r0 = r5;
0x00001f82 movs r5, 0 | r5 = 0;
0x00001f84 blx 0x1184 | g_strdup ();
0x00001f88 mov r0, r5 | r0 = r5;
0x00001f8a pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
| label_1:
0x00001f8e mov r0, r6 | r0 = r6;
0x00001f90 blx 0x1144 | fcn_00001144 ();
0x00001f94 mov r0, r5 | r0 = r5;
0x00001f96 pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
| label_2:
0x00001f9a blx 0x1060 | fcn_00001060 ();
0x00001f9e ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00001fa0 movs r1, 7 | r1 = 7;
0x00001fa2 ldr r2, [pc, 0x44] |
0x00001fa4 add r3, r4 | r3 += r4;
0x00001fa6 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00001fa8 add r2, pc | r2 = 0x3f96;
0x00001faa blx 0xf50 | g_error_new ();
0x00001fae ldr r3, [sp, 0x20] | r3 = *(arg_20h);
0x00001fb0 str r0, [r3] | *(r3) = r0;
0x00001fb2 mov r0, r6 | r0 = r6;
0x00001fb4 blx 0x1144 | fcn_00001144 ();
0x00001fb8 b 0x1f80 |
| } while (1);
| label_3:
0x00001fba blx 0x1060 | fcn_00001060 ();
0x00001fbe ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00001fc0 movs r1, 6 | r1 = 6;
0x00001fc2 ldr r2, [pc, 0x28] |
0x00001fc4 ldr r3, [r3, r4] | r3 = *((r3 + r4));
0x00001fc6 add r2, pc | r2 = 0x3fb8;
0x00001fc8 blx 0xf50 | g_error_new ();
0x00001fcc ldr r3, [sp, 0x20] | r3 = *(arg_20h);
0x00001fce str r0, [r3] | *(r3) = r0;
0x00001fd0 b 0x1f80 | goto label_0;
| }
[*] Function strcat used 1 times libconfutils.so