[*] Binary protection state of libsysutils.so
No RELRO No Canary found NX disabled DSO No RPATH No RUNPATH Symbols
[*] Function mmap tear down of libsysutils.so
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/6225984-11075644.jffs2_new_extract/lib/libsysutils.so @ 0x2d0c */
| #include <stdint.h>
|
; (fcn) sym.SU_CIPHER_Init () | void SU_CIPHER_Init () {
0x00002d0c lui gp, 2 |
0x00002d10 addiu gp, gp, -0x3cec |
0x00002d14 addu gp, gp, t9 | gp += t9;
0x00002d18 addiu sp, sp, -0x30 |
0x00002d1c sw s0, 0x28(sp) | *(var_28h) = s0;
0x00002d20 lw s0, -0x7fe4(gp) | s0 = *((gp - 8185));
0x00002d24 sw gp, 0x20(sp) | *(var_20h) = gp;
0x00002d28 sw ra, 0x2c(sp) | *(var_2ch) = ra;
0x00002d2c lw v0, 0x7020(s0) | v0 = *((s0 + 7176));
0x00002d30 lw a0, -0x7fd8(gp) | a0 = *((gp - 8182));
| if (v0 >= 0) {
0x00002d34 bgez v0, 0x2e20 | goto label_1;
| }
0x00002d38 lw t9, -0x7fb4(gp) | t9 = sym.imp.open;
0x00002d3c move a1, zero | a1 = 0;
0x00002d40 addiu a0, a0, 0x61d8 | a0 += str._dev_aes;
0x00002d44 jalr t9 | t9 ();
0x00002d48 sw v0, 0x7020(s0) | *((s0 + 7176)) = v0;
0x00002d4c lw gp, 0x20(sp) | gp = *(var_20h);
| if (v0 < 0) {
0x00002d50 bltz v0, 0x2eec | goto label_2;
| }
0x00002d54 lw s0, -0x7fe4(gp) | s0 = *((gp - 8185));
0x00002d58 lw t9, -0x7efc(gp) | t9 = sym.imp.ioctl;
0x00002d5c lui a1, 0x2000 | a1 = 0x20000000;
0x00002d60 move a0, v0 | a0 = v0;
0x00002d64 addiu a1, a1, 0x416e | a1 += 0x416e;
| /* obj.para */
0x00002d68 addiu a2, s0, 0x7174 | a2 = s0 + 0x7174;
0x00002d6c jalr t9 | t9 ();
0x00002d70 lw gp, 0x20(sp) | gp = *(var_20h);
| if (v0 != 0) {
0x00002d74 bnez v0, 0x2e8c | goto label_3;
| }
0x00002d78 lw a0, -0x7fd8(gp) | a0 = *((gp - 8182));
0x00002d7c lw t9, -0x7fb4(gp) | t9 = sym.imp.open;
0x00002d80 addiu a1, zero, 0x12 | a1 = 0x12;
0x00002d84 addiu a0, a0, 0x6218 | a0 += str._dev_mem;
0x00002d88 jalr t9 | t9 ();
0x00002d8c lw gp, 0x20(sp) | gp = *(var_20h);
0x00002d90 lw v1, -0x7fe4(gp) | v1 = *((gp - 8185));
0x00002d94 sw v0, 0x7634(v1) | *((v1 + 7565)) = v0;
| if (v0 < 0) {
0x00002d98 bltz v0, 0x2f2c | goto label_4;
| }
0x00002d9c lw v1, 0x7174(s0) | v1 = *((s0 + 7261));
0x00002da0 lw t9, -0x7f28(gp) | t9 = sym.imp.mmap
0x00002da4 sw v0, 0x10(sp) | *(var_10h) = v0;
0x00002da8 ext v0, v1, 0, 0x1d | __asm ("ext v0, v1, 0, 0x1d");
0x00002dac move a0, zero | a0 = 0;
0x00002db0 lui a1, 0x20 | a1 = 0x200000;
0x00002db4 addiu a2, zero, 3 | a2 = 3;
0x00002db8 addiu a3, zero, 1 | a3 = 1;
0x00002dbc sw v0, 0x14(sp) | *(var_14h) = v0;
0x00002dc0 jalr t9 | t9 ();
0x00002dc4 lw gp, 0x20(sp) | gp = *(var_20h);
0x00002dc8 lw a0, 0x7174(s0) | a0 = *((s0 + 7261));
0x00002dcc lui a2, 0x10 | a2 = 0x100000;
0x00002dd0 lw v1, -0x7f90(gp) | v1 = *(gp);
| /* obj.para */
0x00002dd4 addiu a1, s0, 0x7174 | a1 = s0 + 0x7174;
0x00002dd8 addu a3, v0, a2 | a3 = v0 + a2;
0x00002ddc sw v0, (v1) | *(v1) = v0;
0x00002de0 lw v1, -0x7fe4(gp) | v1 = *((gp - 8185));
0x00002de4 addu a2, a0, a2 | a2 = a0 + a2;
0x00002de8 addiu a1, a1, 0x4ec | a1 += 0x4ec;
0x00002dec addiu v1, v1, 0x71a0 | v1 += 0x71a0;
| do {
0x00002df0 sw v0, (v1) | *(v1) = v0;
0x00002df4 sw a3, 8(v1) | *((v1 + 2)) = a3;
0x00002df8 sw a0, -4(v1) | *((v1 - 1)) = a0;
0x00002dfc sw a2, 4(v1) | *((v1 + 1)) = a2;
0x00002e00 addiu v1, v1, 0x4c | v1 += 0x4c;
0x00002e04 bne v1, a1, 0x2df0 |
| } while (v1 != a1);
0x00002e08 nop |
0x00002e0c move v0, zero | v0 = 0;
| do {
0x00002e10 lw ra, 0x2c(sp) | ra = *(var_2ch);
0x00002e14 lw s0, 0x28(sp) | s0 = *(var_28h);
0x00002e18 addiu sp, sp, 0x30 |
0x00002e1c jr ra | return v1;
| label_1:
0x00002e20 lw t9, -0x7f78(gp) | t9 = sym.imp.IMP_Log_Get_Option;
0x00002e24 jalr t9 | t9 ();
0x00002e28 nop |
0x00002e2c lw gp, 0x20(sp) | gp = *(var_20h);
0x00002e30 move a1, v0 | a1 = v0;
0x00002e34 addiu a0, zero, 3 | a0 = 3;
0x00002e38 lw v1, -0x7fd8(gp) | v1 = *((gp - 8182));
0x00002e3c lw a3, -0x7fd8(gp) | a3 = *((gp - 8182));
0x00002e40 lw t9, -0x7f58(gp) | t9 = sym.imp.imp_log_fun;
0x00002e44 addiu v1, v1, 0x6148 | v1 += str._home_b_xbyu_work_isvp_w_proj_sdk_lv3_src_sysutils_cipher_cipher.c;
0x00002e48 sw v1, 0x10(sp) | *(var_10h) = v1;
0x00002e4c addiu v1, zero, 0x30 | v1 = 0x30;
0x00002e50 sw v1, 0x14(sp) | *(var_14h) = v1;
0x00002e54 lw v1, -0x7fd8(gp) | v1 = *((gp - 8182));
0x00002e58 addiu a2, zero, 2 | a2 = 2;
0x00002e5c addiu a3, a3, 0x6140 | a3 += str.Cipher;
0x00002e60 addiu v1, v1, 0x6390 | v1 += obj.__func__.3807;
0x00002e64 sw v1, 0x18(sp) | *(var_18h) = v1;
0x00002e68 lw v1, -0x7fd8(gp) | v1 = *((gp - 8182));
0x00002e6c addiu v1, v1, 0x61b0 | v1 += str.you_have_already_init_cipher_before__n;
0x00002e70 sw v1, 0x1c(sp) | *(var_1ch) = v1;
0x00002e74 jalr t9 | t9 ();
0x00002e78 lw ra, 0x2c(sp) | ra = *(var_2ch);
0x00002e7c lw s0, 0x28(sp) | s0 = *(var_28h);
0x00002e80 addiu v0, zero, -0xa | v0 = -0xa;
0x00002e84 addiu sp, sp, 0x30 |
0x00002e88 jr ra | return v1;
| label_3:
0x00002e8c lw t9, -0x7f78(gp) | t9 = sym.imp.IMP_Log_Get_Option;
0x00002e90 jalr t9 | t9 ();
0x00002e94 nop |
0x00002e98 lw gp, 0x20(sp) | gp = *(var_20h);
0x00002e9c lw v1, -0x7fd8(gp) | v1 = *((gp - 8182));
0x00002ea0 lw t9, -0x7f58(gp) | t9 = sym.imp.imp_log_fun;
0x00002ea4 addiu v1, v1, 0x6148 | v1 += str._home_b_xbyu_work_isvp_w_proj_sdk_lv3_src_sysutils_cipher_cipher.c;
0x00002ea8 sw v1, 0x10(sp) | *(var_10h) = v1;
0x00002eac addiu v1, zero, 0x3b | v1 = 0x3b;
0x00002eb0 sw v1, 0x14(sp) | *(var_14h) = v1;
0x00002eb4 lw v1, -0x7fd8(gp) | v1 = *((gp - 8182));
0x00002eb8 addiu v1, v1, 0x6390 | v1 += obj.__func__.3807;
0x00002ebc sw v1, 0x18(sp) | *(var_18h) = v1;
0x00002ec0 lw v1, -0x7fd8(gp) | v1 = *((gp - 8182));
0x00002ec4 addiu v1, v1, 0x61f4 | v1 += str.ioctl_:IOCTL_AES_GET_PBUFF_error__n;
| label_0:
0x00002ec8 lw a3, -0x7fd8(gp) | a3 = *((gp - 8182));
0x00002ecc move a1, v0 | a1 = v0;
0x00002ed0 sw v1, 0x1c(sp) | *(var_1ch) = v1;
0x00002ed4 addiu a0, zero, 3 | a0 = 3;
0x00002ed8 addiu a2, zero, 2 | a2 = 2;
0x00002edc addiu a3, a3, 0x6140 | a3 += str.Cipher;
0x00002ee0 jalr t9 | t9 ();
0x00002ee4 addiu v0, zero, -0xb | v0 = -0xb;
0x00002ee8 b 0x2e10 |
| } while (1);
| label_2:
0x00002eec lw t9, -0x7f78(gp) | t9 = sym.imp.IMP_Log_Get_Option;
0x00002ef0 jalr t9 | t9 ();
0x00002ef4 nop |
0x00002ef8 lw gp, 0x20(sp) | gp = *(var_20h);
0x00002efc lw v1, -0x7fd8(gp) | v1 = *((gp - 8182));
0x00002f00 lw t9, -0x7f58(gp) | t9 = sym.imp.imp_log_fun;
0x00002f04 addiu v1, v1, 0x6148 | v1 += str._home_b_xbyu_work_isvp_w_proj_sdk_lv3_src_sysutils_cipher_cipher.c;
0x00002f08 sw v1, 0x10(sp) | *(var_10h) = v1;
0x00002f0c addiu v1, zero, 0x36 | v1 = 0x36;
0x00002f10 sw v1, 0x14(sp) | *(var_14h) = v1;
0x00002f14 lw v1, -0x7fd8(gp) | v1 = *((gp - 8182));
0x00002f18 addiu v1, v1, 0x6390 | v1 += obj.__func__.3807;
0x00002f1c sw v1, 0x18(sp) | *(var_18h) = v1;
0x00002f20 lw v1, -0x7fd8(gp) | v1 = *((gp - 8182));
0x00002f24 addiu v1, v1, 0x61e4 | v1 += str.open___error___n;
0x00002f28 b 0x2ec8 | goto label_0;
| label_4:
0x00002f2c lw t9, -0x7f78(gp) | t9 = sym.imp.IMP_Log_Get_Option;
0x00002f30 jalr t9 | t9 ();
0x00002f34 nop |
0x00002f38 lw gp, 0x20(sp) | gp = *(var_20h);
0x00002f3c lw v1, -0x7fd8(gp) | v1 = *((gp - 8182));
0x00002f40 lw t9, -0x7f58(gp) | t9 = sym.imp.imp_log_fun;
0x00002f44 addiu v1, v1, 0x6148 | v1 += str._home_b_xbyu_work_isvp_w_proj_sdk_lv3_src_sysutils_cipher_cipher.c;
0x00002f48 sw v1, 0x10(sp) | *(var_10h) = v1;
0x00002f4c addiu v1, zero, 0x41 | v1 = 0x41;
0x00002f50 sw v1, 0x14(sp) | *(var_14h) = v1;
0x00002f54 lw v1, -0x7fd8(gp) | v1 = *((gp - 8182));
0x00002f58 addiu v1, v1, 0x6390 | v1 += obj.__func__.3807;
0x00002f5c sw v1, 0x18(sp) | *(var_18h) = v1;
0x00002f60 lw v1, -0x7fd8(gp) | v1 = *((gp - 8182));
0x00002f64 addiu v1, v1, 0x6224 | v1 += str.open__dev_mem_failed._n;
0x00002f68 b 0x2ec8 | goto label_0;
| }
[*] Function mmap used 2 times libsysutils.so