[*] Binary protection state of certificate
Full RELRO Canary found NX disabled No PIE No RPATH No RUNPATH No Symbols
[*] Function system tear down of certificate
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/DUMP/mtdblock8_unblob_extracted/mtdblock8_extract/0-9650176.squashfs_v4_le_extract/bin/certificate @ 0x4034f0 */
| #include <stdint.h>
|
; (fcn) sym.file_open_char_const_ () | void file_open_char_const_ () {
| /* file_open(char const*) */
0x004034f0 lui gp, 2 |
0x004034f4 addiu gp, gp, -0x64c0 |
0x004034f8 addu gp, gp, t9 | gp += t9;
0x004034fc addiu sp, sp, -0x40 |
0x00403500 sw ra, 0x3c(sp) | *(var_3ch) = ra;
0x00403504 sw fp, 0x38(sp) | *(var_38h) = fp;
0x00403508 sw s1, 0x34(sp) | *(var_34h) = s1;
0x0040350c sw s0, 0x30(sp) | *(var_30h) = s0;
0x00403510 move fp, sp | fp = sp;
0x00403514 sw gp, 0x10(sp) | *(var_10h) = gp;
0x00403518 sw a0, 0x1c(fp) | *(arg_1ch) = a0;
0x0040351c lw t8, -0x7ee8(gp) | t8 = *((gp - 8122));
0x00403520 lw t8, (t8) | t8 = *(t8);
0x00403524 sw t8, 0x2c(fp) | *(arg_2ch) = t8;
0x00403528 lw t8, -0x7fd4(gp) | t8 = *(gp);
| /* str.touch__tmp_certificate.conf */
0x0040352c addiu a0, t8, 0x3ad0 | a0 = t8 + 0x3ad0;
0x00403530 lw t8, -0x7ef0(gp) | t8 = sym.imp.system
0x00403534 move t9, t8 | t9 = t8;
0x00403538 jalr t9 | t9 ();
0x0040353c nop |
0x00403540 lw gp, 0x10(fp) | gp = *(arg_10h);
0x00403544 lw a0, 0x1c(fp) | a0 = *(arg_1ch);
0x00403548 addiu a1, zero, 2 | a1 = 2;
0x0040354c lw t8, -0x7eec(gp) | t8 = sym.imp.open;
0x00403550 move t9, t8 | t9 = t8;
0x00403554 jalr t9 | t9 ();
0x00403558 nop |
0x0040355c lw gp, 0x10(fp) | gp = *(arg_10h);
0x00403560 move t8, v0 | t8 = v0;
0x00403564 sw t8, 0x28(fp) | *(arg_28h) = t8;
0x00403568 lw t8, 0x28(fp) | t8 = *(arg_28h);
0x0040356c srl t8, t8, 0x1f | t8 >>= 0x1f;
0x00403570 andi t8, t8, 0xff | t8 &= 0xff;
| if (t8 != 0) {
0x00403574 beqz t8, 0x403674 |
0x00403578 nop |
0x0040357c lw t8, -0x7fd4(gp) | t8 = *(gp);
| /* str.open_file_failed */
0x00403580 addiu a0, t8, 0x3aec | a0 = t8 + 0x3aec;
0x00403584 lw t8, -0x7f54(gp) | t8 = sym.imp.perror;
0x00403588 move t9, t8 | t9 = t8;
0x0040358c jalr t9 | t9 ();
0x00403590 nop |
0x00403594 lw gp, 0x10(fp) | gp = *(arg_10h);
0x00403598 addiu a0, zero, 0xc | a0 = 0xc;
0x0040359c lw t8, -0x7f5c(gp) | t8 = sym.imp.__cxa_allocate_exception;
0x004035a0 move t9, t8 | t9 = t8;
0x004035a4 jalr t9 | t9 ();
0x004035a8 nop |
0x004035ac lw gp, 0x10(fp) | gp = *(arg_10h);
0x004035b0 move s0, v0 | s0 = v0;
0x004035b4 addiu t8, fp, 0x20 | t8 = fp + 0x20;
0x004035b8 move a0, t8 | a0 = t8;
0x004035bc lw t8, -0x7f88(gp) | t8 = *(gp);
0x004035c0 move t9, t8 | t9 = t8;
0x004035c4 jalr t9 | t9 ();
0x004035c8 nop |
0x004035cc lw gp, 0x10(fp) | gp = *(arg_10h);
0x004035d0 addiu v0, fp, 0x24 | v0 = fp + 0x24;
0x004035d4 addiu t8, fp, 0x20 | t8 = fp + 0x20;
0x004035d8 move a0, v0 | a0 = v0;
0x004035dc lw v0, -0x7fd4(gp) | v0 = *(gp);
| /* str.cannot_open_norchar_file */
0x004035e0 addiu a1, v0, 0x3b00 | a1 = v0 + 0x3b00;
0x004035e4 move a2, t8 | a2 = t8;
0x004035e8 lw t8, -0x7f40(gp) | t8 = *(gp);
0x004035ec move t9, t8 | t9 = t8;
0x004035f0 jalr t9 | t9 ();
0x004035f4 nop |
0x004035f8 lw gp, 0x10(fp) | gp = *(arg_10h);
0x004035fc addiu t8, fp, 0x24 | t8 = fp + 0x24;
0x00403600 move a0, s0 | a0 = s0;
0x00403604 addiu a1, zero, 1 | a1 = 1;
0x00403608 move a2, t8 | a2 = t8;
0x0040360c lw t8, -0x7fd0(gp) | t8 = *(gp);
0x00403610 move t9, t8 | t9 = t8;
0x00403614 jalr t9 | t9 ();
0x00403618 nop |
0x0040361c lw gp, 0x10(fp) | gp = *(arg_10h);
0x00403620 addiu t8, fp, 0x24 | t8 = fp + 0x24;
0x00403624 move a0, t8 | a0 = t8;
0x00403628 lw t8, -0x7f28(gp) | t8 = *(gp);
0x0040362c move t9, t8 | t9 = t8;
0x00403630 jalr t9 | t9 ();
0x00403634 nop |
0x00403638 lw gp, 0x10(fp) | gp = *(arg_10h);
0x0040363c addiu t8, fp, 0x20 | t8 = fp + 0x20;
0x00403640 move a0, t8 | a0 = t8;
0x00403644 lw t8, -0x7f60(gp) | t8 = *(gp);
0x00403648 move t9, t8 | t9 = t8;
0x0040364c jalr t9 | t9 ();
0x00403650 nop |
0x00403654 lw gp, 0x10(fp) | gp = *(arg_10h);
0x00403658 move a0, s0 | a0 = s0;
0x0040365c lw a1, -0x7fcc(gp) | a1 = *(gp);
0x00403660 lw a2, -0x7fc8(gp) | a2 = *(gp);
0x00403664 lw t8, -0x7f6c(gp) | t8 = sym.imp.__cxa_throw;
0x00403668 move t9, t8 | t9 = t8;
0x0040366c jalr t9 | t9 ();
0x00403670 nop |
| }
0x00403674 lw t8, 0x28(fp) | t8 = *(arg_28h);
0x00403678 move v0, t8 | v0 = t8;
0x0040367c lw t8, -0x7ee8(gp) | t8 = *((gp - 8122));
0x00403680 lw v1, 0x2c(fp) | v1 = *(arg_2ch);
0x00403684 lw t8, (t8) | t8 = *(t8);
| if (v1 != t8) {
0x00403688 beq v1, t8, 0x403728 |
0x0040368c nop |
0x00403690 b 0x403718 | goto label_0;
0x00403694 nop |
| label_0:
0x00403718 lw t8, -0x7f34(gp) | t8 = sym.imp.__stack_chk_fail;
0x0040371c move t9, t8 | t9 = t8;
0x00403720 jalr t9 | t9 ();
0x00403724 nop |
| }
0x00403728 move sp, fp |
0x0040372c lw ra, 0x3c(sp) | ra = *(var_3ch);
0x00403730 lw fp, 0x38(sp) | fp = *(var_38h);
0x00403734 lw s1, 0x34(sp) | s1 = *(var_34h);
0x00403738 lw s0, 0x30(sp) | s0 = *(var_30h);
0x0040373c addiu sp, sp, 0x40 |
0x00403740 jr ra | return v1;
0x00403744 nop |
| }
[*] Function system used 2 times certificate