[*] Binary protection state of conf-migrate
Full RELRO Canary found NX disabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function strcpy tear down of conf-migrate
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/libexec/conf-migrate @ 0x295c */
| #include <stdint.h>
|
; (fcn) fcn.0000295c () | void fcn_0000295c () {
0x0000295c lui gp, 2 |
0x00002960 addiu gp, gp, -0x694c |
0x00002964 addu gp, gp, t9 | gp += t9;
0x00002968 addiu sp, sp, -0xf8 |
0x0000296c lw t9, -0x7f80(gp) | t9 = sym.imp.__lxstat;
0x00002970 sw s2, 0xd8(sp) | *(var_d8h) = s2;
0x00002974 lw s2, -0x7f00(gp) | s2 = *((gp - 8128));
0x00002978 sw gp, 0x10(sp) | *(var_10h_2) = gp;
0x0000297c sw s5, 0xe4(sp) | *(var_e4h) = s5;
0x00002980 lw v0, (s2) | v0 = *(s2);
0x00002984 sw s3, 0xdc(sp) | *(var_dch) = s3;
0x00002988 sw s0, 0xd0(sp) | *(var_d0h) = s0;
0x0000298c sw ra, 0xf4(sp) | *(var_f4h) = ra;
0x00002990 sw fp, 0xf0(sp) | *(var_f0h) = fp;
0x00002994 sw s7, 0xec(sp) | *(var_ech) = s7;
0x00002998 sw s6, 0xe8(sp) | *(var_e8h) = s6;
0x0000299c sw s4, 0xe0(sp) | *(var_e0h) = s4;
0x000029a0 sw s1, 0xd4(sp) | *(var_d4h) = s1;
0x000029a4 move s5, a0 | s5 = a0;
0x000029a8 sw zero, (a0) | *(a0) = 0;
0x000029ac move s0, a2 | s0 = a2;
0x000029b0 addiu a0, zero, 3 | a0 = 3;
0x000029b4 addiu a2, sp, 0x3c | a2 = sp + 0x3c;
0x000029b8 sw v0, 0xcc(sp) | *(var_cch) = v0;
0x000029bc move s3, a1 | s3 = a1;
0x000029c0 jalr t9 | t9 ();
0x000029c4 lw gp, 0x10(sp) | gp = *(var_10h_2);
| if (v0 < 0) {
0x000029c8 bltz v0, 0x2ae0 | goto label_3;
| }
0x000029cc lw v0, 0x50(sp) | v0 = *(var_50h);
0x000029d0 ori v1, zero, 0x8000 | v1 = 0x8000;
0x000029d4 andi v0, v0, 0xf000 | v0 &= 0xf000;
0x000029d8 lw t9, -0x7f30(gp) | t9 = sym.imp.open;
| if (v0 == v1) {
0x000029dc beq v0, v1, 0x2a3c | goto label_4;
| }
0x000029e0 lw a1, -0x7fdc(gp) | a1 = *((gp - 8183));
0x000029e4 lw t9, -0x7fd4(gp) | t9 = sym.msg;
0x000029e8 move a2, s3 | a2 = s3;
0x000029ec addiu a1, a1, 0x3880 | a1 += str.Not_a_regular_file__s.;
0x000029f0 addiu a0, zero, 3 | a0 = 3;
0x000029f4 bal 0x30a0 | sym_msg ();
0x000029f8 lw gp, 0x10(sp) | gp = *(var_10h_2);
0x000029fc move v0, zero | v0 = 0;
| do {
| label_0:
0x00002a00 lw a0, 0xcc(sp) | a0 = *(var_cch);
0x00002a04 lw v1, (s2) | v1 = *(s2);
0x00002a08 lw ra, 0xf4(sp) | ra = *(var_f4h);
| if (a0 != v1) {
0x00002a0c bne a0, v1, 0x2d20 | goto label_5;
| }
0x00002a10 lw fp, 0xf0(sp) | fp = *(var_f0h);
0x00002a14 lw s7, 0xec(sp) | s7 = *(var_ech);
0x00002a18 lw s6, 0xe8(sp) | s6 = *(var_e8h);
0x00002a1c lw s5, 0xe4(sp) | s5 = *(var_e4h);
0x00002a20 lw s4, 0xe0(sp) | s4 = *(var_e0h);
0x00002a24 lw s3, 0xdc(sp) | s3 = *(var_dch);
0x00002a28 lw s2, 0xd8(sp) | s2 = *(var_d8h);
0x00002a2c lw s1, 0xd4(sp) | s1 = *(var_d4h);
0x00002a30 lw s0, 0xd0(sp) | s0 = *(var_d0h);
0x00002a34 addiu sp, sp, 0xf8 |
0x00002a38 jr ra | return v0;
| label_4:
0x00002a3c move a1, zero | a1 = 0;
0x00002a40 move a0, s3 | a0 = s3;
0x00002a44 jalr t9 | t9 ();
0x00002a48 move s0, v0 | s0 = v0;
0x00002a4c lw gp, 0x10(sp) | gp = *(var_10h_2);
| if (v0 < 0) {
0x00002a50 bltz v0, 0x2cd4 | goto label_6;
| }
0x00002a54 lw v0, -0x7fdc(gp) | v0 = *((gp - 8183));
0x00002a58 lw a0, 0x6c(sp) | a0 = *(var_6ch);
0x00002a5c addiu t9, v0, 0x2900 | t9 = v0 + fcn.00002900;
0x00002a60 addiu a0, a0, 1 | a0++;
0x00002a64 sw t9, 0x28(sp) | *(var_28h) = t9;
0x00002a68 bal 0x2900 | fcn_00002900 ();
0x00002a6c lw gp, 0x10(sp) | gp = *(var_10h_2);
0x00002a70 lw a2, 0x6c(sp) | a2 = *(var_6ch);
0x00002a74 move a1, v0 | a1 = v0;
0x00002a78 lw t9, -0x7ef0(gp) | t9 = sym.imp.read;
0x00002a7c move a0, s0 | a0 = s0;
0x00002a80 move s7, v0 | s7 = v0;
0x00002a84 jalr t9 | t9 ();
0x00002a88 move s1, v0 | s1 = v0;
0x00002a8c lw gp, 0x10(sp) | gp = *(var_10h_2);
| if (v0 < 0) {
0x00002a90 bltz v0, 0x2b4c | goto label_7;
| }
0x00002a94 lw t9, -0x7f90(gp) | t9 = sym.imp.close;
0x00002a98 move a0, s0 | a0 = s0;
0x00002a9c jalr t9 | t9 ();
0x00002aa0 lw v0, 0x6c(sp) | v0 = *(var_6ch);
0x00002aa4 lw gp, 0x10(sp) | gp = *(var_10h_2);
| if (v0 == s1) {
0x00002aa8 beq v0, s1, 0x2b7c | goto label_8;
| }
0x00002aac lw a1, -0x7fdc(gp) | a1 = *((gp - 8183));
0x00002ab0 lw t9, -0x7fd4(gp) | t9 = sym.msg;
0x00002ab4 move a2, s3 | a2 = s3;
0x00002ab8 addiu a1, a1, 0x3c84 | a1 += str.Short_read_of__s.;
0x00002abc addiu a0, zero, 3 | a0 = 3;
0x00002ac0 bal 0x30a0 | sym_msg ();
0x00002ac4 lw gp, 0x10(sp) | gp = *(var_10h_2);
| label_1:
0x00002ac8 lw t9, -0x7efc(gp) | t9 = sym.imp.free;
0x00002acc move a0, s7 | a0 = s7;
0x00002ad0 jalr t9 | t9 ();
0x00002ad4 lw gp, 0x10(sp) | gp = *(var_10h_2);
0x00002ad8 move v0, zero | v0 = 0;
0x00002adc b 0x2a00 |
| } while (1);
| label_3:
0x00002ae0 lw t9, -0x7f50(gp) | t9 = sym.imp.__errno_location;
0x00002ae4 jalr t9 | t9 ();
0x00002ae8 nop |
0x00002aec lw gp, 0x10(sp) | gp = *(var_10h_2);
0x00002af0 lw v1, (v0) | v1 = *(v0);
0x00002af4 addiu v0, zero, 2 | v0 = 2;
0x00002af8 move a2, s3 | a2 = s3;
0x00002afc lw t9, -0x7fd4(gp) | t9 = sym.msg;
| if (v1 == v0) {
0x00002b00 bne v1, v0, 0x2b0c |
| if (s0 == 0) {
0x00002b04 beql s0, zero, 0x2b28 | goto label_9;
| }
0x00002b08 lw a1, -0x7fdc(gp) | a1 = *((gp - 8183));
| }
0x00002b0c lw a1, -0x7fdc(gp) | a1 = *((gp - 8183));
0x00002b10 addiu a0, zero, 3 | a0 = 3;
0x00002b14 addiu a1, a1, 0x3650 | a1 += str.Could_not_stat__s:__m;
0x00002b18 bal 0x30a0 | sym_msg ();
0x00002b1c lw gp, 0x10(sp) | gp = *(var_10h_2);
0x00002b20 move v0, zero | v0 = 0;
0x00002b24 b 0x2a00 | goto label_0;
| label_9:
0x00002b28 addiu a0, zero, 4 | a0 = 4;
0x00002b2c addiu a1, a1, 0x3c40 | a1 += str.File__s_does_not_exist._Will_not_translate_ownership_of_files.;
0x00002b30 bal 0x30a0 | sym_msg ();
0x00002b34 lw gp, 0x10(sp) | gp = *(var_10h_2);
0x00002b38 addiu a0, zero, 1 | a0 = 1;
0x00002b3c addiu v0, zero, 1 | v0 = 1;
0x00002b40 lw v1, -0x7fc0(gp) | v1 = *((gp - 8176));
0x00002b44 sb a0, 0x4150(v1) | *((v1 + 16720)) = a0;
0x00002b48 b 0x2a00 | goto label_0;
| label_7:
0x00002b4c lw a1, -0x7fdc(gp) | a1 = *((gp - 8183));
0x00002b50 lw t9, -0x7fd4(gp) | t9 = sym.msg;
0x00002b54 move a2, s3 | a2 = s3;
0x00002b58 addiu a1, a1, 0x38d0 | a1 += str.Could_not_read__s:__m;
0x00002b5c addiu a0, zero, 3 | a0 = 3;
0x00002b60 bal 0x30a0 | sym_msg ();
0x00002b64 lw gp, 0x10(sp) | gp = *(var_10h_2);
0x00002b68 lw t9, -0x7f90(gp) | t9 = sym.imp.close;
0x00002b6c move a0, s0 | a0 = s0;
0x00002b70 jalr t9 | t9 ();
0x00002b74 lw gp, 0x10(sp) | gp = *(var_10h_2);
0x00002b78 b 0x2ac8 | goto label_1;
| label_8:
0x00002b7c lw s6, -0x7fdc(gp) | s6 = *((gp - 8183));
0x00002b80 addu v0, s7, v0 | v0 = s7 + v0;
0x00002b84 lw t9, -0x7f60(gp) | t9 = sym.imp.strtok;
0x00002b88 sb zero, (v0) | *(v0) = 0;
0x00002b8c addiu a1, s6, 0x3c98 | a1 = s6 + 0x3c98;
0x00002b90 move a0, s7 | a0 = s7;
0x00002b94 sw zero, 0x34(sp) | *(var_34h) = 0;
0x00002b98 jalr t9 | t9 ();
0x00002b9c move s1, v0 | s1 = v0;
0x00002ba0 lw gp, 0x10(sp) | gp = *(var_10h_2);
| if (v0 == 0) {
0x00002ba4 beqz v0, 0x2d18 | goto label_10;
| }
0x00002ba8 lw fp, -0x7fdc(gp) | fp = *((gp - 8183));
0x00002bac addiu v0, sp, 0x34 | v0 = sp + 0x34;
0x00002bb0 sw v0, 0x2c(sp) | *(var_2ch) = v0;
0x00002bb4 addiu v0, fp, 0x3c9c | v0 = fp + str.Bad_line__s_found_in__s.;
0x00002bb8 sw v0, 0x20(sp) | *(var_20h_2) = v0;
0x00002bbc addiu fp, sp, 0x38 | fp = sp + 0x38;
0x00002bc0 addiu s6, s6, 0x3c98 | s6 += 0x3c98;
0x00002bc4 b 0x2c50 |
| while (v0 != 0) {
0x00002bc8 move a0, s0 | a0 = s0;
0x00002bcc addiu a2, zero, 0xa | a2 = 0xa;
0x00002bd0 move a1, fp | a1 = fp;
0x00002bd4 jalr t9 | t9 ();
0x00002bd8 lw a0, 0x38(sp) | a0 = *(var_38h);
0x00002bdc lw v1, 0x1c(sp) | v1 = *(var_1ch_3);
0x00002be0 lw gp, 0x10(sp) | gp = *(var_10h_2);
0x00002be4 sw v0, 0x24(sp) | *(var_24h_2) = v0;
| if (a0 != v1) {
0x00002be8 bne a0, v1, 0x2cb4 | goto label_11;
| }
0x00002bec lw t9, 0x28(sp) | t9 = *(var_28h);
| if (s0 == a0) {
0x00002bf0 beq s0, a0, 0x2cb4 | goto label_11;
| }
0x00002bf4 addiu a0, zero, 0x2c | a0 = 0x2c;
0x00002bf8 jalr t9 | t9 ();
0x00002bfc lw gp, 0x10(sp) | gp = *(var_10h_2);
0x00002c00 lw a2, 0x24(sp) | a2 = *(var_24h_2);
0x00002c04 sb zero, (s4) | *(s4) = 0;
0x00002c08 lw t9, -0x7f18(gp) | t9 = sym.imp.strcpy
0x00002c0c move a1, s1 | a1 = s1;
0x00002c10 sw a2, 4(v0) | *((v0 + 1)) = a2;
0x00002c14 addiu a0, v0, 8 | a0 = v0 + 8;
0x00002c18 move s0, v0 | s0 = v0;
0x00002c1c jalr t9 | t9 ();
0x00002c20 lw v0, 0x2c(sp) | v0 = *(var_2ch);
0x00002c24 lw gp, 0x10(sp) | gp = *(var_10h_2);
0x00002c28 sw s0, 0x2c(sp) | *(var_2ch) = s0;
0x00002c2c sw zero, (s0) | *(s0) = 0;
0x00002c30 sw s0, (v0) | *(v0) = s0;
| label_2:
0x00002c34 lw t9, -0x7f60(gp) | t9 = sym.imp.strtok;
0x00002c38 move a1, s6 | a1 = s6;
0x00002c3c move a0, zero | a0 = 0;
0x00002c40 jalr t9 | t9 ();
0x00002c44 move s1, v0 | s1 = v0;
0x00002c48 lw gp, 0x10(sp) | gp = *(var_10h_2);
| if (v0 == 0) {
0x00002c4c beqz v0, 0x2cf8 | goto label_12;
| }
0x00002c50 lw t9, -0x7f38(gp) | t9 = sym.imp.strchr;
0x00002c54 addiu a1, zero, 0x3a | a1 = 0x3a;
0x00002c58 move a0, s1 | a0 = s1;
0x00002c5c jalr t9 | t9 ();
0x00002c60 move s4, v0 | s4 = v0;
0x00002c64 lw gp, 0x10(sp) | gp = *(var_10h_2);
| if (v0 == 0) {
0x00002c68 beqz v0, 0x2cb4 | goto label_11;
| }
0x00002c6c lw t9, -0x7f38(gp) | t9 = sym.imp.strchr;
0x00002c70 addiu a1, zero, 0x3a | a1 = 0x3a;
0x00002c74 addiu a0, v0, 1 | a0 = v0 + 1;
0x00002c78 jalr t9 | t9 ();
0x00002c7c lw gp, 0x10(sp) | gp = *(var_10h_2);
| if (v0 == 0) {
0x00002c80 beqz v0, 0x2cb4 | goto label_11;
| }
0x00002c84 lw t9, -0x7f38(gp) | t9 = sym.imp.strchr;
0x00002c88 addiu s0, v0, 1 | s0 = v0 + 1;
0x00002c8c addiu a1, zero, 0x3a | a1 = 0x3a;
0x00002c90 move a0, s0 | a0 = s0;
0x00002c94 jalr t9 | t9 ();
0x00002c98 sw v0, 0x1c(sp) | *(var_1ch_3) = v0;
0x00002c9c lw gp, 0x10(sp) | gp = *(var_10h_2);
| if (v0 == 0) {
0x00002ca0 beqz v0, 0x2cb4 | goto label_11;
| }
0x00002ca4 subu v0, s4, s1 | __asm ("subu v0, s4, s1");
0x00002ca8 slti v0, v0, 0x21 | v0 = (v0 < 0x21) ? 1 : 0;
0x00002cac lw t9, -0x7f34(gp) | t9 = sym.imp.strtoul;
0x00002cb0 bnez v0, 0x2bc8 |
| }
| label_11:
0x00002cb4 lw t9, -0x7fd4(gp) | t9 = sym.msg;
0x00002cb8 lw a1, 0x20(sp) | a1 = *(var_20h_2);
0x00002cbc move a3, s3 | a3 = s3;
0x00002cc0 move a2, s1 | a2 = s1;
0x00002cc4 addiu a0, zero, 4 | a0 = 4;
0x00002cc8 bal 0x30a0 | sym_msg ();
0x00002ccc lw gp, 0x10(sp) | gp = *(var_10h_2);
0x00002cd0 b 0x2c34 | goto label_2;
| label_6:
0x00002cd4 lw a1, -0x7fdc(gp) | a1 = *((gp - 8183));
0x00002cd8 lw t9, -0x7fd4(gp) | t9 = sym.msg;
0x00002cdc move a2, s3 | a2 = s3;
0x00002ce0 addiu a1, a1, 0x389c | a1 += str.Could_not_open__s:__m;
0x00002ce4 addiu a0, zero, 3 | a0 = 3;
0x00002ce8 bal 0x30a0 | sym_msg ();
0x00002cec lw gp, 0x10(sp) | gp = *(var_10h_2);
0x00002cf0 move v0, zero | v0 = 0;
0x00002cf4 b 0x2a00 | goto label_0;
| label_12:
0x00002cf8 lw s0, 0x34(sp) | s0 = *(var_34h);
| do {
0x00002cfc lw t9, -0x7efc(gp) | t9 = sym.imp.free;
0x00002d00 move a0, s7 | a0 = s7;
0x00002d04 jalr t9 | t9 ();
0x00002d08 lw gp, 0x10(sp) | gp = *(var_10h_2);
0x00002d0c addiu v0, zero, 1 | v0 = 1;
0x00002d10 sw s0, (s5) | *(s5) = s0;
0x00002d14 b 0x2a00 | goto label_0;
| label_10:
0x00002d18 move s0, zero | s0 = 0;
0x00002d1c b 0x2cfc |
| } while (1);
| label_5:
0x00002d20 lw t9, -0x7f08(gp) | t9 = sym.imp.__stack_chk_fail;
0x00002d24 jalr t9 | t9 ();
0x00002d28 nop |
| }
[*] Function strcpy used 2 times conf-migrate