[*] Binary protection state of parhand

  
  	Full RELRO     Canary found      NX disabled  PIE enabled  No RPATH     No RUNPATH   No Symbols


[*] Function popen tear down of parhand

    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/parhand @ 0x90e8 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.map_updateRunGetter ()       | void map_updateRunGetter () {
    0x000090e8 lui gp, 4                     |     
    0x000090ec addiu gp, gp, -0x5d98         |     
    0x000090f0 addu gp, gp, t9               |     gp += t9;
    0x000090f4 lw v0, -0x7fb4(gp)            |     v0 = *(gp);
    0x000090f8 addiu sp, sp, -0x40           |     
    0x000090fc sw s0, 0x1c(sp)               |     *(var_1ch) = s0;
    0x00009100 lw s0, (v0)                   |     s0 = *(v0);
    0x00009104 sw gp, 0x10(sp)               |     *(var_10h) = gp;
    0x00009108 sw ra, 0x3c(sp)               |     *(var_3ch) = ra;
    0x0000910c sw s7, 0x38(sp)               |     *(var_38h) = s7;
    0x00009110 sw s6, 0x34(sp)               |     *(var_34h) = s6;
    0x00009114 sw s5, 0x30(sp)               |     *(var_30h) = s5;
    0x00009118 sw s4, 0x2c(sp)               |     *(var_2ch) = s4;
    0x0000911c sw s3, 0x28(sp)               |     *(var_28h) = s3;
    0x00009120 sw s2, 0x24(sp)               |     *(var_24h) = s2;
    0x00009124 sw s1, 0x20(sp)               |     *(var_20h) = s1;
    0x00009128 lw ra, 0x3c(sp)               |     ra = *(var_3ch);
                                             |     if (s0 != 0) {
    0x0000912c bnez s0, 0x91c0               |         goto label_2;
                                             |     }
    0x00009130 move s3, a1                   |     s3 = a1;
                                             |     if (a1 == 0) {
    0x00009134 beqz a1, 0x91c0               |         goto label_2;
                                             |     }
    0x00009138 lw a1, -0x7fc4(gp)            |     a1 = *(gp);
    0x0000913c lw t9, -0x7d04(gp)            |     t9 = sym.imp.strncmp;
    0x00009140 move s6, a0                   |     s6 = a0;
    0x00009144 addiu a2, zero, 8             |     a2 = 8;
                                             |     /* str.disabled */
    0x00009148 addiu a1, a1, 0x6320          |     a1 += 0x6320;
    0x0000914c move a0, s3                   |     a0 = s3;
    0x00009150 jalr t9                       |     t9 ();
    0x00009154 lw gp, 0x10(sp)               |     gp = *(var_10h);
                                             |     if (v0 == 0) {
    0x00009158 beqz v0, 0x91bc               |         goto label_3;
                                             |     }
    0x0000915c lw v0, 0x34(s6)               |     v0 = *((s6 + 13));
    0x00009160 lw a1, -0x7fbc(gp)            |     a1 = *((gp - 8175));
                                             |     if (v0 == 0) {
    0x00009164 beqz v0, 0x91ec               |         goto label_4;
                                             |     }
    0x00009168 lw s1, 0x2c(s6)               |     s1 = *((s6 + 11));
    0x0000916c lw s2, -0x7fc4(gp)            |     s2 = *(gp);
                                             |     if (s1 == 0) {
    0x00009170 beqz s1, 0x91ec               |         goto label_4;
                                             |     }
                                             |     /* esilref: 'type' */
    0x00009174 addiu s2, s2, 0x658c          |     s2 += 0x658c;
    0x00009178 b 0x9188                      |     
                                             |     while (v0 != 0) {
    0x0000917c lw s1, (s1)                   |         s1 = *(s1);
    0x00009180 lw a1, -0x7fbc(gp)            |         a1 = *((gp - 8175));
                                             |         if (s1 == 0) {
    0x00009184 beqz s1, 0x91ec               |             goto label_4;
                                             |         }
    0x00009188 lw t9, -0x7d40(gp)            |         t9 = sym.imp.strcmp;
    0x0000918c lw a0, 4(s1)                  |         a0 = *((s1 + 1));
    0x00009190 move a1, s2                   |         a1 = s2;
    0x00009194 jalr t9                       |         t9 ();
    0x00009198 lw gp, 0x10(sp)               |         gp = *(var_10h);
    0x0000919c bnez v0, 0x917c               |         
                                             |     }
    0x000091a0 lw a1, -0x7fc4(gp)            |     a1 = *(gp);
    0x000091a4 lw t9, -0x7c98(gp)            |     t9 = sym.imp.strstr;
    0x000091a8 lw a0, 8(s1)                  |     a0 = *((s1 + 2));
                                             |     /* str.const */
    0x000091ac addiu a1, a1, 0x66e0          |     a1 += 0x66e0;
    0x000091b0 jalr t9                       |     t9 ();
    0x000091b4 lw gp, 0x10(sp)               |     gp = *(var_10h);
                                             |     if (v0 != 0) {
    0x000091b8 beqz v0, 0x91e8               |         
                                             | label_3:
    0x000091bc lw ra, 0x3c(sp)               |         ra = *(var_3ch);
                                             | label_2:
    0x000091c0 lw s7, 0x38(sp)               |         s7 = *(var_38h);
    0x000091c4 lw s6, 0x34(sp)               |         s6 = *(var_34h);
    0x000091c8 lw s5, 0x30(sp)               |         s5 = *(var_30h);
    0x000091cc lw s4, 0x2c(sp)               |         s4 = *(var_2ch);
    0x000091d0 lw s3, 0x28(sp)               |         s3 = *(var_28h);
    0x000091d4 lw s2, 0x24(sp)               |         s2 = *(var_24h);
    0x000091d8 lw s1, 0x20(sp)               |         s1 = *(var_20h);
    0x000091dc lw s0, 0x1c(sp)               |         s0 = *(var_1ch);
    0x000091e0 addiu sp, sp, 0x40            |         
    0x000091e4 jr ra                         |         return v0;
                                             |     }
    0x000091e8 lw a1, -0x7fbc(gp)            |     a1 = *((gp - 8175));
                                             | label_4:
    0x000091ec lw t9, -0x7bc0(gp)            |     t9 = sym.imp.popen
    0x000091f0 addiu a1, a1, -0x6754         |     a1 += -0x6754;
    0x000091f4 move a0, s3                   |     a0 = s3;
    0x000091f8 jalr t9                       |     t9 ();
    0x000091fc move s4, v0                   |     s4 = v0;
    0x00009200 lw gp, 0x10(sp)               |     gp = *(var_10h);
                                             |     if (v0 == 0) {
    0x00009204 beqz v0, 0x9380               |         goto label_5;
                                             |     }
    0x00009208 lw t9, -0x7cac(gp)            |     t9 = sym.imp.malloc;
    0x0000920c addiu a0, zero, 0x10          |     a0 = 0x10;
    0x00009210 jalr t9                       |     t9 ();
    0x00009214 move s2, v0                   |     s2 = v0;
    0x00009218 lw gp, 0x10(sp)               |     gp = *(var_10h);
    0x0000921c addiu s1, zero, 0x10          |     s1 = 0x10;
    0x00009220 addiu s5, zero, -1            |     s5 = -1;
                                             |     if (v0 != 0) {
    0x00009224 bnez v0, 0x92a8               |         goto label_6;
                                             |     }
    0x00009228 lw a0, -0x7fc4(gp)            |     a0 = *(gp);
    0x0000922c lw a2, -0x7fc4(gp)            |     a2 = *(gp);
    0x00009230 lw a1, -0x7fc4(gp)            |     a1 = *(gp);
    0x00009234 lw t9, -0x7fc8(gp)            |     t9 = sym.fatald;
                                             |     /* str.axismapping.c */
    0x00009238 addiu a0, a0, 0x61a4          |     a0 += 0x61a4;
                                             |     /* str.map_updateRunGetter */
    0x0000923c addiu a2, a2, 0x6788          |     a2 += 0x6788;
                                             |     /* str.Out_of_memory_in__s_ */
    0x00009240 addiu a1, a1, 0x6688          |     a1 += 0x6688;
    0x00009244 bal 0x199c0                   |     sym_fatald ();
    0x00009248 lw gp, 0x10(sp)               |     gp = *(var_10h);
                                             | label_1:
    0x0000924c lw ra, 0x3c(sp)               |     ra = *(var_3ch);
    0x00009250 lw s7, 0x38(sp)               |     s7 = *(var_38h);
    0x00009254 lw s6, 0x34(sp)               |     s6 = *(var_34h);
    0x00009258 lw s5, 0x30(sp)               |     s5 = *(var_30h);
    0x0000925c lw s3, 0x28(sp)               |     s3 = *(var_28h);
    0x00009260 lw s2, 0x24(sp)               |     s2 = *(var_24h);
    0x00009264 lw s1, 0x20(sp)               |     s1 = *(var_20h);
    0x00009268 lw s0, 0x1c(sp)               |     s0 = *(var_1ch);
    0x0000926c move a0, s4                   |     a0 = s4;
    0x00009270 lw t9, -0x7cbc(gp)            |     t9 = sym.imp.pclose;
    0x00009274 lw s4, 0x2c(sp)               |     s4 = *(var_2ch);
    0x00009278 addiu sp, sp, 0x40            |     
    0x0000927c jr t9                         |     t9 ();
                                             | label_0:
    0x00009280 addiu s1, s1, 0x10            |     s1 += 0x10;
    0x00009284 move a0, s2                   |     a0 = s2;
    0x00009288 move a1, s1                   |     a1 = s1;
    0x0000928c jalr t9                       |     t9 ();
    0x00009290 lw gp, 0x10(sp)               |     gp = *(var_10h);
                                             |     if (v0 == 0) {
    0x00009294 beqz v0, 0x93c8               |         goto label_7;
                                             |     }
    0x00009298 move s2, v0                   |     s2 = v0;
    0x0000929c addu v0, s2, s0               |     v0 = s2 + s0;
                                             |     do {
    0x000092a0 addiu s0, s0, 1               |         s0++;
    0x000092a4 sb s7, (v0)                   |         *(v0) = s7;
                                             | label_6:
    0x000092a8 lw t9, -0x7c54(gp)            |         t9 = sym.imp.fgetc;
    0x000092ac move a0, s4                   |         a0 = s4;
    0x000092b0 jalr t9                       |         t9 ();
    0x000092b4 addiu v1, s1, -1              |         v1 = s1 + -1;
    0x000092b8 lw gp, 0x10(sp)               |         gp = *(var_10h);
    0x000092bc move s7, v0                   |         s7 = v0;
    0x000092c0 slt v1, s0, v1                |         v1 = (s0 < v1) ? 1 : 0;
                                             |         if (v0 == s5) {
    0x000092c4 beq v0, s5, 0x92d8            |             goto label_8;
                                             |         }
    0x000092c8 addu v0, s2, s0               |         v0 = s2 + s0;
    0x000092cc bnez v1, 0x92a0               |         
                                             |     } while (v1 != 0);
    0x000092d0 lw t9, -0x7b60(gp)            |     t9 = sym.imp.realloc;
    0x000092d4 b 0x9280                      |     goto label_0;
                                             | label_8:
    0x000092d8 addu s0, s2, s0               |     s0 = s2 + s0;
    0x000092dc lw t9, -0x7cbc(gp)            |     t9 = sym.imp.pclose;
    0x000092e0 sb zero, (s0)                 |     *(s0) = 0;
    0x000092e4 move a0, s4                   |     a0 = s4;
    0x000092e8 jalr t9                       |     t9 ();
    0x000092ec lw gp, 0x10(sp)               |     gp = *(var_10h);
                                             |     if (v0 == s5) {
    0x000092f0 beq v0, s5, 0x9348            |         goto label_9;
                                             |     }
    0x000092f4 lw t9, -0x7f3c(gp)            |     t9 = sym.legacy_drep_assignStringToCustom;
    0x000092f8 lw a0, 0x6c(s6)               |     a0 = *((s6 + 27));
    0x000092fc move a2, zero                 |     a2 = 0;
    0x00009300 move a1, s2                   |     a1 = s2;
    0x00009304 bal 0xe330                    |     sym_legacy_drep_assignStringToCustom ();
    0x00009308 addiu v0, zero, 1             |     v0 = 1;
    0x0000930c lw gp, 0x10(sp)               |     gp = *(var_10h);
    0x00009310 sw v0, 0x34(s6)               |     *((s6 + 13)) = v0;
                                             |     do {
    0x00009314 lw ra, 0x3c(sp)               |         ra = *(var_3ch);
    0x00009318 lw s7, 0x38(sp)               |         s7 = *(var_38h);
    0x0000931c lw s6, 0x34(sp)               |         s6 = *(var_34h);
    0x00009320 lw s5, 0x30(sp)               |         s5 = *(var_30h);
    0x00009324 lw s4, 0x2c(sp)               |         s4 = *(var_2ch);
    0x00009328 lw s3, 0x28(sp)               |         s3 = *(var_28h);
    0x0000932c lw s1, 0x20(sp)               |         s1 = *(var_20h);
    0x00009330 lw s0, 0x1c(sp)               |         s0 = *(var_1ch);
    0x00009334 move a0, s2                   |         a0 = s2;
    0x00009338 lw t9, -0x7bec(gp)            |         t9 = sym.imp.free;
    0x0000933c lw s2, 0x24(sp)               |         s2 = *(var_24h);
    0x00009340 addiu sp, sp, 0x40            |         
    0x00009344 jr t9                         |         t9 ();
                                             | label_9:
    0x00009348 lw a1, -0x7fc4(gp)            |         a1 = *(gp);
    0x0000934c lw a0, -0x7fc4(gp)            |         a0 = *(gp);
    0x00009350 lw t9, -0x7fb0(gp)            |         t9 = sym.logerr;
    0x00009354 lw a2, 0x28(s6)               |         a2 = *((s6 + 10));
    0x00009358 move a3, s3                   |         a3 = s3;
                                             |         /* str.Unable_to_get_value_for_param__s._Script__s_returned_error. */
    0x0000935c addiu a1, a1, 0x66a0          |         a1 += 0x66a0;
                                             |         /* str.axismapping.c */
    0x00009360 addiu a0, a0, 0x61a4          |         a0 += 0x61a4;
    0x00009364 bal 0x19b80                   |         sym_logerr ();
    0x00009368 lw gp, 0x10(sp)               |         gp = *(var_10h);
    0x0000936c lw t9, -0x7f30(gp)            |         t9 = sym.legacy_drep_resetData;
    0x00009370 addiu a0, s6, 0x6c            |         a0 = s6 + 0x6c;
    0x00009374 bal 0xf3e4                    |         sym_legacy_drep_resetData ();
    0x00009378 lw gp, 0x10(sp)               |         gp = *(var_10h);
    0x0000937c b 0x9314                      |         
                                             |     } while (1);
                                             | label_5:
    0x00009380 lw a1, -0x7fc4(gp)            |     a1 = *(gp);
    0x00009384 lw a0, -0x7fc4(gp)            |     a0 = *(gp);
    0x00009388 lw a2, 0x28(s6)               |     a2 = *((s6 + 10));
    0x0000938c lw ra, 0x3c(sp)               |     ra = *(var_3ch);
    0x00009390 lw s7, 0x38(sp)               |     s7 = *(var_38h);
    0x00009394 lw s6, 0x34(sp)               |     s6 = *(var_34h);
    0x00009398 lw s5, 0x30(sp)               |     s5 = *(var_30h);
    0x0000939c lw s4, 0x2c(sp)               |     s4 = *(var_2ch);
    0x000093a0 lw s2, 0x24(sp)               |     s2 = *(var_24h);
    0x000093a4 lw s1, 0x20(sp)               |     s1 = *(var_20h);
    0x000093a8 lw s0, 0x1c(sp)               |     s0 = *(var_1ch);
    0x000093ac move a3, s3                   |     a3 = s3;
    0x000093b0 lw t9, -0x7fb0(gp)            |     t9 = sym.logerr;
    0x000093b4 lw s3, 0x28(sp)               |     s3 = *(var_28h);
                                             |     /* str.Unable_to_get_value_for_param__s._Failed_to_execute_script__s. */
    0x000093b8 addiu a1, a1, 0x6644          |     a1 += 0x6644;
                                             |     /* str.axismapping.c */
    0x000093bc addiu a0, a0, 0x61a4          |     a0 += 0x61a4;
    0x000093c0 addiu sp, sp, 0x40            |     
    0x000093c4 b 0x19b80                     |     void (*0x19b80)() ();
                                             | label_7:
    0x000093c8 lw a2, -0x7fc4(gp)            |     a2 = *(gp);
    0x000093cc lw a1, -0x7fc4(gp)            |     a1 = *(gp);
    0x000093d0 lw a0, -0x7fc4(gp)            |     a0 = *(gp);
    0x000093d4 lw t9, -0x7fc8(gp)            |     t9 = sym.fatald;
                                             |     /* str.map_updateRunGetter */
    0x000093d8 addiu a2, a2, 0x6788          |     a2 += 0x6788;
                                             |     /* str.Out_of_memory_in__s_ */
    0x000093dc addiu a1, a1, 0x6688          |     a1 += 0x6688;
                                             |     /* str.axismapping.c */
    0x000093e0 addiu a0, a0, 0x61a4          |     a0 += 0x61a4;
    0x000093e4 bal 0x199c0                   |     sym_fatald ();
    0x000093e8 lw gp, 0x10(sp)               |     gp = *(var_10h);
    0x000093ec lw t9, -0x7bec(gp)            |     t9 = sym.imp.free;
    0x000093f0 move a0, s2                   |     a0 = s2;
    0x000093f4 jalr t9                       |     t9 ();
    0x000093f8 lw gp, 0x10(sp)               |     gp = *(var_10h);
    0x000093fc b 0x924c                      |     goto label_1;
                                             | }

[*] Function popen used 2 times parhand