[*] Binary protection state of libglib-2.0.so.0.5600.4
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function sprintf tear down of libglib-2.0.so.0.5600.4
; 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/libglib-2.0.so.0.5600.4 @ 0x60738 */
| #include <stdint.h>
|
; (fcn) sym.g_strdup_vprintf () | void g_strdup_vprintf (int32_t arg1, int32_t arg2) {
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x00060738 push {r0, r1, r2, lr} |
0x0006073c mov r2, 0 | r2 = 0;
0x00060740 add r3, sp, 8 | r3 += var_8h;
0x00060744 str r2, [r3, -4]! | *((r3 -= 4)) = r2;
0x00060748 mov r2, r1 | r2 = r1;
0x0006074c mov r1, r0 | r1 = r0;
0x00060750 mov r0, r3 | r0 = r3;
0x00060754 bl 0x83c08 | g_vasprintf ()
0x00060758 ldr r0, [sp, 4] | r0 = var_4h;
0x0006075c add sp, sp, 0xc |
0x00060760 pop {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/libglib-2.0.so.0.5600.4 @ 0x64458 */
| #include <stdint.h>
|
; (fcn) sym.g_string_append_vprintf () | void g_string_append_vprintf (int32_t arg1, uint32_t arg2) {
| void * s2;
| int32_t var_1h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x00064458 push {r0, r1, r2, r4, r5, lr} |
0x0006445c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x00064460 beq 0x64490 |
0x00064464 cmp r1, 0 |
| if (r1 != 0) {
0x00064468 bne 0x644bc | goto label_1;
| }
0x0006446c ldr r1, [pc, 0x90] |
0x00064470 ldr r2, [pc, 0x90] | r2 = *(0x64504);
0x00064474 ldr r0, [pc, 0x90] | r0 = *(0x64508);
0x00064478 add r1, pc, r1 | r1 = pc + r1;
0x0006447c add r1, r1, 0x190 | r1 = 0x64690;
0x00064480 add r2, pc, r2 | r2 = pc + r2;
0x00064484 add r1, r1, 2 | r1 += 2;
0x00064488 add r0, pc, r0 | r0 = pc + r0;
0x0006448c b 0x644b0 |
| } else {
0x00064490 ldr r1, [pc, 0x78] |
0x00064494 ldr r2, [pc, 0x78] | r2 = *(0x64510);
0x00064498 ldr r0, [pc, 0x78] | r0 = *(0x64514);
0x0006449c add r1, pc, r1 | r1 = pc + r1;
0x000644a0 add r1, r1, 0x190 | r1 = 0x6469c;
0x000644a4 add r2, pc, r2 | r2 = pc + r2;
0x000644a8 add r1, r1, 2 | r1 += 2;
0x000644ac add r0, pc, r0 | r0 = pc + r0;
| }
0x000644b0 bl 0x4d3f0 | g_return_if_fail_warning ();
| do {
| label_0:
0x000644b4 add sp, sp, 0xc |
0x000644b8 pop {r4, r5, pc} |
| label_1:
0x000644bc add r0, sp, 4 | r0 += s2;
0x000644c0 bl 0x83c08 | g_vasprintf ()
0x000644c4 subs r5, r0, 0 | r5 -= s2;
0x000644c8 blt 0x644b4 |
| } while (r5 < s2);
0x000644cc mov r1, r5 | r1 = r5;
0x000644d0 mov r0, r4 | r0 = r4;
0x000644d4 bl 0x63408 | fcn_00063408 (r0, r1);
0x000644d8 ldr r1, [sp, 4] | r1 = s2;
0x000644dc add r2, r5, 1 | r2 += var_1h;
0x000644e0 ldm r4, {r0, r3} | r0 = *(r4);
| r3 = *((r4 + 4));
0x000644e4 add r0, r0, r3 | r0 += r3;
0x000644e8 bl 0x176fc | memcpy (r0, r1, r2);
0x000644ec ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x000644f0 ldr r0, [sp, 4] | r0 = s2;
0x000644f4 add r1, r1, r5 | r1 += r5;
0x000644f8 str r1, [r4, 4] | *((r4 + 4)) = r1;
0x000644fc bl 0x4b940 | g_free ();
0x00064500 b 0x644b4 | goto label_0;
| }
[*] Function sprintf used 3 times libglib-2.0.so.0.5600.4