[*] Binary protection state of systemd-makefs
Full RELRO Canary found NX disabled PIE enabled RPATH No RUNPATH No Symbols
[*] Function strcpy tear down of systemd-makefs
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/lib/systemd/systemd-makefs @ 0x1130 */
| #include <stdint.h>
|
; (fcn) fcn.00001130 () | void fcn_00001130 () {
0x00001130 lui gp, 2 |
0x00001134 addiu gp, gp, -0x7130 |
0x00001138 addu gp, gp, t9 | gp += t9;
0x0000113c addiu sp, sp, -0x58 |
0x00001140 lw t9, -0x7fb0(gp) | t9 = sym.imp.strcmp;
0x00001144 sw s1, 0x44(sp) | *(var_44h) = s1;
0x00001148 lw s1, -0x7f88(gp) | s1 = *((gp - 8162));
0x0000114c sw fp, 0x50(sp) | *(var_50h) = fp;
0x00001150 sw s3, 0x4c(sp) | *(var_4ch) = s3;
0x00001154 sw s0, 0x40(sp) | *(var_40h) = s0;
0x00001158 sw gp, 0x20(sp) | *(var_20h) = gp;
0x0000115c sw ra, 0x54(sp) | *(var_54h) = ra;
0x00001160 sw s2, 0x48(sp) | *(var_48h) = s2;
0x00001164 move fp, sp | fp = sp;
0x00001168 lw v0, (s1) | v0 = *(s1);
0x0000116c move s0, a1 | s0 = a1;
0x00001170 lw a1, -0x7fdc(gp) | a1 = *((gp - 8183));
0x00001174 sw v0, 0x3c(fp) | *(arg_3ch) = v0;
0x00001178 addiu a1, a1, 0x15e0 | a1 += 0x15e0;
0x0000117c move s3, a0 | s3 = a0;
0x00001180 jalr t9 | t9 ();
0x00001184 lw gp, 0x20(fp) | gp = *(arg_20h);
| if (v0 == 0) {
0x00001188 beqz v0, 0x12cc | goto label_1;
| }
0x0000118c lw t9, -0x7f7c(gp) | t9 = sym.imp.strlen;
0x00001190 move a0, s3 | a0 = s3;
0x00001194 jalr t9 | t9 ();
0x00001198 lui a0, 0x40 | a0 = 0x400000;
0x0000119c addiu v1, v0, 0xc | v1 = v0 + 0xc;
0x000011a0 addiu a0, a0, 1 | a0++;
0x000011a4 sltu v1, v1, a0 | v1 = (v1 < a0) ? 1 : 0;
0x000011a8 lw gp, 0x20(fp) | gp = *(arg_20h);
| if (v1 == 0) {
0x000011ac beqz v1, 0x1328 | goto label_2;
| }
0x000011b0 lw a0, -0x7fdc(gp) | a0 = *((gp - 8183));
0x000011b4 addiu v0, v0, 0x13 | v0 += 0x13;
0x000011b8 srl v0, v0, 3 | v0 >>= 3;
0x000011bc addiu v1, a0, 0x164c | v1 = a0 + str._sbin_mkfs.;
0x000011c0 sll v0, v0, 3 | v0 <<= 3;
0x000011c4 subu sp, sp, v0 |
0x000011c8 addiu s2, sp, 0x20 | s2 = sp + 0x20;
0x000011cc lw a1, 0x164c(a0) | a1 = *(a0);
0x000011d0 lw v0, 8(v1) | v0 = *((v1 + 2));
0x000011d4 lw a0, 4(v1) | a0 = *((v1 + 1));
0x000011d8 lw t9, -0x7f84(gp) | t9 = sym.imp.strcpy
0x000011dc sw a1, (s2) | *(s2) = a1;
0x000011e0 sw a0, 4(s2) | *((s2 + 1)) = a0;
0x000011e4 sw v0, 8(s2) | *((s2 + 2)) = v0;
0x000011e8 move a1, s3 | a1 = s3;
0x000011ec addiu a0, s2, 0xb | a0 = s2 + 0xb;
0x000011f0 jalr t9 | t9 ();
0x000011f4 lw gp, 0x20(fp) | gp = *(arg_20h);
| do {
0x000011f8 lw t9, -0x7f6c(gp) | t9 = sym.imp.access;
0x000011fc addiu a1, zero, 1 | a1 = 1;
0x00001200 move a0, s2 | a0 = s2;
0x00001204 jalr t9 | t9 ();
0x00001208 lw gp, 0x20(fp) | gp = *(arg_20h);
| if (v0 != 0) {
0x0000120c beqz v0, 0x1250 |
0x00001210 lw t9, -0x7f3c(gp) | t9 = sym.imp.__errno_location;
0x00001214 jalr t9 | t9 ();
0x00001218 nop |
0x0000121c lw gp, 0x20(fp) | gp = *(arg_20h);
0x00001220 move a0, zero | a0 = 0;
0x00001224 lw t9, -0x7fb4(gp) | t9 = sym.imp.log_get_max_level_realm;
0x00001228 lw s0, (v0) | s0 = *(v0);
0x0000122c jalr t9 | t9 ();
0x00001230 slti v0, v0, 3 | v0 = (v0 < 3) ? 1 : 0;
0x00001234 lw gp, 0x20(fp) | gp = *(arg_20h);
| if (v0 == 0) {
0x00001238 beqz v0, 0x12e8 | goto label_3;
| }
0x0000123c move a1, s0 | a1 = s0;
| if (s0 < 0) {
0x00001240 bltz s0, 0x12d8 | goto label_4;
| }
0x00001244 andi v0, a1, 0xff | v0 = a1 & 0xff;
0x00001248 negu v0, v0 | __asm ("negu v0, v0");
0x0000124c b 0x1298 |
| } else {
0x00001250 lw a0, -0x7fdc(gp) | a0 = *((gp - 8183));
0x00001254 lw t9, -0x7fa4(gp) | t9 = sym.imp.safe_fork_full;
0x00001258 addiu v0, fp, 0x2c | v0 = fp + 0x2c;
0x0000125c sw v0, 0x10(sp) | *(var_10h) = v0;
0x00001260 addiu a3, zero, 0x225 | a3 = 0x225;
0x00001264 move a2, zero | a2 = 0;
0x00001268 move a1, zero | a1 = 0;
0x0000126c addiu a0, a0, 0x1644 | a0 += str._mkfs_;
0x00001270 jalr t9 | t9 ();
0x00001274 lw gp, 0x20(fp) | gp = *(arg_20h);
| if (v0 < 0) {
0x00001278 bltz v0, 0x1298 | goto label_0;
| }
0x0000127c lw t9, -0x7f80(gp) | t9 = sym.imp.wait_for_terminate_and_check;
| if (v0 == 0) {
0x00001280 beqz v0, 0x135c | goto label_5;
| }
0x00001284 lw a1, 0x2c(fp) | a1 = *(arg_2ch);
0x00001288 addiu a2, zero, 3 | a2 = 3;
0x0000128c move a0, s2 | a0 = s2;
0x00001290 jalr t9 | t9 ();
0x00001294 lw gp, 0x20(fp) | gp = *(arg_20h);
| }
| label_0:
0x00001298 lw a0, 0x3c(fp) | a0 = *(arg_3ch);
0x0000129c lw v1, (s1) | v1 = *(s1);
0x000012a0 lw t9, -0x7f98(gp) | t9 = sym.imp.__stack_chk_fail;
| if (a0 != v1) {
0x000012a4 bne a0, v1, 0x1354 | goto label_6;
| }
0x000012a8 move sp, fp |
0x000012ac lw ra, 0x54(sp) | ra = *(var_54h);
0x000012b0 lw fp, 0x50(sp) | fp = *(var_50h);
0x000012b4 lw s3, 0x4c(sp) | s3 = *(var_4ch);
0x000012b8 lw s2, 0x48(sp) | s2 = *(var_48h);
0x000012bc lw s1, 0x44(sp) | s1 = *(var_44h);
0x000012c0 lw s0, 0x40(sp) | s0 = *(var_40h);
0x000012c4 addiu sp, sp, 0x58 |
0x000012c8 jr ra | return v0;
| label_1:
0x000012cc lw s2, -0x7fdc(gp) | s2 = *((gp - 8183));
0x000012d0 addiu s2, s2, 0x15d8 | s2 += str._sbin_mkswap;
0x000012d4 b 0x11f8 |
| } while (1);
| label_4:
0x000012d8 negu a1, s0 | __asm ("negu a1, s0");
0x000012dc andi v0, a1, 0xff | v0 = a1 & 0xff;
0x000012e0 negu v0, v0 | __asm ("negu v0, v0");
0x000012e4 b 0x1298 | goto label_0;
| label_3:
0x000012e8 lw v0, -0x7fdc(gp) | v0 = *((gp - 8183));
0x000012ec lw a2, -0x7fdc(gp) | a2 = *((gp - 8183));
0x000012f0 addiu v0, v0, 0x1628 | v0 += str._s_is_not_executable:__m;
0x000012f4 sw v0, 0x14(sp) | *(var_14h) = v0;
0x000012f8 lw v0, -0x7fdc(gp) | v0 = *((gp - 8183));
0x000012fc lw t9, -0x7f94(gp) | t9 = sym.imp.log_internal_realm;
0x00001300 addiu v0, v0, 0x172c | v0 += 0x172c;
0x00001304 sw s2, 0x18(sp) | *(var_18h) = s2;
0x00001308 sw v0, 0x10(sp) | *(var_10h) = v0;
0x0000130c addiu a3, zero, 0x1d | a3 = 0x1d;
0x00001310 addiu a2, a2, 0x15ef | a2 += 0x15ef;
0x00001314 move a1, s0 | a1 = s0;
0x00001318 addiu a0, zero, 3 | a0 = 3;
0x0000131c jalr t9 | t9 ();
0x00001320 lw gp, 0x20(fp) | gp = *(arg_20h);
0x00001324 b 0x1298 | goto label_0;
| label_2:
0x00001328 lw v0, -0x7fdc(gp) | v0 = *((gp - 8183));
0x0000132c lw a2, -0x7fdc(gp) | a2 = *((gp - 8183));
0x00001330 lw a1, -0x7fdc(gp) | a1 = *((gp - 8183));
0x00001334 addiu v0, v0, 0x1734 | v0 += str.makefs;
0x00001338 lw t9, -0x7f5c(gp) | t9 = sym.imp.log_assert_failed_realm;
0x0000133c sw v0, 0x10(sp) | *(var_10h) = v0;
0x00001340 addiu a3, zero, 0x1b | a3 = 0x1b;
0x00001344 addiu a2, a2, 0x15ef | a2 += 0x15ef;
0x00001348 addiu a1, a1, 0x1608 | a1 += str.sizeof_char__n____ALLOCA_MAX;
0x0000134c move a0, zero | a0 = 0;
0x00001350 jalr t9 | t9 ();
| label_6:
0x00001354 jalr t9 | t9 ();
0x00001358 nop |
| label_5:
0x0000135c lw t9, -0x7f78(gp) | t9 = sym.imp.execv;
0x00001360 move a0, s2 | a0 = s2;
0x00001364 addiu a1, fp, 0x30 | a1 = fp + 0x30;
0x00001368 sw s2, 0x30(fp) | *(arg_30h) = s2;
0x0000136c sw s0, 0x34(fp) | *(arg_34h) = s0;
0x00001370 sw zero, 0x38(fp) | *(arg_38h) = 0;
0x00001374 jalr t9 | t9 ();
0x00001378 lw gp, 0x20(fp) | gp = *(arg_20h);
0x0000137c lw t9, -0x7f54(gp) | t9 = sym.imp._exit;
0x00001380 addiu a0, zero, 1 | a0 = 1;
0x00001384 jalr t9 | t9 ();
0x00001388 nop |
0x0000138c nop |
| }
[*] Function strcpy used 2 times systemd-makefs