-
-
[原创] 看雪·2025 KCTF 第七题 WriteUP
-
发表于: 2025-8-29 00:45 4790
-
看着是 iOT 的题要跑虚拟机,实则 IDA 都能做出来(雾
IDA 直接加载完主程序,检验逻辑直接写在 main() 里面了,但是有一些不明所以的变量

直接复制粘贴到 VS Code 里面改变量名就舒服多了 -O-
直接看伪代码,可以推出 act=0, con=0, abort=1, cancel=1, enable=2, start=2, run=2, stop=3, reset=4, reboot=4
于是我们可以将伪代码中 string_to_code(x) 直接换成对应的数值
用 Python 写出求解器, 符合要求的解一共有 470 个(我勒个多解大王
p_argc = &argc;printf("key:");if ( fgets(s, 30, &Stdin) ){ v3 = strcspn(s, "\n"); // 去掉换行符 用\x00代替 s[v3] = 0; idx_1 = 0; // string_to_code("act"); 无意义 // 将 key 的前 10 个字符 转为 数字 存入 v39[25] ~ v39[34] // d0=v39[25], d1=v39[26], ..., d9=v39[34] for ( strIdx = 0; s[strIdx] && strIdx <= 9; ++strIdx ) // 只处理前 10 个字符 { if ( s[strIdx] <= 48 || s[strIdx] > 57 ) // 非 '1' ~ '9' { /* a ~ f 转 10 ~ 15 其他字符转 16 */ if ( s[strIdx] == 97 ) // a { v39[idx_1++ + 25] = 10; } else if ( s[strIdx] == 98 ) // b { v39[idx_1++ + 25] = 11; } else if ( s[strIdx] == 99 ) // c { v39[idx_1++ + 25] = 12; } else if ( s[strIdx] == 100 ) // d { v39[idx_1++ + 25] = 13; } else if ( s[strIdx] == 101 ) // e { v39[idx_1++ + 25] = 14; } else if ( s[strIdx] == 102 ) // f { v39[idx_1++ + 25] = 15; } else { if ( s[strIdx] == 48 ) // '0' v39[idx_1 + 25] = 0; else // 其他字符兜底为 16 v39[idx_1 + 25] = 16; ++idx_1; } } else // '1' ~ '9' { v39[idx_1++ + 25] = s[strIdx] - 48; // 转数字 } }p_argc = &argc;printf("key:");if ( fgets(s, 30, &Stdin) ){ v3 = strcspn(s, "\n"); // 去掉换行符 用\x00代替 s[v3] = 0; idx_1 = 0; // string_to_code("act"); 无意义 // 将 key 的前 10 个字符 转为 数字 存入 v39[25] ~ v39[34] // d0=v39[25], d1=v39[26], ..., d9=v39[34] for ( strIdx = 0; s[strIdx] && strIdx <= 9; ++strIdx ) // 只处理前 10 个字符 { if ( s[strIdx] <= 48 || s[strIdx] > 57 ) // 非 '1' ~ '9' { /* a ~ f 转 10 ~ 15 其他字符转 16 */ if ( s[strIdx] == 97 ) // a { v39[idx_1++ + 25] = 10; } else if ( s[strIdx] == 98 ) // b { v39[idx_1++ + 25] = 11; } else if ( s[strIdx] == 99 ) // c { v39[idx_1++ + 25] = 12; } else if ( s[strIdx] == 100 ) // d { v39[idx_1++ + 25] = 13; } else if ( s[strIdx] == 101 ) // e { v39[idx_1++ + 25] = 14; } else if ( s[strIdx] == 102 ) // f { v39[idx_1++ + 25] = 15; } else { if ( s[strIdx] == 48 ) // '0' v39[idx_1 + 25] = 0; else // 其他字符兜底为 16 v39[idx_1 + 25] = 16; ++idx_1; } } else // '1' ~ '9' { v39[idx_1++ + 25] = s[strIdx] - 48; // 转数字 } }col = 0;next = 0;v42 = 0;v43 = 0;v44 = 0;v45 = 0;v46 = 0;v47 = 0;for ( row = 0; row <= 4; ++row ){ for ( col = 0; (int)col <= 4; ++col ) { v4 = 0; if ( v4 == row && (v5 = 3, v5 == col) ) // (0,3) { v39[5 * row + col] = v39[next++ + 25]; // d0 *(_DWORD *)&v38[4 * v42++ + 272] = v39[5 * row + col]; // v42 = 0 } else { v6 = 1; if ( v6 == row && (v7 = 0, v7 == col) ) // (1,0) { v39[5 * row + col] = v39[next++ + 25]; // d1 *(_DWORD *)&v38[4 * v43++ + 284] = v39[5 * row + col]; // v43 = 0 } else { v8 = 1; if ( v8 == row && (v9 = 2, v9 == col) ) // (1,2) { v39[5 * row + col] = v39[next++ + 25]; // d2 *(_DWORD *)&v38[4 * v42++ + 272] = v39[5 * row + col]; // v42 = 1 *(_DWORD *)&v38[4 * v44++ + 296] = v39[5 * row + col]; // v44 = 0 } else { v10 = 2; if ( v10 == row && (v11 = 1, v11 == col) ) // (2,1) { v39[5 * row + col] = v39[next++ + 25]; // d3 *(_DWORD *)&v38[4 * v42++ + 272] = v39[5 * row + col]; // v42 = 2 *(_DWORD *)&v38[4 * v43++ + 284] = v39[5 * row + col]; // v43 = 1 } else { v12 = 2; if ( v12 == row && (v13 = 3, v13 == col) ) // (2,3) { v39[5 * row + col] = v39[next++ + 25]; // d4 *(_DWORD *)&v38[4 * v44++ + 296] = v39[5 * row + col]; // v44 = 1 *(_DWORD *)&v38[4 * v45++ + 308] = v39[5 * row + col]; // v45 = 0 } else { v14 = 3; if ( v14 == row && (v15 = 0, v15 == col) ) // (3,0) { v39[5 * row + col] = v39[next++ + 25]; // d5 *(_DWORD *)&v38[4 * v46++ + 320] = v39[5 * row + col]; // v46 = 0 } else if ( row == 3 && col == 2 ) // (3,2) 特例 row==3 && col==2(直接写死) { v39[5 * row + 2] = v39[next++ + 25]; // d6 *(_DWORD *)&v38[4 * v43++ + 284] = v39[5 * row + col]; // v43 = 2 *(_DWORD *)&v38[4 * v46++ + 320] = v39[5 * row + col]; // v46 = 1 } else { v16 = 3; if ( v16 == row && (v17 = 3, v17 == col) ) // (3,3) { v39[5 * row + col] = v39[next++ + 25]; // d7 *(_DWORD *)&v38[4 * v45++ + 308] = v39[5 * row + col]; // v45 = 1 *(_DWORD *)&v38[4 * v46++ + 320] = v39[5 * row + col]; // v46 = 2 } else { v18 = 3; if ( v18 == row && (v19 = 4, v19 == col) ) // (3,4) { v39[5 * row + col] = v39[next++ + 25]; // d8 *(_DWORD *)&v38[4 * v44++ + 296] = v39[5 * row + col]; // v44 = 2 } else { v20 = 4; if ( v20 == row && (v21 = 2, v21 == col) ) // (4,2) { v39[5 * row + col] = v39[next++ + 25]; // d9 *(_DWORD *)&v38[4 * v45++ + 308] = v39[5 * row + col]; // v45 = 2 } else // 其他位置 全部设为 row + col { v39[5 * row + col] = row + col; } } } } } } } } } /* 5x5 矩阵 v39 [ 0, 1, 2, d0, 4 ] [ d1, 2, d2, 4, 5 ] [ 2, d3, 4, d4, 6 ] [ d5, 4, d6, d7, d8 ] [ 4, 5, d9, 7, 8 ] */ /* v38 + 272 处存了 15 个数值 (5 行 3 列) v42 -> 第一行 d0 d2 d3 v43 -> 第二行 d1 d3 d6 v44 -> 第三行 d2 d4 d8 v45 -> 第四行 d4 d7 d9 v46 -> 第五行 d5 d6 d7 */col = 0;next = 0;v42 = 0;v43 = 0;v44 = 0;v45 = 0;v46 = 0;v47 = 0;for ( row = 0; row <= 4; ++row ){ for ( col = 0; (int)col <= 4; ++col ) { v4 = 0; if ( v4 == row && (v5 = 3, v5 == col) ) // (0,3) { v39[5 * row + col] = v39[next++ + 25]; // d0 *(_DWORD *)&v38[4 * v42++ + 272] = v39[5 * row + col]; // v42 = 0 } else { v6 = 1; if ( v6 == row && (v7 = 0, v7 == col) ) // (1,0) { v39[5 * row + col] = v39[next++ + 25]; // d1 *(_DWORD *)&v38[4 * v43++ + 284] = v39[5 * row + col]; // v43 = 0 } else { v8 = 1; if ( v8 == row && (v9 = 2, v9 == col) ) // (1,2) { v39[5 * row + col] = v39[next++ + 25]; // d2 *(_DWORD *)&v38[4 * v42++ + 272] = v39[5 * row + col]; // v42 = 1 *(_DWORD *)&v38[4 * v44++ + 296] = v39[5 * row + col]; // v44 = 0 } else { v10 = 2; if ( v10 == row && (v11 = 1, v11 == col) ) // (2,1) { v39[5 * row + col] = v39[next++ + 25]; // d3 *(_DWORD *)&v38[4 * v42++ + 272] = v39[5 * row + col]; // v42 = 2 *(_DWORD *)&v38[4 * v43++ + 284] = v39[5 * row + col]; // v43 = 1 } else { v12 = 2; if ( v12 == row && (v13 = 3, v13 == col) ) // (2,3) { v39[5 * row + col] = v39[next++ + 25]; // d4 *(_DWORD *)&v38[4 * v44++ + 296] = v39[5 * row + col]; // v44 = 1 *(_DWORD *)&v38[4 * v45++ + 308] = v39[5 * row + col]; // v45 = 0 } else { v14 = 3; if ( v14 == row && (v15 = 0, v15 == col) ) // (3,0) { v39[5 * row + col] = v39[next++ + 25]; // d5 *(_DWORD *)&v38[4 * v46++ + 320] = v39[5 * row + col]; // v46 = 0 } else if ( row == 3 && col == 2 ) // (3,2) 特例 row==3 && col==2(直接写死) { v39[5 * row + 2] = v39[next++ + 25]; // d6 *(_DWORD *)&v38[4 * v43++ + 284] = v39[5 * row + col]; // v43 = 2 *(_DWORD *)&v38[4 * v46++ + 320] = v39[5 * row + col]; // v46 = 1 } else { v16 = 3; if ( v16 == row && (v17 = 3, v17 == col) ) // (3,3) { v39[5 * row + col] = v39[next++ + 25]; // d7 *(_DWORD *)&v38[4 * v45++ + 308] = v39[5 * row + col]; // v45 = 1 *(_DWORD *)&v38[4 * v46++ + 320] = v39[5 * row + col]; // v46 = 2 } else { v18 = 3; if ( v18 == row && (v19 = 4, v19 == col) ) // (3,4) { v39[5 * row + col] = v39[next++ + 25]; // d8 *(_DWORD *)&v38[4 * v44++ + 296] = v39[5 * row + col]; // v44 = 2 } else { v20 = 4; if ( v20 == row && (v21 = 2, v21 == col) ) // (4,2) { v39[5 * row + col] = v39[next++ + 25]; // d9 *(_DWORD *)&v38[4 * v45++ + 308] = v39[5 * row + col]; // v45 = 2 } else // 其他位置 全部设为 row + col { v39[5 * row + col] = row + col; } } } } } } } } } /* 5x5 矩阵 v39 [ 0, 1, 2, d0, 4 ] [ d1, 2, d2, 4, 5 ] [ 2, d3, 4, d4, 6 ] [ d5, 4, d6, d7, d8 ] [ 4, 5, d9, 7, 8 ] */ /* v38 + 272 处存了 15 个数值 (5 行 3 列) v42 -> 第一行 d0 d2 d3 v43 -> 第二行 d1 d3 d6 v44 -> 第三行 d2 d4 d8 v45 -> 第四行 d4 d7 d9 v46 -> 第五行 d5 d6 d7 */ v22 = 4; if ( v22 == row ) // row==4 v47 += v39[5 * row + col];}if ( stat("/etc/rc.d", &buf) ) // 该目录在 QNX 下是存在的 所以不会给 v47 额外加值 v47 += *(_DWORD *)&v38[12 * row + 272 + 4 * col]; // row = 0 ~ 4, col=0 // v47 最终等于 4 + 5 + 7 + 8 + d9 = 24 + d9 v22 = 4; if ( v22 == row ) // row==4 v47 += v39[5 * row + col];}if ( stat("/etc/rc.d", &buf) ) // 该目录在 QNX 下是存在的 所以不会给 v47 额外加值 v47 += *(_DWORD *)&v38[12 * row + 272 + 4 * col]; // row = 0 ~ 4, col=0 // v47 最终等于 4 + 5 + 7 + 8 + d9 = 24 + d9v48 = 1; // 检查成功flag// 取 v38 + 272 的行和 应该都为 34for ( row = 0; row <= 4; ++row ) // row 对应 v42 ~ v46{ v51 = 0; for ( col = 0; (int)col <= 2; ++col ) // 每行 3 个数值 { v51 += *(_DWORD *)&v38[12 * row + 272 + 4 * col]; v51 -= 5; } if ( v51 != 19 ) // 每一行的和-15 应该都为 19 -> 每一行的和应该都为 34 v48 = 0;}/*可得等式d0 + d2 + d3 = 34d1 + d3 + d6 = 34d2 + d4 + d8 = 34d4 + d7 + d9 = 34d5 + d6 + d7 = 34*/v48 = 1; // 检查成功flag// 取 v38 + 272 的行和 应该都为 34for ( row = 0; row <= 4; ++row ) // row 对应 v42 ~ v46{ v51 = 0; for ( col = 0; (int)col <= 2; ++col ) // 每行 3 个数值 { v51 += *(_DWORD *)&v38[12 * row + 272 + 4 * col]; v51 -= 5; } if ( v51 != 19 ) // 每一行的和-15 应该都为 19 -> 每一行的和应该都为 34 v48 = 0;}/*可得等式d0 + d2 + d3 = 34d1 + d3 + d6 = 34d2 + d4 + d8 = 34d4 + d7 + d9 = 34d5 + d6 + d7 = 34*/// d29K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2I4L8Y4S2Q4x3X3g2U0L8$3#2Q4x3V1k6V1k6i4k6W2L8r3!0H3k6i4u0K6i4K6u0r3k6r3!0U0M7#2)9J5c8U0N6Q4x3X3f1H3i4K6u0W2x3q4)9J5c8X3y4G2L8g2)9J5k6i4q4F1P5q4)9J5k6h3c8G2j5#2)9J5k6h3&6W2N6i4c8J5K9h3&6G2i4K6u0W2M7s2u0G2k6#2)9J5c8Y4c8G2M7r3W2U0i4K6u0r3M7s2u0G2j5$3g2K6M7#2)9#2k6V1c8o6e0f1c8Q4y4h3k6b7f1V1!0o6i4K6g2X3d9f1&6r3e0#2)9J5k6h3S2@1L8h3H3`.memset(v38, 0, 0x110u); // 在 QNX 这两步成功 所以不会给 v47 额外 +1v49 = open("/proc/self/as", (int)"r"); if ( v49 == -1 ) ++v47;if ( devctl(v49, 0x41100801, v38, 272, 0) ) // 0x41100801 -> DCMD_PROC_INFO ++v47;// b24K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2I4L8Y4S2Q4x3X3g2U0L8$3#2Q4x3V1k6V1k6i4k6W2L8r3!0H3k6i4u0K6i4K6u0r3k6r3!0U0M7#2)9J5c8U0N6Q4x3X3f1H3i4K6u0W2x3q4)9J5c8X3y4G2L8g2)9J5k6i4q4F1P5q4)9J5k6h3c8G2j5#2)9J5k6h3&6W2N6i4c8J5K9h3&6G2i4K6u0W2M7s2u0G2k6#2)9J5c8Y4c8G2M7r3W2U0i4K6u0r3M7s2u0G2j5$3g2K6M7#2)9#2k6V1c8o6e0f1c8Q4y4h3k6b7f1V1!0o6i4K6g2X3d9f1&6r3e0#2)9J5k6h3S2@1L8h3H3`.memset(v38, 0, 0x110u); // 在 QNX 这两步成功 所以不会给 v47 额外 +1v49 = open("/proc/self/as", (int)"r"); if ( v49 == -1 ) ++v47;if ( devctl(v49, 0x41100801, v38, 272, 0) ) // 0x41100801 -> DCMD_PROC_INFO ++v47;v23 = v47;v24 = v39[0] + v39[3] * v39[2] * v39[1] * v39[4] + (v38[8] & 0x80); // 0 + d0 * 2 * 1 * 4 = 8 * d0 | (v38[8]&0x80) 在 QNX 是 0v25 = 4 + 1; // 5// if ( v23 != v24 + v25 * ~4 - 9 ) // if ( v47 != v24 + 5 * ~4 - 9 ) // 5 * ~4 - 9 = 5*(-5) - 9 = -34if ( v47 != v24 - 34 ) // 5 * ~4 - 9 = 5*(-5) - 9 = -34 v48 = 0; // v47 应为 8*d0 - 34 // 前文已知 v47 = 24 + d9 // 24 + d9 = 8*d0 - 34 -> 8*d0 - d9 = 58 // 又因为 d0,d9 范围均为 0 ~ 15 | 暴力求解得 (d0,d9)∈{(8,6), (9,14)}v23 = v47;v24 = v39[0] + v39[3] * v39[2] * v39[1] * v39[4] + (v38[8] & 0x80); // 0 + d0 * 2 * 1 * 4 = 8 * d0 | (v38[8]&0x80) 在 QNX 是 0v25 = 4 + 1; // 5// if ( v23 != v24 + v25 * ~4 - 9 ) // if ( v47 != v24 + 5 * ~4 - 9 ) // 5 * ~4 - 9 = 5*(-5) - 9 = -34if ( v47 != v24 - 34 ) // 5 * ~4 - 9 = 5*(-5) - 9 = -34 v48 = 0; // v47 应为 8*d0 - 34 // 前文已知 v47 = 24 + d9 // 24 + d9 = 8*d0 - 34 -> 8*d0 - d9 = 58 // 又因为 d0,d9 范围均为 0 ~ 15 | 暴力求解得 (d0,d9)∈{(8,6), (9,14)}// 末 4 位 'a'/'s' v50 = 123;v26 = 2 * 4;if ( s[v26 + 2] == 97 ) // s[10]: 'a' +45 / 's' -45 v50 += 45;v27 = 2 * 4;if ( s[v27 + 2] == 115 ) v50 -= 45;v28 = 2 * 4;if ( s[v28 + 3] == 97 ) // s[11]: 'a' +67 / 's' -67 v50 += 67;v29 = 2 * 4;if ( s[v29 + 3] == 115 ) v50 -= 67;v30 = 2 * 4;if ( s[v30 + 4] == 97 ) // s[12]: 'a' +8 / 's' -8 v50 += 8;v31 = 2 * 4;if ( s[v31 + 4] == 115 ) v50 -= 8;v32 = 3 * 4;if ( s[v32 + 1] == 97 ) // s[13]: 'a' +9 / 's' -9 v50 += 9;v33 = 3 * 4;if ( s[v33 + 1] == 115 ) v50 -= 9;v34 = 4;v35 = 1;if ( 20 * (v34 + v35) != v50 ) // 100 != v50 -> v50 应为 100 // 100 = 123 + 45 - 67 + 8 -9 // 即 s[10]='a', s[11]='s', s[12]='a', s[13]='s' v48 = 0;// 末 4 位 'a'/'s' v50 = 123;v26 = 2 * 4;if ( s[v26 + 2] == 97 ) // s[10]: 'a' +45 / 's' -45 v50 += 45;v27 = 2 * 4;if ( s[v27 + 2] == 115 ) v50 -= 45;v28 = 2 * 4;if ( s[v28 + 3] == 97 ) // s[11]: 'a' +67 / 's' -67 v50 += 67;v29 = 2 * 4;if ( s[v29 + 3] == 115 ) v50 -= 67;v30 = 2 * 4;if ( s[v30 + 4] == 97 ) // s[12]: 'a' +8 / 's' -8 v50 += 8;v31 = 2 * 4;if ( s[v31 + 4] == 115 ) v50 -= 8;v32 = 3 * 4;if ( s[v32 + 1] == 97 ) // s[13]: 'a' +9 / 's' -9 v50 += 9;v33 = 3 * 4;if ( s[v33 + 1] == 115 ) v50 -= 9;v34 = 4;v35 = 1;if ( 20 * (v34 + v35) != v50 ) // 100 != v50 -> v50 应为 100 // 100 = 123 + 45 - 67 + 8 -9 // 即 s[10]='a', s[11]='s', s[12]='a', s[13]='s' v48 = 0;if ( v48 == 1 && strlen(s) <= 0xE ) // key 长度 <= 14 -> key 结构为 10 个有效字符 + "asas" puts("ok");else puts("no");if ( v48 == 1 && strlen(s) <= 0xE ) // key 长度 <= 14 -> key 结构为 10 个有效字符 + "asas" puts("ok");else puts("no");8fbfdf4fa6asas OK8ebfde5fa6asas OK8dbfdd6fa6asas OK8cbfdc7fa6asas OK8bbfdb8fa6asas OK8abfda9fa6asas OK89bfd9afa6asas OK88bfd8bfa6asas OK87bfd7cfa6asas OK86bfd6dfa6asas OK85bfd5efa6asas OK84bfd4ffa6asas OK8ebfef5e96asas OK8dbfee6e96asas OK8cbfed7e96asas OK8bbfec8e96asas OK8abfeb9e96asas OK89bfeaae96asas OK88bfe9be96asas OK87bfe8ce96asas OK86bfe7de96asas OK85bfe6ee96asas OK84bfe5fe96asas OK8dbfff6d86asas OK8cbffe7d86asas OK8bbffd8d86asas OK8abffc9d86asas OK89bffbad86asas OK88bffabd86asas OK87bff9cd86asas OK86bff8dd86asas OK85bff7ed86asas OK84bff6fd86asas OK8fcede5f96asas OK8ecedd6f96asas OK8dcedc7f96asas OK8ccedb8f96asas OK8bceda9f96asas OK8aced9af96asas OK89ced8bf96asas OK88ced7cf96asas OK87ced6df96asas OK86ced5ef96asas OK85ced4ff96asas OK8fceef5e86asas OK8eceee6e86asas OK8dceed7e86asas OK8cceec8e86asas OK8bceeb9e86asas OK8aceeaae86asas OK89cee9be86asas OK88cee8ce86asas OK87cee7de86asas OK86cee6ee86asas OK85cee5fe86asas OK8eceff6d76asas OK8dcefe7d76asas OK8ccefd8d76asas OK8bcefc9d76asas OK8acefbad76asas OK89cefabd76asas OK88cef9cd76asas OK87cef8dd76asas OK86cef7ed76asas OK85cef6fd76asas OK8fdddd6f86asas OK8edddc7f86asas OK8ddddb8f86asas OK8cddda9f86asas OK8bddd9af86asas OK8addd8bf86asas OK89ddd7cf86asas OK88ddd6df86asas OK87ddd5ef86asas OK86ddd4ff86asas OK8fddee6e76asas OK8edded7e76asas OK8dddec8e76asas OK8cddeb9e76asas OK8bddeaae76asas OK8adde9be76asas OK89dde8ce76asas OK88dde7de76asas OK87dde6ee76asas OK86dde5fe76asas OK8fddff6d66asas OK8eddfe7d66asas OK8dddfd8d66asas OK8cddfc9d66asas OK8bddfbad66asas OK8addfabd66asas OK89ddf9cd66asas OK88ddf8dd66asas OK87ddf7ed66asas OK86ddf6fd66asas OK8fecdc7f76asas OK8eecdb8f76asas OK8decda9f76asas OK8cecd9af76asas OK8becd8bf76asas OK8aecd7cf76asas OK89ecd6df76asas OK88ecd5ef76asas OK87ecd4ff76asas OK8feced7e66asas OK8eecec8e66asas OK8deceb9e66asas OK8ceceaae66asas OK8bece9be66asas OK8aece8ce66asas OK89ece7de66asas OK88ece6ee66asas OK87ece5fe66asas OK8fecfe7d56asas OK8eecfd8d56asas OK8decfc9d56asas OK8cecfbad56asas OK8becfabd56asas OK8aecf9cd56asas OK89ecf8dd56asas OK88ecf7ed56asas OK87ecf6fd56asas OK8ffbdb8f66asas OK8efbda9f66asas OK8dfbd9af66asas OK8cfbd8bf66asas OK8bfbd7cf66asas OK8afbd6df66asas OK89fbd5ef66asas OK88fbd4ff66asas OK8ffbec8e56asas OK8efbeb9e56asas OK8dfbeaae56asas OK8cfbe9be56asas OK8bfbe8ce56asas OK8afbe7de56asas OK89fbe6ee56asas OK88fbe5fe56asas OK8ffbfd8d46asas OK8efbfc9d46asas OK8dfbfbad46asas OK8cfbfabd46asas OK8bfbf9cd46asas OK8afbf8dd46asas OK89fbf7ed46asas OK88fbf6fd46asas OK9baf9f8bfeasas OK9aaf9e9bfeasas OK99af9dabfeasas OK98af9cbbfeasas OK97af9bcbfeasas OK96af9adbfeasas OK95af99ebfeasas OK94af98fbfeasas OK9aafaf9aeeasas OK99afaeaaeeasas OK98afadbaeeasas OK97afaccaeeasas OK96afabdaeeasas OK95afaaeaeeasas OK94afa9faeeasas OK99afbfa9deasas OK98afbeb9deasas OK97afbdc9deasas OK96afbcd9deasas OK95afbbe9deasas OK94afbaf9deasas OK98afcfb8ceasas OK97afcec8ceasas OK96afcdd8ceasas OK95afcce8ceasas OK94afcbf8ceasas OK97afdfc7beasas OK96afded7beasas OK95afdde7beasas OK94afdcf7beasas OK96afefd6aeasas OK95afeee6aeasas OK94afedf6aeasas OK95afffe59easas OK94affef59easas OK9dbe8f7cfeasas OK9cbe8e8cfeasas OK9bbe8d9cfeasas OK9abe8cacfeasas OK99be8bbcfeasas OK98be8accfeasas OK97be89dcfeasas OK96be88ecfeasas OK95be87fcfeasas OK9cbe9f8beeasas OK9bbe9e9beeasas OK9abe9dabeeasas OK99be9cbbeeasas OK98be9bcbeeasas OK97be9adbeeasas OK96be99ebeeasas OK95be98fbeeasas OK9bbeaf9adeasas OK9abeaeaadeasas OK99beadbadeasas OK98beaccadeasas OK97beabdadeasas OK96beaaeadeasas OK95bea9fadeasas OK9abebfa9ceasas OK99bebeb9ceasas OK98bebdc9ceasas OK97bebcd9ceasas OK96bebbe9ceasas OK95bebaf9ceasas OK99becfb8beasas OK98becec8beasas OK97becdd8beasas OK96becce8beasas OK95becbf8beasas OK98bedfc7aeasas OK97beded7aeasas OK96bedde7aeasas OK95bedcf7aeasas OK97beefd69easas OK96beeee69easas OK95beedf69easas OK96beffe58easas OK95befef58easas OK9fcd7f6dfeasas OK9ecd7e7dfeasas OK9dcd7d8dfeasas OK9ccd7c9dfeasas OK9bcd7badfeasas OK9acd7abdfeasas OK99cd79cdfeasas OK98cd78ddfeasas OK97cd77edfeasas OK96cd76fdfeasas OK9ecd8f7ceeasas OK9dcd8e8ceeasas OK9ccd8d9ceeasas OK9bcd8caceeasas OK9acd8bbceeasas OK99cd8acceeasas OK98cd89dceeasas OK97cd88eceeasas OK96cd87fceeasas OK9dcd9f8bdeasas OK9ccd9e9bdeasas OK9bcd9dabdeasas OK9acd9cbbdeasas OK99cd9bcbdeasas OK98cd9adbdeasas OK97cd99ebdeasas OK96cd98fbdeasas OK9ccdaf9aceasas OK9bcdaeaaceasas OK9acdadbaceasas OK99cdaccaceasas OK98cdabdaceasas OK97cdaaeaceasas OK96cda9faceasas OK9bcdbfa9beasas OK9acdbeb9beasas OK99cdbdc9beasas OK98cdbcd9beasas OK97cdbbe9beasas OK96cdbaf9beasas OK9acdcfb8aeasas OK99cdcec8aeasas OK98cdcdd8aeasas OK97cdcce8aeasas OK96cdcbf8aeasas OK99cddfc79easas OK98cdded79easas OK97cddde79easas OK96cddcf79easas OK98cdefd68easas OK97cdeee68easas OK96cdedf68easas OK97cdffe57easas OK96cdfef57easas OK9fdc6d7efeasas OK9edc6c8efeasas OK9ddc6b9efeasas OK9cdc6aaefeasas OK9bdc69befeasas OK9adc68cefeasas OK99dc67defeasas OK98dc66eefeasas OK97dc65fefeasas OK9fdc7e7deeasas OK9edc7d8deeasas OK9ddc7c9deeasas OK9cdc7badeeasas OK9bdc7abdeeasas OK9adc79cdeeasas OK99dc78ddeeasas OK98dc77edeeasas OK97dc76fdeeasas OK9fdc8f7cdeasas OK9edc8e8cdeasas OK9ddc8d9cdeasas OK9cdc8cacdeasas OK9bdc8bbcdeasas OK9adc8accdeasas OK99dc89dcdeasas OK98dc88ecdeasas OK97dc87fcdeasas OK9edc9f8bceasas OK9ddc9e9bceasas OK9cdc9dabceasas OK9bdc9cbbceasas OK9adc9bcbceasas OK99dc9adbceasas OK98dc99ebceasas OK97dc98fbceasas OK9ddcaf9abeasas OK9cdcaeaabeasas OK9bdcadbabeasas OK9adcaccabeasas OK99dcabdabeasas OK98dcaaeabeasas OK97dca9fabeasas OK9cdcbfa9aeasas OK9bdcbeb9aeasas OK9adcbdc9aeasas OK99dcbcd9aeasas OK98dcbbe9aeasas OK97dcbaf9aeasas OK9bdccfb89easas OK9adccec89easas OK99dccdd89easas OK98dccce89easas OK97dccbf89easas OK9adcdfc78easas OK99dcded78easas OK98dcdde78easas OK97dcdcf78easas OK99dcefd67easas OK98dceee67easas OK97dcedf67easas OK98dcffe56easas OK97dcfef56easas OK9feb5b8ffeasas OK9eeb5a9ffeasas OK9deb59affeasas OK9ceb58bffeasas OK9beb57cffeasas OK9aeb56dffeasas OK99eb55effeasas OK98eb54fffeasas OK9feb6c8eeeasas OK9eeb6b9eeeasas OK9deb6aaeeeasas OK9ceb69beeeasas OK9beb68ceeeasas OK9aeb67deeeasas OK99eb66eeeeasas OK98eb65feeeasas OK9feb7d8ddeasas OK9eeb7c9ddeasas OK9deb7baddeasas OK9ceb7abddeasas OK9beb79cddeasas OK9aeb78dddeasas OK99eb77eddeasas OK98eb76fddeasas OK9feb8e8cceasas OK9eeb8d9cceasas OK9deb8cacceasas OK9ceb8bbcceasas OK9beb8accceasas OK9aeb89dcceasas OK99eb88ecceasas OK98eb87fcceasas OK9feb9f8bbeasas OK9eeb9e9bbeasas OK9deb9dabbeasas OK9ceb9cbbbeasas OK9beb9bcbbeasas OK9aeb9adbbeasas OK99eb99ebbeasas OK98eb98fbbeasas OK9eebaf9aaeasas OK9debaeaaaeasas OK9cebadbaaeasas OK9bebaccaaeasas OK9aebabdaaeasas OK99ebaaeaaeasas OK98eba9faaeasas OK9debbfa99easas OK9cebbeb99easas OK9bebbdc99easas OK9aebbcd99easas OK99ebbbe99easas OK98ebbaf99easas OK9cebcfb88easas OK9bebcec88easas OK9aebcdd88easas OK99ebcce88easas OK98ebcbf88easas OK9bebdfc77easas OK9aebded77easas OK99ebdde77easas OK98ebdcf77easas OK9aebefd66easas OK99ebeee66easas OK98ebedf66easas OK99ebffe55easas OK98ebfef55easas OK9ffa5a9feeasas OK9efa59afeeasas OK9dfa58bfeeasas OK9cfa57cfeeasas OK9bfa56dfeeasas OK9afa55efeeasas OK99fa54ffeeasas OK9ffa6b9edeasas OK9efa6aaedeasas OK9dfa69bedeasas OK9cfa68cedeasas OK9bfa67dedeasas OK9afa66eedeasas OK99fa65fedeasas OK9ffa7c9dceasas OK9efa7badceasas OK9dfa7abdceasas OK9cfa79cdceasas OK9bfa78ddceasas OK9afa77edceasas OK99fa76fdceasas OK9ffa8d9cbeasas OK9efa8cacbeasas OK9dfa8bbcbeasas OK9cfa8accbeasas OK9bfa89dcbeasas OK9afa88ecbeasas OK99fa87fcbeasas OK9ffa9e9baeasas OK9efa9dabaeasas OK9dfa9cbbaeasas OK9cfa9bcbaeasas OK9bfa9adbaeasas OK9afa99ebaeasas OK99fa98fbaeasas OK9ffaaf9a9easas OK9efaaeaa9easas OK9dfaadba9easas OK9cfaacca9easas OK9bfaabda9easas OK9afaaaea9easas OK99faa9fa9easas OK9efabfa98easas OK9dfabeb98easas OK9cfabdc98easas OK9bfabcd98easas OK9afabbe98easas OK99fabaf98easas OK9dfacfb87easas OK9cfacec87easas OK9bfacdd87easas OK9afacce87easas OK99facbf87easas OK9cfadfc76easas OK9bfaded76easas OK9afadde76easas OK99fadcf76easas OK9bfaefd65easas OK9afaeee65easas OK99faedf65easas OK9afaffe54easas OK99fafef54easas OK总共Key数: 4708fbfdf4fa6asas OK8ebfde5fa6asas OK8dbfdd6fa6asas OK8cbfdc7fa6asas OK8bbfdb8fa6asas OK8abfda9fa6asas OK89bfd9afa6asas OK88bfd8bfa6asas OK87bfd7cfa6asas OK86bfd6dfa6asas OK85bfd5efa6asas OK84bfd4ffa6asas OK8ebfef5e96asas OK8dbfee6e96asas OK8cbfed7e96asas OK8bbfec8e96asas OK8abfeb9e96asas OK89bfeaae96asas OK88bfe9be96asas OK87bfe8ce96asas OK86bfe7de96asas OK85bfe6ee96asas OK84bfe5fe96asas OK8dbfff6d86asas OK8cbffe7d86asas OK8bbffd8d86asas OK8abffc9d86asas OK89bffbad86asas OK88bffabd86asas OK87bff9cd86asas OK86bff8dd86asas OK85bff7ed86asas OK84bff6fd86asas OK8fcede5f96asas OK8ecedd6f96asas OK8dcedc7f96asas OK8ccedb8f96asas OK8bceda9f96asas OK8aced9af96asas OK89ced8bf96asas OK88ced7cf96asas OK87ced6df96asas OK86ced5ef96asas OK85ced4ff96asas OK8fceef5e86asas OK8eceee6e86asas OK8dceed7e86asas OK8cceec8e86asas OK8bceeb9e86asas OK8aceeaae86asas OK89cee9be86asas OK88cee8ce86asas OK87cee7de86asas OK86cee6ee86asas OK85cee5fe86asas OK8eceff6d76asas OK8dcefe7d76asas OK8ccefd8d76asas OK8bcefc9d76asas OK8acefbad76asas OK89cefabd76asas OK88cef9cd76asas OK87cef8dd76asas OK86cef7ed76asas OK85cef6fd76asas OK8fdddd6f86asas OK8edddc7f86asas OK8ddddb8f86asas OK8cddda9f86asas OK8bddd9af86asas OK8addd8bf86asas OK89ddd7cf86asas OK88ddd6df86asas OK87ddd5ef86asas OK86ddd4ff86asas OK8fddee6e76asas OK8edded7e76asas OK8dddec8e76asas OK8cddeb9e76asas OK8bddeaae76asas OK8adde9be76asas OK89dde8ce76asas OK88dde7de76asas OK87dde6ee76asas OK86dde5fe76asas OK8fddff6d66asas OK8eddfe7d66asas OK8dddfd8d66asas OK8cddfc9d66asas OK8bddfbad66asas OK8addfabd66asas OK89ddf9cd66asas OK88ddf8dd66asas OK87ddf7ed66asas OK86ddf6fd66asas OK8fecdc7f76asas OK8eecdb8f76asas OK8decda9f76asas OK8cecd9af76asas OK8becd8bf76asas OK8aecd7cf76asas OK89ecd6df76asas OK88ecd5ef76asas OK[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!
最后于 2025-8-29 00:55
被DNLINYJ编辑
,原因:
赞赏
他的文章
赞赏
雪币:
留言: