[*] Binary protection state of openssl
No RELRO No Canary found NX disabled No PIE RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of openssl
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/DUMP/mtdblock8_unblob_extracted/mtdblock8_extract/0-9650176.squashfs_v4_le_extract/bin/openssl @ 0x45093c */
| #include <stdint.h>
|
; (fcn) sym.do_server () | void do_server () {
0x0045093c lui gp, 5 |
0x00450940 addiu gp, gp, -0x449c |
0x00450944 addu gp, gp, t9 | gp += t9;
0x00450948 addiu sp, sp, -0x68 |
0x0045094c sw ra, 0x64(sp) | *(var_64h) = ra;
0x00450950 sw fp, 0x60(sp) | *(var_60h) = fp;
0x00450954 sw s7, 0x5c(sp) | *(var_5ch) = s7;
0x00450958 sw s6, 0x58(sp) | *(var_58h) = s6;
0x0045095c sw s5, 0x54(sp) | *(var_54h) = s5;
0x00450960 sw s4, 0x50(sp) | *(var_50h) = s4;
0x00450964 sw s3, 0x4c(sp) | *(var_4ch) = s3;
0x00450968 sw s2, 0x48(sp) | *(var_48h) = s2;
0x0045096c sw s1, 0x44(sp) | *(var_44h) = s1;
0x00450970 sw s0, 0x40(sp) | *(var_40h) = s0;
0x00450974 andi t8, a0, 0xffff | t8 = a0 & 0xffff;
0x00450978 srl t8, t8, 8 | t8 >>= 8;
0x0045097c sw gp, 0x18(sp) | *(var_18h) = gp;
0x00450980 sll a0, a0, 8 | a0 <<= 8;
0x00450984 lw fp, 0x78(sp) | fp = *(arg_78h);
0x00450988 or a0, t8, a0 | a0 = t8 | a0;
0x0045098c addiu t8, zero, 2 | t8 = 2;
0x00450990 sh t8, 0x20(sp) | *(var_20h) = t8;
0x00450994 addiu t8, zero, 2 | t8 = 2;
0x00450998 sh a0, 0x22(sp) | *(var_22h) = a0;
0x0045099c move s4, a1 | s4 = a1;
0x004509a0 lw s0, 0x7c(sp) | s0 = *(arg_7ch);
0x004509a4 move s3, a2 | s3 = a2;
0x004509a8 sw zero, 0x24(sp) | *(var_24h) = 0;
0x004509ac move s7, a3 | s7 = a3;
0x004509b0 sw zero, 0x28(sp) | *(var_28h) = 0;
0x004509b4 addiu a0, zero, 2 | a0 = 2;
0x004509b8 sw zero, 0x2c(sp) | *(var_2ch) = 0;
0x004509bc lw t9, -0x7698(gp) | t9 = sym.imp.socket;
| if (a1 == t8) {
0x004509c0 beq a1, t8, 0x450c54 | goto label_6;
| }
0x004509c4 addiu a1, zero, 1 | a1 = 1;
0x004509c8 addiu a2, zero, 0x11 | a2 = 0x11;
0x004509cc jalr t9 | t9 ();
0x004509d0 lw gp, 0x18(sp) | gp = *(var_18h);
0x004509d4 move s2, v0 | s2 = v0;
| label_3:
0x004509d8 addiu s1, zero, -1 | s1 = -1;
0x004509dc addiu t8, zero, 4 | t8 = 4;
| if (s2 == s1) {
0x004509e0 beq s2, s1, 0x450b0c | goto label_7;
| }
0x004509e4 move a0, s2 | a0 = s2;
0x004509e8 lw t9, -0x7950(gp) | t9 = sym.imp.setsockopt;
0x004509ec ori a1, zero, 0xffff | a1 = 0xffff;
0x004509f0 sw t8, 0x10(sp) | *(var_10h) = t8;
0x004509f4 addiu t8, zero, 1 | t8 = 1;
0x004509f8 addiu a2, zero, 4 | a2 = 4;
0x004509fc addiu a3, sp, 0x30 | a3 = sp + 0x30;
0x00450a00 sw t8, 0x30(sp) | *(var_30h) = t8;
0x00450a04 jalr t9 | t9 ();
0x00450a08 move a0, s2 | a0 = s2;
0x00450a0c lw gp, 0x18(sp) | gp = *(var_18h);
0x00450a10 addiu a1, sp, 0x20 | a1 = sp + 0x20;
0x00450a14 lw t9, -0x7378(gp) | t9 = sym.imp.bind;
0x00450a18 addiu a2, zero, 0x10 | a2 = 0x10;
0x00450a1c jalr t9 | t9 ();
0x00450a20 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 == s1) {
0x00450a24 beq v0, s1, 0x450ad8 | goto label_8;
| }
0x00450a28 addiu t8, zero, 2 | t8 = 2;
0x00450a2c lw t9, -0x6c88(gp) | t9 = sym.imp.listen;
| if (s4 == t8) {
0x00450a30 beq s4, t8, 0x450c68 | goto label_9;
| }
| label_4:
0x00450a34 addiu s6, zero, 2 | s6 = 2;
| if (s3 != 0) {
0x00450a38 beqz s3, 0x450a40 |
0x00450a3c sw s2, (s3) | *(s3) = s2;
| }
0x00450a40 addiu s3, zero, -1 | s3 = -1;
0x00450a44 addiu s5, zero, 4 | s5 = 4;
| do {
| label_1:
0x00450a48 move a0, s2 | a0 = s2;
| if (s4 == s6) {
0x00450a4c beq s4, s6, 0x450b54 | goto label_10;
| }
0x00450a50 move a1, s4 | a1 = s4;
0x00450a54 move t9, s7 | t9 = s7;
0x00450a58 move a2, fp | a2 = fp;
0x00450a5c jalr t9 | t9 ();
0x00450a60 lw gp, 0x18(sp) | gp = *(var_18h);
0x00450a64 move t8, v0 | t8 = v0;
| if (s0 == s3) {
0x00450a68 beq s0, s3, 0x450bc0 | goto label_11;
| }
| label_0:
0x00450a6c addiu s0, s0, -1 | s0 += -1;
| if (t8 < 0) {
0x00450a70 bltz t8, 0x450a7c | goto label_12;
| }
0x00450a74 bnez s0, 0x450a48 |
| } while (s0 != 0);
0x00450a78 nop |
| label_12:
0x00450a7c lw t9, -0x7cfc(gp) | t9 = sym.imp.shutdown;
0x00450a80 move a0, s2 | a0 = s2;
| label_2:
0x00450a84 sw t8, 0x38(sp) | *(var_38h) = t8;
0x00450a88 addiu a1, zero, 2 | a1 = 2;
0x00450a8c jalr t9 | t9 ();
0x00450a90 lw gp, 0x18(sp) | gp = *(var_18h);
0x00450a94 lw t9, -0x76ac(gp) | t9 = sym.imp.close;
0x00450a98 move a0, s2 | a0 = s2;
0x00450a9c jalr t9 | t9 ();
0x00450aa0 lw t8, 0x38(sp) | t8 = *(var_38h);
0x00450aa4 lw ra, 0x64(sp) | ra = *(var_64h);
0x00450aa8 lw fp, 0x60(sp) | fp = *(var_60h);
0x00450aac move v0, t8 | v0 = t8;
0x00450ab0 lw s7, 0x5c(sp) | s7 = *(var_5ch);
0x00450ab4 lw s6, 0x58(sp) | s6 = *(var_58h);
0x00450ab8 lw s5, 0x54(sp) | s5 = *(var_54h);
0x00450abc lw s4, 0x50(sp) | s4 = *(var_50h);
0x00450ac0 lw s3, 0x4c(sp) | s3 = *(var_4ch);
0x00450ac4 lw s2, 0x48(sp) | s2 = *(var_48h);
0x00450ac8 lw s1, 0x44(sp) | s1 = *(var_44h);
0x00450acc lw s0, 0x40(sp) | s0 = *(var_40h);
0x00450ad0 addiu sp, sp, 0x68 |
0x00450ad4 jr ra | return v0;
| label_8:
0x00450ad8 lw a0, -0x7f9c(gp) | a0 = *(gp);
0x00450adc lw t9, -0x72b8(gp) | t9 = sym.imp.perror;
| /* str.bind */
0x00450ae0 addiu a0, a0, -0x3360 | a0 += -0x3360;
0x00450ae4 jalr t9 | t9 ();
0x00450ae8 lw gp, 0x18(sp) | gp = *(var_18h);
0x00450aec lw t9, -0x7cfc(gp) | t9 = sym.imp.shutdown;
| label_5:
0x00450af0 move a0, s2 | a0 = s2;
0x00450af4 move a1, zero | a1 = 0;
0x00450af8 jalr t9 | t9 ();
0x00450afc lw gp, 0x18(sp) | gp = *(var_18h);
0x00450b00 lw t9, -0x76ac(gp) | t9 = sym.imp.close;
0x00450b04 move a0, s2 | a0 = s2;
0x00450b08 jalr t9 | t9 ();
| label_7:
0x00450b0c lw ra, 0x64(sp) | ra = *(var_64h);
0x00450b10 move v0, zero | v0 = 0;
0x00450b14 lw fp, 0x60(sp) | fp = *(var_60h);
0x00450b18 lw s7, 0x5c(sp) | s7 = *(var_5ch);
0x00450b1c lw s6, 0x58(sp) | s6 = *(var_58h);
0x00450b20 lw s5, 0x54(sp) | s5 = *(var_54h);
0x00450b24 lw s4, 0x50(sp) | s4 = *(var_50h);
0x00450b28 lw s3, 0x4c(sp) | s3 = *(var_4ch);
0x00450b2c lw s2, 0x48(sp) | s2 = *(var_48h);
0x00450b30 lw s1, 0x44(sp) | s1 = *(var_44h);
0x00450b34 lw s0, 0x40(sp) | s0 = *(var_40h);
0x00450b38 addiu sp, sp, 0x68 |
0x00450b3c jr ra | return v0;
| do {
0x00450b40 jalr t9 | t9 ();
0x00450b44 nop |
0x00450b48 lw a2, (v0) | a2 = *(v0);
0x00450b4c lw gp, 0x18(sp) | gp = *(var_18h);
| if (a2 != s5) {
0x00450b50 bne a2, s5, 0x450bd0 | goto label_13;
| }
| label_10:
0x00450b54 lw t9, -0x7b34(gp) | t9 = sym.imp.accept;
0x00450b58 move a0, s2 | a0 = s2;
0x00450b5c move a1, zero | a1 = 0;
0x00450b60 move a2, zero | a2 = 0;
0x00450b64 jalr t9 | t9 ();
0x00450b68 lw gp, 0x18(sp) | gp = *(var_18h);
0x00450b6c move s1, v0 | s1 = v0;
0x00450b70 lw t9, -0x794c(gp) | t9 = sym.imp.__errno_location;
0x00450b74 beq v0, s3, 0x450b40 |
| } while (v0 == s3);
0x00450b78 move a2, fp | a2 = fp;
0x00450b7c addiu a1, zero, 2 | a1 = 2;
0x00450b80 move t9, s7 | t9 = s7;
0x00450b84 move a0, v0 | a0 = v0;
0x00450b88 jalr t9 | t9 ();
0x00450b8c move a0, s1 | a0 = s1;
0x00450b90 lw gp, 0x18(sp) | gp = *(var_18h);
0x00450b94 addiu a1, zero, 2 | a1 = 2;
0x00450b98 lw t9, -0x7cfc(gp) | t9 = sym.imp.shutdown;
0x00450b9c sw v0, 0x38(sp) | *(var_38h) = v0;
0x00450ba0 jalr t9 | t9 ();
0x00450ba4 lw gp, 0x18(sp) | gp = *(var_18h);
0x00450ba8 lw t9, -0x76ac(gp) | t9 = sym.imp.close;
0x00450bac move a0, s1 | a0 = s1;
0x00450bb0 jalr t9 | t9 ();
0x00450bb4 lw gp, 0x18(sp) | gp = *(var_18h);
0x00450bb8 lw t8, 0x38(sp) | t8 = *(var_38h);
| if (s0 != s3) {
0x00450bbc bne s0, s3, 0x450a6c | goto label_0;
| }
| label_11:
0x00450bc0 lw t9, -0x7cfc(gp) | t9 = sym.imp.shutdown;
| if (t8 >= 0) {
0x00450bc4 bgez t8, 0x450a48 | goto label_1;
| }
0x00450bc8 move a0, s2 | a0 = s2;
0x00450bcc b 0x450a84 | goto label_2;
| label_13:
0x00450bd0 lw t8, -0x6c70(gp) | t8 = *((gp - 6940));
0x00450bd4 lw a1, -0x7f9c(gp) | a1 = *(gp);
0x00450bd8 lw a0, (t8) | a0 = *(t8);
0x00450bdc lw t9, -0x7598(gp) | t9 = sym.imp.fprintf
| /* str.errno_d_ */
0x00450be0 addiu a1, a1, -0x3358 | a1 += -0x3358;
0x00450be4 jalr t9 | t9 ();
0x00450be8 lw gp, 0x18(sp) | gp = *(var_18h);
0x00450bec lw a0, -0x7f9c(gp) | a0 = *(gp);
0x00450bf0 lw t9, -0x72b8(gp) | t9 = sym.imp.perror;
| /* esilref: 'accept' */
0x00450bf4 addiu a0, a0, -0x4244 | a0 += -0x4244;
0x00450bf8 jalr t9 | t9 ();
0x00450bfc move a0, s2 | a0 = s2;
0x00450c00 lw gp, 0x18(sp) | gp = *(var_18h);
0x00450c04 lw t9, -0x7cfc(gp) | t9 = sym.imp.shutdown;
0x00450c08 move a1, zero | a1 = 0;
0x00450c0c jalr t9 | t9 ();
0x00450c10 lw gp, 0x18(sp) | gp = *(var_18h);
0x00450c14 lw t9, -0x76ac(gp) | t9 = sym.imp.close;
0x00450c18 move a0, s2 | a0 = s2;
0x00450c1c jalr t9 | t9 ();
0x00450c20 move v0, zero | v0 = 0;
0x00450c24 lw ra, 0x64(sp) | ra = *(var_64h);
0x00450c28 lw fp, 0x60(sp) | fp = *(var_60h);
0x00450c2c lw s7, 0x5c(sp) | s7 = *(var_5ch);
0x00450c30 lw s6, 0x58(sp) | s6 = *(var_58h);
0x00450c34 lw s5, 0x54(sp) | s5 = *(var_54h);
0x00450c38 lw s4, 0x50(sp) | s4 = *(var_50h);
0x00450c3c lw s3, 0x4c(sp) | s3 = *(var_4ch);
0x00450c40 lw s2, 0x48(sp) | s2 = *(var_48h);
0x00450c44 lw s1, 0x44(sp) | s1 = *(var_44h);
0x00450c48 lw s0, 0x40(sp) | s0 = *(var_40h);
0x00450c4c addiu sp, sp, 0x68 |
0x00450c50 jr ra | return v0;
| label_6:
0x00450c54 addiu a2, zero, 6 | a2 = 6;
0x00450c58 jalr t9 | t9 ();
0x00450c5c lw gp, 0x18(sp) | gp = *(var_18h);
0x00450c60 move s2, v0 | s2 = v0;
0x00450c64 b 0x4509d8 | goto label_3;
| label_9:
0x00450c68 move a0, s2 | a0 = s2;
0x00450c6c addiu a1, zero, 0x80 | a1 = 0x80;
0x00450c70 jalr t9 | t9 ();
0x00450c74 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != s1) {
0x00450c78 bne v0, s1, 0x450a34 | goto label_4;
| }
0x00450c7c lw t9, -0x7cfc(gp) | t9 = sym.imp.shutdown;
0x00450c80 b 0x450af0 | goto label_5;
| }
[*] Function fprintf used 2 times openssl