[*] Binary protection state of mod_http2.so
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function strcat tear down of mod_http2.so
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/apache2/modules/mod_http2.so @ 0x1212c */
| #include <stdint.h>
|
; (fcn) fcn.0001212c () | void fcn_0001212c (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_34h;
| int16_t var_60h;
| int16_t var_68h;
| int16_t var_6ch;
| int32_t var_10h;
| int32_t var_10h_2;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| if (? >= ?) {
0x0001212c ldrbmi lr, [r0, sp, lsr 18]! |
| }
0x00012130 mov r8, r0 | r8 = r0;
0x00012132 ldr r5, [pc, 0x134] |
0x00012134 mov r4, r2 | r4 = r2;
0x00012136 sub sp, 0x28 |
0x00012138 movs r3, 0 | r3 = 0;
0x0001213a ldr.w r0, [r2, 0x130] | r0 = *((r2 + 0x130));
0x0001213e ldr r2, [pc, 0x12c] | r2 = *(0x1226e);
0x00012140 add r5, pc | r5 = 0x243ae;
0x00012142 ldr r2, [r5, r2] |
0x00012144 mov r5, r1 | r5 = r1;
0x00012146 ldr r2, [r2] | r2 = *(0x243ae);
0x00012148 str r2, [sp, 0x24] | var_24h = r2;
0x0001214a mov.w r2, 0 | r2 = 0;
0x0001214e str.w r3, [r8] | __asm ("str.w r3, [r8]");
0x00012152 cmp r0, 0 |
| if (r0 == 0) {
0x00012154 beq 0x12228 | goto label_2;
| }
| label_1:
0x00012156 mov r1, r0 | r1 = r0;
0x00012158 mov r0, r5 | r0 = r5;
0x0001215a blx 0x4d08 | loc_imp_apr_thread_join ();
0x0001215c vldr d22, [r6, 0x84] | __asm ("vldr d22, [r6, 0x84]");
0x00012160 mov r7, r0 | r7 = r0;
0x00012162 mov r0, r5 | r0 = r5;
0x00012164 blx 0x4d08 | loc_imp_apr_thread_join ();
0x00012168 movs r2, 1 | r2 = 1;
0x0001216a mov r6, r0 | r6 = r0;
0x0001216c add.w r1, r4, 0x130 | r1 = r4 + 0x130;
0x00012170 mov r0, r5 | r0 = r5;
0x00012172 blx 0x46b4 | loc_imp_apr_uri_unparse ();
0x00012176 ldr r3, [r4, 0x4c] | r3 = *((r4 + 0x4c));
0x00012178 mov sl, r0 | sl = r0;
0x0001217a cmp r7, 0 |
0x0001217c it ne |
| if (r7 != 0) {
0x0001217e cmpne r3, 0 | __asm ("cmpne r3, 0");
| }
| if (r7 == 0) {
0x00012180 beq 0x1220c | goto label_3;
| }
0x00012182 ldr r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x00012184 cmp r0, 0 |
0x00012186 it ne |
| if (r0 != 0) {
0x00012188 cmpne r3, 0 | __asm ("cmpne r3, 0");
| }
| if (r0 == 0) {
0x0001218a beq 0x1220c | goto label_3;
| }
0x0001218c movs r1, 0x3a | r1 = 0x3a;
0x0001218e mov r0, r6 | r0 = r6;
0x00012190 blx 0x5298 | r0 = fcn_00005298 ();
0x00012194 cmp r0, 0 |
| if (r0 == 0) {
0x00012196 beq 0x12210 | goto label_4;
| }
| label_0:
0x00012198 movs r1, 0x30 | r1 = 0x30;
0x0001219a mov r0, r5 | r0 = r5;
0x0001219c blx 0x4c6c | loc_imp_apr_thread_mutex_create ();
0x000121a0 movs r2, 0x30 | r2 = 0x30;
0x000121a2 movs r1, 0 | r1 = 0;
0x000121a4 blx 0x4aa0 | fcn_00004aa0 ();
0x000121a8 ldr r1, [r4, 0x4c] | r1 = *((r4 + 0x4c));
0x000121aa mov sb, r0 | sb = r0;
0x000121ac mov r0, r5 | r0 = r5;
0x000121ae blx 0x4d08 | loc_imp_apr_thread_join ();
0x000121b2 strd r6, sl, [sp, 0x10] | __asm ("strd r6, sl, [var_10h]");
0x000121b6 movs r1, 0xa | r1 = 0xa;
0x000121b8 strd r0, r7, [sp, 8] | __asm ("strd r0, r7, [var_6ch]");
0x000121bc mov r0, r5 | r0 = r5;
0x000121be vldr d16, [sp, 8] | __asm ("vldr d16, [sp, 8]");
0x000121c2 vldr d17, [sp, 0x10] | __asm ("vldr d17, [sp, 0x10]");
0x000121c6 vst1.64 {d16, d17}, [sb:0x40] | __asm ("vst1.64 {d16, d17}, [sb:0x40]");
0x000121ca blx 0x4a70 | fcn_00004a70 ();
0x000121ce ldr.w r2, [r4, 0xb0] | r2 = *((r4 + 0xb0));
0x000121d2 movs r3, 0 | r3 = 0;
0x000121d4 str.w r0, [sb, 0x10] | __asm ("str.w r0, [sb, 0x10]");
0x000121d8 add r1, sp, 0x18 | r1 += var_18h;
0x000121da str r0, [sp, 0x18] | var_18h = r0;
0x000121dc ldr r0, [pc, 0x90] |
0x000121de str.w r3, [sb, 0x28] | __asm ("str.w r3, [sb, 0x28]");
0x000121e2 str r5, [sp, 0x1c] | var_1ch = r5;
0x000121e4 add r0, pc | r0 = 0x24458;
0x000121e6 str r3, [sp, 0x20] | var_20h = r3;
0x000121e8 blx 0x4ef4 | loc_imp_apr_hash_set ();
0x000121ec ldr r0, [sp, 0x20] | r0 = var_20h;
0x000121ee str.w sb, [r8] | __asm ("str.w sb, [r8]");
| do {
0x000121f2 ldr r2, [pc, 0x80] |
0x000121f4 ldr r3, [pc, 0x74] | r3 = *(0x1226c);
0x000121f6 add r2, pc | r2 = 0x24470;
0x000121f8 ldr r3, [r2, r3] | r3 = *(0x24470);
0x000121fa ldr r2, [r3] | r2 = *(0x24470);
0x000121fc ldr r3, [sp, 0x24] | r3 = var_24h;
0x000121fe eors r2, r3 | r2 ^= r3;
0x00012200 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00012204 bne 0x12262 | goto label_5;
| }
0x00012206 add sp, 0x28 |
0x00012208 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_3:
0x0001220c movs r0, 0x16 | r0 = 0x16;
0x0001220e b 0x121f2 |
| } while (1);
| label_4:
0x00012210 ldr.w r3, [r4, 0x144] | r3 = *((r4 + 0x144));
| if (r3 != 0) {
0x00012214 cbz r3, 0x12230 |
0x00012216 ldr r2, [pc, 0x60] |
0x00012218 mov r1, r6 | r1 = r6;
0x0001221a str r0, [sp] | *(sp) = r0;
0x0001221c mov r0, r5 | r0 = r5;
0x0001221e add r2, pc | r2 = 0x2449c;
0x00012220 blx 0x472c | r0 = loc_imp_apr_pstrcat ()
0x00012224 mov r6, r0 | r6 = r0;
0x00012226 b 0x12198 | goto label_0;
| label_2:
0x00012228 mov r0, r4 | r0 = r4;
0x0001222a blx 0x4df8 | loc_imp_apr_atomic_read32 ();
0x0001222e b 0x12156 | goto label_1;
| }
0x00012230 ldr.w r3, [r4, 0x140] | r3 = *((r4 + 0x140));
0x00012234 cmp r3, 0 |
| if (r3 != 0) {
0x00012236 bne 0x12198 | goto label_0;
| }
0x00012238 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0001223a cmp r3, 0 |
| if (r3 == 0) {
0x0001223c beq 0x12198 | goto label_0;
| }
0x0001223e ldrh r3, [r3, 0x2a] | r3 = *((r3 + 0x2a));
0x00012240 cmp r3, 0 |
| if (r3 == 0) {
0x00012242 beq 0x12198 | goto label_0;
| }
0x00012244 mov r0, r7 | r0 = r7;
0x00012246 blx 0x4e04 | strstr (r0, r1);
0x0001224a ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0001224c ldrh r3, [r3, 0x2a] | r3 = *((r3 + 0x2a));
0x0001224e cmp r3, r0 |
| if (r3 == r0) {
0x00012250 beq 0x12198 | goto label_0;
| }
0x00012252 ldr r1, [pc, 0x28] |
0x00012254 mov r2, r6 | r2 = r6;
0x00012256 mov r0, r5 | r0 = r5;
0x00012258 add r1, pc | r1 = 0x244da;
0x0001225a blx 0x49f8 | r0 = fcn_000049f8 ();
0x0001225e mov r6, r0 | r6 = r0;
0x00012260 b 0x12198 | goto label_0;
| label_5:
0x00012262 blx 0x4d80 | loc_imp_apr_file_read ();
0x00012266 nop |
0x00012268 ldrh r4, [r0, r0] | r4 = *((r0 + r0));
0x0001226a movs r1, r0 | r1 = r0;
0x0001226c lsls r4, r6, 0x10 | r4 = r6 << 0x10;
0x0001226e movs r0, r0 |
0x00012270 mcr2 p15, 4, pc, c5, c15, 7 | __asm ("mcr2 p15, 4, pc, c5, c15, 7");
0x00012274 ldr r6, [r1, r5] | r6 = *((r1 + r5));
0x00012276 movs r1, r0 | r1 = r0;
0x00012278 lsrs r2, r5, 0xd | r2 = r5 >> 0xd;
0x0001227a movs r1, r0 | r1 = r0;
0x0001227c lsrs r4, r6, 0xc | r4 = r6 >> 0xc;
0x0001227e movs r1, r0 | r1 = r0;
| }
[*] Function strcat used 2 times mod_http2.so