tt x-gorgon
算了不写了
okay,现在重回正题,该样本app版本为4063,具体的unidbg补环境比较简单,就不提了,定位参数生成位置和寻找入参可以参考果冻爽大佬的文章https://bbs.kanxue.com/thread-285623.htm。
由于加密会用到时间戳,所以先把时间戳给固定了,保持多次踹死结果一致

开始前先踹死一份日志,后续主要根据日志+unidbg hook+ida进行分析,trace的时候可以顺便把memcpy也给hook上,这样方便后续分析

这是unidbg跑出来的结果,其中的x-gorgon是要分析的内容,大小为26字节
使用010editor打开trace日志,随便搜一下结果中的前几个字符串

直接就搜到了,hook memcpy的好处也体现出来了。
直接向上搜这个地址

可以看到,是在这个地方写入的0x38
来源于上面的0x12618ac0这个地址,继续向上找这个
str(.*?)0x12618ac0 直接用正则表达式搜索会快一点

找到了,是在这个地方
继续向上跟,这里就不带着跟了,只给出找到的相关trace日志
这是跟0x38所有的相关日志,最上面是g结果中的第一个字节,第一个字节提取高位之后从0x12189f35+0x8提取出了0x38,0x12189f35再向上找就找不到了,考虑是ida中的常量区,打开ida跳转过去

0x12189f35+0x8 的位置不就是8吗,这根0x38有什么关系,有的兄弟有的,0x38是8的16进制的形式,在继续观察0x38 0x34 0x30 0x34....之后发现这一步其实是将结果中84...高、低四位转换为16进制形式表示,所以结果在上面就已经生成了,需要继续向上看
0x1261ade0这是0x84的地址,继续跟踪该地址向上看,还是之前的搜索方式

不仅搜索到了0x84,前四个字节都搜索到了(而且在这里可以知道这26字节的结果所处的地址为0x1261ade0+26)
一个一个看
0x84

去看ida中的汇编代码,会发现这里是移动0x84这个固定值进去的,那这个就不用再管了,继续看
0x04

同样的,也是一个固定值
0xe0
这个在ida中看不出来什么,再加上有混淆,不如继续去看trace日志
下面是踹死到的相关日志,跟踪方式与上面类似,这里不再重复
再向上找就再也找不到了,下面的0xad也是类似,但是看上面的trace日志可以发现它俩来自于某个地址的后两个字节,经过多次踹死后确定如此,我就直接将其固定写死了,这两个字节后面会作为key的一部分被使用到,注意要保持前后一致
这是前四个字节的来源,继续看后面的
后面的0000经过多次验证发现也是固定的,就不看了
现在就只剩下后20个字节了。

先看后面的0x90
还是之前的搜索方式
str(.*?)0x1261ade
简略分析后可以得出0x90是通过下面这些日志产生的
这是其对应ida反编译后加上ai补充的注释,这段代码是在v54进行一些操作其中会使用到的变量为v67、v53,所以现在就很明确了,v54、v67、v53是需要逆向分析的目标,先去看看日志中分别对应的都是什么吧,将鼠标光标放到v54[v67]上后点击tab键

发现其对应这一条日志,接着去踹死日志中搜索09a5e4这个地址

发现v67只是一个计数器、循环变量(0,1,2....),0x1261ade6~0x1261ade6+20是我们要分析的v54的地址
按照上述方式再看一眼v53

会发现之前固定的0xfff...eb就是v53,那就很清晰了,要分析的只有v54了
按照上述方式继续搜索0xde,下面是所有的相关来源

到ida中去查看该地址,其对应的就是这句伪c代码,再结合上面踹死到的日志不难发现这是在做
result[i]=v54[i]^v54[i+1] ,所以要继续向上找这个v54
先跟到的是这里,去ida里看一眼伪c代码就知道是在做什么了
相当于是v54[i]单字节中的高四位和第四位置换位置,说白了就是2和9交换位置,所以在每次进行result[i]=v54[i]^v54[i+1] 操作前,会先对v54[i]进行一个小的置换,继续向上去跟v54的来源,最终是在这里生成的
上面是ida中伪c代码结合ai注释后的代码块,ai已经帮我们分析好了,可以知道要继续跟踪的只有v78、v54了
一个一个看
先看v78吧,这个"Sbox"的来源

其对应的地址为0xe4ffda40...,我们之前都是在日志中去进行的跟踪,这次用一下unidbg的tracewrite

可以看到,基本都是在是在0x99be8这个地方写入的,跳转到ida中去看一下
这是ida中反编译出的伪c代码,和rc4类似,其中v78为Sbox、v87为key,分析一下之后发现v78会被初始化为0~255,正常的rc4初始化表,v87key其中除了有两个字节会变之外,其他都是固定的,这两个变化的字节跟gorgon加密结果中的第三和第四个字节是相同的,之前也提到过这个。
现在先稍微总结一下,v54为加密数据,根据v87key对v78Sbox进行初始化,之后再通过v78 Sbox对v54进行加密,最后在v54内部做一些运算,这相当于就是一个变种的rc4了(里面具体的运算步骤有些改变)。所以现在只剩下加密入参v54的来源需要分析了,
继续看v54吧,加密数据的来源
v54一共20字节,分别为98fd959500000000000000002000020568749f72

这里我们还是去tracewrite看,tracewite和在日志内追踪效果是一致的

。。。打脸了,什么都没trace到,那说明什么了,说明他可能是是memcpy地址拷贝过来的,在日志中搜索一下,再次打脸。。。又是什么相关信息都没有,尝试在日志中搜索一下9595fd98

终于找到了
跳转到ida中后会发现
好家伙,这不是md5吗,先看看是不是标准的md5吧,在unidbg中对sub_180F44下断点,找入参去验证一下是不是标准md5

怀疑是对这段截取的uri进行的md5,到在线网站上去做一下验证

okay,结果的前四字节跟之前去找的一模一样,那就
是这个了
98fd959500000000000000002000020568749f72
再后面的20000205适合版本有关,这个就不管了,可以直接固定住
再看一下最后的68749f72
直接在踹死的日志中搜

继续搜索68749f72

最前面的是在这里,再向上就没有相关逻辑了,怀疑是0x02d49c这里生成的,在ida中查看

发现这里其实是gettimeofday获取当前时间的,现在的时间戳不都应该175开头吗,为什么这里是0x68开头的呢,因为这是16进制,拿到计算其中转换一下就明白了

好了,确实没有错,那v54就确定了。
v54确定了,这篇文章的主体内容也就到此结束了。剩下的就只是去复现加密过程中的运算逻辑了,这里就不提了。
有问题的或者想要交流技术的都可以加贴主vx mwzzzh(记得备注一下看雪)
X-Argus
Xt2BxcP5LV9DAYS7/t3toblfa8SbPeWKHNNQ0EuwOQq0tOW4TFE7htQ7fZ9WGyngoYDkosb7p1eXgg4ed4H5nVJlmwpUoFhGzo3w40uzWQju0iKkve/mueX0bV+mFba+taAO5tqvgxi79bJPegIClUC/Wv8lOMCmRjkxQj5N94/m8PziZ4zkej1wsUgoRrulpiWmG0th+TuMiahA6lSPGZaEdoPYugmUZDSldBEUEk3Io4CPr2ZLmD3RuYDmUK79eottaSXLajZOi80sQ0+NHhmnnHBkjAQQC7DmhWF12jSm3jMlVDtn0HUJUneT4Fo/Yp8=
X-Gorgon
8404e0ad00009058bdc1a1c16365352e6593aed16a8fc7100f68
X-Khronos
1752473458
X-Ladon
sAIHSCUjZK9ZOp/dqwzMB47c0K4L1eW+U1UDkhpurWKB5gIp
X-Argus
Xt2BxcP5LV9DAYS7/t3toblfa8SbPeWKHNNQ0EuwOQq0tOW4TFE7htQ7fZ9WGyngoYDkosb7p1eXgg4ed4H5nVJlmwpUoFhGzo3w40uzWQju0iKkve/mueX0bV+mFba+taAO5tqvgxi79bJPegIClUC/Wv8lOMCmRjkxQj5N94/m8PziZ4zkej1wsUgoRrulpiWmG0th+TuMiahA6lSPGZaEdoPYugmUZDSldBEUEk3Io4CPr2ZLmD3RuYDmUK79eottaSXLajZOi80sQ0+NHhmnnHBkjAQQC7DmhWF12jSm3jMlVDtn0HUJUneT4Fo/Yp8=
X-Gorgon
8404e0ad00009058bdc1a1c16365352e6593aed16a8fc7100f68
X-Khronos
1752473458
X-Ladon
sAIHSCUjZK9ZOp/dqwzMB47c0K4L1eW+U1UDkhpurWKB5gIp
0x1209c1f8: "ldrb w8, [x8, x21]" x8=0x1261ade0 x21=0x0 => w8=0x84
0x1209c1fc: "lsr x8, x8, #4" x8=0x84 => x8=0x8
0x1209c200: "ldrb w1, [x9, x8]" x9=0x12189f35 x8=0x8 => w1=0x38
0x121702b0: "mov w20, w1" w1=0x38 => w20=0x38
0x121702e8: "strb w20, [x8, x21]" w20=0x38 x8=0x12618ac0 x21=0x0 => w20=0x38
0x1209c1f8: "ldrb w8, [x8, x21]" x8=0x1261ade0 x21=0x0 => w8=0x84
0x1209c1fc: "lsr x8, x8, #4" x8=0x84 => x8=0x8
0x1209c200: "ldrb w1, [x9, x8]" x9=0x12189f35 x8=0x8 => w1=0x38
0x121702b0: "mov w20, w1" w1=0x38 => w20=0x38
0x121702e8: "strb w20, [x8, x21]" w20=0x38 x8=0x12618ac0 x21=0x0 => w20=0x38
0x12099ba8: "ldrb w9, [x11, w9, sxtw]" x11=0xe4ffdb50 w9=0x7 => w9=0xe0
0x1209a580: "ldrb w0, [x0, #7]" x0=0xe4ffdb50 => w0=0xe0
0x1209a588: "strb w0, [x21, #2]" w0=0xe0 x21=0x1261ade0 => w0=0xe0
0x12099ba8: "ldrb w9, [x11, w9, sxtw]" x11=0xe4ffdb50 w9=0x7 => w9=0xe0
0x1209a580: "ldrb w0, [x0, #7]" x0=0xe4ffdb50 => w0=0xe0
0x1209a588: "strb w0, [x21, #2]" w0=0xe0 x21=0x1261ade0 => w0=0xe0
0x1209a5e4: "ldrb w0, [x24, x20]" x24=0x1261ade6 x20=0x0 => w0=0xde
0x1209a5e8: "and w21, w1, w0, lsl #1" w1=0xffffffaa w0=0xde => w21=0x1a8
0x1209a5ec: "and w0, w11, w0, lsr #1" w11=0x55 w0=0xde => w0=0x45
0x1209a5f0: "orr w0, w21, w0" w21=0x1a8 w0=0x45 => w0=0x1ed
0x1209a5f4: "lsl w21, w0, #2" w21=0x1a8 w0=0x1ed => w21=0x7b4
0x1209a5f8: "and w0, w12, w0, lsr #2" w12=0x33 w0=0x1ed => w0=0x33
0x1209a5fc: "and w21, w21, #0xffffffcf" w21=0x7b4 => w21=0x784
0x1209a600: "orr w0, w21, w0" w21=0x784 w0=0x33 => w0=0x7b7
0x1209a604: "ubfx w21, w0, #4, #4" w21=0x784 w0=0x7b7 => w21=0xb
0x1209a608: "bfi w21, w0, #4, #0x1c" w21=0xb w0=0x7b7 => w21=0x7b7b
0x1209a60c: "eor w0, w21, w10" w21=0x7b7b w10=0xffffffeb => w0=0xffff8490 //0x...eb是固定的
0x1209a610: "strb w0, [x24, x20]" w0=0xffff8490 x24=0x1261ade6 x20=0x0 => w0=0xffff8490
0x1209a5e4: "ldrb w0, [x24, x20]" x24=0x1261ade6 x20=0x0 => w0=0xde
0x1209a5e8: "and w21, w1, w0, lsl #1" w1=0xffffffaa w0=0xde => w21=0x1a8
0x1209a5ec: "and w0, w11, w0, lsr #1" w11=0x55 w0=0xde => w0=0x45
0x1209a5f0: "orr w0, w21, w0" w21=0x1a8 w0=0x45 => w0=0x1ed
0x1209a5f4: "lsl w21, w0, #2" w21=0x1a8 w0=0x1ed => w21=0x7b4
0x1209a5f8: "and w0, w12, w0, lsr #2" w12=0x33 w0=0x1ed => w0=0x33
0x1209a5fc: "and w21, w21, #0xffffffcf" w21=0x7b4 => w21=0x784
0x1209a600: "orr w0, w21, w0" w21=0x784 w0=0x33 => w0=0x7b7
0x1209a604: "ubfx w21, w0, #4, #4" w21=0x784 w0=0x7b7 => w21=0xb
0x1209a608: "bfi w21, w0, #4, #0x1c" w21=0xb w0=0x7b7 => w21=0x7b7b
0x1209a60c: "eor w0, w21, w10" w21=0x7b7b w10=0xffffffeb => w0=0xffff8490 //0x...eb是固定的
0x1209a610: "strb w0, [x24, x20]" w0=0xffff8490 x24=0x1261ade6 x20=0x0 => w0=0xffff8490
do {
v72 = (2 * (unsigned __int8)v54[v67]) & 0xFFAA | ((unsigned __int8)v54[v67] >> 1) & 0x55;
v73 = (4 * v72) & 0xFFFFFFCF | (v72 >> 2) & 0x33;
v54[v67] = (((unsigned __int8)v73 >> 4) | (16 * v73)) ^ ~(_BYTE)v53;
*(_DWORD *)(v19 - 124) = 144;
*(_DWORD *)(v19 - 128) = 430;
v74 = *(_DWORD *)(v19 - 124) * *(_DWORD *)(v19 - 124);
} while (2 * (v74 & 1) + (v74 ^ 1) == 7 * *(_DWORD *)(v19 - 128) * *(_DWORD *)(v19 - 128));
do {
v72 = (2 * (unsigned __int8)v54[v67]) & 0xFFAA | ((unsigned __int8)v54[v67] >> 1) & 0x55;
v73 = (4 * v72) & 0xFFFFFFCF | (v72 >> 2) & 0x33;
v54[v67] = (((unsigned __int8)v73 >> 4) | (16 * v73)) ^ ~(_BYTE)v53;
*(_DWORD *)(v19 - 124) = 144;
*(_DWORD *)(v19 - 128) = 430;
v74 = *(_DWORD *)(v19 - 124) * *(_DWORD *)(v19 - 124);
} while (2 * (v74 & 1) + (v74 ^ 1) == 7 * *(_DWORD *)(v19 - 128) * *(_DWORD *)(v19 - 128));
0x1209a424: "ldrb w21, [x24, w7, sxtw]" x24=0x1261ade6 w7=0x1 => w21=0x4c
0x1209a428: "ldrb w22, [x24, x20]" x24=0x1261ade6 x20=0x0 => w22=0x92
0x1209a42c: "eor w21, w22, w21" w22=0x92 w21=0x4c => w21=0xde
0x1209a430: "strb w21, [x24, x20]" w21=0xde x24=0x1261ade6 x20=0x0 => w21=0xde
0x1209a424: "ldrb w21, [x24, w7, sxtw]" x24=0x1261ade6 w7=0x1 => w21=0x4c
0x1209a428: "ldrb w22, [x24, x20]" x24=0x1261ade6 x20=0x0 => w22=0x92
0x1209a42c: "eor w21, w22, w21" w22=0x92 w21=0x4c => w21=0xde
0x1209a430: "strb w21, [x24, x20]" w21=0xde x24=0x1261ade6 x20=0x0 => w21=0xde
0x1209a298: "lsr w21, w7, #4" w21=0x25900 w7=0x29 => w21=0x2
0x1209a29c: "bfi w21, w7, #4, #8" w21=0x2 w7=0x29 => w21=0x292
0x1209a2a0: "strb w21, [x24, x20]" w21=0x292 x24=0x1261ade6 x20=0x0 => w21=0x292
0x1209a298: "lsr w21, w7, #4" w21=0x25900 w7=0x29 => w21=0x2
0x1209a29c: "bfi w21, w7, #4, #8" w21=0x2 w7=0x29 => w21=0x292
0x1209a2a0: "strb w21, [x24, x20]" w21=0x292 x24=0x1261ade6 x20=0x0 => w21=0x292
v54[(int)result] = (v54[(int)result] >> 4) & 0xF | (16 * v54[(int)result]);
v54[(int)result] = (v54[(int)result] >> 4) & 0xF | (16 * v54[(int)result]);
0x1209a054: "eor w10, w10, w13" w10=0xb1 w13=0xfd => w10=0x4c
0x1209a054: "eor w10, w10, w13" w10=0xb1 w13=0x98 => w10=0x29
0x1209a054: "eor w10, w10, w13" w10=0xb1 w13=0xfd => w10=0x4c
0x1209a054: "eor w10, w10, w13" w10=0xb1 w13=0x98 => w10=0x29
do {
v58 = v56 + 256;
if ((int)(v56 + 1) >= 0)
v58 = v56 + 1;
v59 = v56 + 1 - (v58 & 0xFFFFFF00);
v60 = (v55 ^ (unsigned __int8)v78[v59]) + 2 * (v55 & v78[v59]);
v61 = v60 + 255;
if (v60 >= 0)
v61 = (v55 ^ (unsigned __int8)v78[v59]) + 2 * (v55 & v78[v59]);
v62 = v60 - (v61 & 0xFFFFFF00);
v63 = v78[v62];
v78[v59] = v63;
v78[v62] = v63;
v54[v57] ^= v78[(unsigned __int8)((v78[v59] | v63) + (v78[v59] & v63))];
*(_DWORD *)(v19 - 220) = 283;
*(_DWORD *)(v19 - 224) = 139;
}
while (*(_DWORD *)(v19 - 220) * *(_DWORD *)(v19 - 220) + 1 == 7 * *(_DWORD *)(v19 - 224) * *(_DWORD *)(v19 - 224));
do {
v58 = v56 + 256;
if ((int)(v56 + 1) >= 0)
v58 = v56 + 1;
v59 = v56 + 1 - (v58 & 0xFFFFFF00);
v60 = (v55 ^ (unsigned __int8)v78[v59]) + 2 * (v55 & v78[v59]);
v61 = v60 + 255;
if (v60 >= 0)
v61 = (v55 ^ (unsigned __int8)v78[v59]) + 2 * (v55 & v78[v59]);
v62 = v60 - (v61 & 0xFFFFFF00);
v63 = v78[v62];
v78[v59] = v63;
v78[v62] = v63;
v54[v57] ^= v78[(unsigned __int8)((v78[v59] | v63) + (v78[v59] & v63))];
*(_DWORD *)(v19 - 220) = 283;
*(_DWORD *)(v19 - 224) = 139;
}
while (*(_DWORD *)(v19 - 220) * *(_DWORD *)(v19 - 220) + 1 == 7 * *(_DWORD *)(v19 - 224) * *(_DWORD *)(v19 - 224));
do
{
v44 = v43 + 311;
if (v43 + 56 >= 0)
v44 = v43 + 56;
if (v43 + 56 - (v44 & 0xFFFFFF00) == 3)
*(_BYTE *)(*(_QWORD *)(a3 + 16) + 3LL) = BYTE3(v87[0]);
v45 = v43 + 7;
if (v43 >= 0)
v45 = v43;
v46 = *((unsigned __int8 *)v87 + (int)(v43 - (v45 & 0xFFFFFFF8)));
v47 = 2 * ((2 * (v42 | (unsigned __int8)v78[v43]) - (v42 ^ (unsigned __int8)v78[v43])) | v46)
- ((2 * (v42 | (unsigned __int8)v78[v43]) - (v42 ^ (unsigned __int8)v78[v43])) ^ v46);
v48 = v47 + 255;
if (v47 >= 0)
v48 = v47;
v49 = v47 - (v48 & 0xFFFFFF00);
v50 = v78[v49];
v78[v43] = v50;
v51 = ((2 * v43) & 0x44) + (v43 ^ 0x22);
v52 = v51 + 255;
if (v51 >= 0)
v52 = ((2 * v43) & 0x44) + (v43 ^ 0x22);
if (v51 - (v52 & 0xFFFFFF00) == 2)
((void (__fastcall *)(__int64, _QWORD *, __int64, __int64, unsigned __int64, __int64, unsigned __int64, __int64))sub_16D4DC)(
*(_QWORD *)(a3 + 16) + 4LL,
v87,
2,
v18, v15, v16, v7, v8);
v78[v49] = v50;
v43 = ((2 * v43) | 2) - (v43 ^ 1);
v42 = v49;
}
while (v43 < 256);
do
{
v44 = v43 + 311;
if (v43 + 56 >= 0)
v44 = v43 + 56;
if (v43 + 56 - (v44 & 0xFFFFFF00) == 3)
*(_BYTE *)(*(_QWORD *)(a3 + 16) + 3LL) = BYTE3(v87[0]);
v45 = v43 + 7;
if (v43 >= 0)
v45 = v43;
v46 = *((unsigned __int8 *)v87 + (int)(v43 - (v45 & 0xFFFFFFF8)));
v47 = 2 * ((2 * (v42 | (unsigned __int8)v78[v43]) - (v42 ^ (unsigned __int8)v78[v43])) | v46)
- ((2 * (v42 | (unsigned __int8)v78[v43]) - (v42 ^ (unsigned __int8)v78[v43])) ^ v46);
v48 = v47 + 255;
if (v47 >= 0)
v48 = v47;
v49 = v47 - (v48 & 0xFFFFFF00);
v50 = v78[v49];
v78[v43] = v50;
v51 = ((2 * v43) & 0x44) + (v43 ^ 0x22);
v52 = v51 + 255;
if (v51 >= 0)
v52 = ((2 * v43) & 0x44) + (v43 ^ 0x22);
if (v51 - (v52 & 0xFFFFFF00) == 2)
((void (__fastcall *)(__int64, _QWORD *, __int64, __int64, unsigned __int64, __int64, unsigned __int64, __int64))sub_16D4DC)(
*(_QWORD *)(a3 + 16) + 4LL,
v87,
2,
v18, v15, v16, v7, v8);
v78[v49] = v50;
v43 = ((2 * v43) | 2) - (v43 ^ 1);
v42 = v49;
}
while (v43 < 256);
int *__fastcall sub_180F44(_DWORD *a1, int *a2, unsigned __int64 a3)
{
int v3;
int v4;
int v5;
int v6;
int v7;
unsigned __int64 v8;
int v9;
int v10;
int v11;
int v12;
int v13;
int v14;
int v15;
int v16;
int v17;
int v18;
int v19;
int v20;
int v21;
int v22;
int v23;
int v24;
int v25;
int v26;
int v27;
int v28;
int v29;
int v30;
int v31;
int v32;
int v33;
int v34;
int v35;
int v36;
int v37;
int v38;
int v39;
int v40;
int v41;
int v42;
int v43;
int v44;
int v45;
int v46;
int v47;
int v48;
int v49;
int v50;
int v51;
int v52;
int v53;
int v54;
int v55;
int v56;
int v57;
int v58;
int v59;
int v60;
int v61;
int v62;
int v63;
int v64;
int v65;
int v66;
int v67;
int v68;
int v69;
int v70;
int v71;
int v72;
int v73;
int v74;
int v75;
int v76;
int v77;
int v78;
int v79;
int v80;
int v81;
int v82;
int v83;
int v84;
int v85;
unsigned int v86;
int v87;
int v88;
int v89;
int v90;
int v91;
int v92;
int v93;
int v94;
int v95;
int v96;
int v97;
int v98;
int v99;
int v100;
int v101;
int v102;
int v103;
int v104;
int v105;
int v106;
int v107;
int v108;
int v109;
int v110;
int v111;
int v112;
int v113;
int v114;
int v115;
int v116;
int v117;
int v118;
int v119;
int v120;
int v121;
int v122;
int v123;
int v124;
int v125;
int v126;
int v127;
int v128;
int v129;
int v130;
int v131;
int v132;
int v133;
int v134;
int v135;
int v136;
int v138;
v3 = a1[2];
v4 = a1[3];
v5 = a1[4];
v6 = a1[5];
do
{
v7 = *a2;
v138 = v6;
a3 = ((2 * a3) & 0xFFFFFFFFFFFFFF7FLL) - (a3 ^ 0x40);
a1[22] = *a2;
HIDWORD(v8) = ((v7 + (v5 & v4 | v6 & ~v4)) ^ 0xD76AA478) + v3 + ((2 * (v7 + (v5 & v4 | v6 & ~v4))) & 0xAED548F0);
LODWORD(v8) = HIDWORD(v8);
v9 = a2[1];
v10 = (v8 >> 25) + v4;
v11 = (v10 & (v4 ^ v5) | v5) - (v10 & (v4 ^ v5) & v5);
a1[23] = v9;
v12 = a2[2];
HIDWORD(v8) = v138 + (v11 ^ v9) + 2 * (v11 & v9) - 389564586;
LODWORD(v8) = HIDWORD(v8);
v13 = (v8 >> 20) + v10;
a1[24] = v12;
v14 = a2[3];
v15 = (v10 & v13 | v4 & ~v13) + v12;
a1[25] = v14;
v16 = a2[4];
HIDWORD(v8) = ((((2 * v15) & 0x4840E1B6) + (v15 ^ 0x242070DB)) ^ v5)
+ 2 * ((((2 * v15) & 0x4840E1B6) + (v15 ^ 0x242070DB)) & v5);
LODWORD(v8) = HIDWORD(v8);
v17 = (v8 >> 15) + v13;
HIDWORD(v8) = ((2 * ((v17 & v13 | v10 & ~v17) + v14)) | 0x837B9DDC)
- (((v17 & v13 | v10 & ~v17) + v14) ^ 0xC1BDCEEE)
+ v4;
LODWORD(v8) = HIDWORD(v8);
v18 = ((v8 >> 10) ^ v17) + 2 * ((v8 >> 10) & v17);
a1[26] = v16;
v19 = a2[5];
HIDWORD(v8) = v10 + v16 + (v18 & ((v17 | v13) - (v17 & v13)) ^ v13) - 176418897;
LODWORD(v8) = HIDWORD(v8);
v20 = (v8 >> 25) + v18;
v21 = 2 * (v18 & v20 | v17 & ~v20 | v19) - ((v18 & v20 | v17 & ~v20) ^ v19);
a1[27] = v19;
v22 = a2[6];
HIDWORD(v8) = 2 * ((((2 * v21) | 0x8F0F8C54) - (v21 ^ 0x4787C62A)) | v13)
- ((((2 * v21) | 0x8F0F8C54) - (v21 ^ 0x4787C62A)) ^ v13);
LODWORD(v8) = HIDWORD(v8);
v23 = ((v8 >> 20) ^ v20) + 2 * ((v8 >> 20) & v20);
a1[28] = v22;
v24 = a2[7];
a1[29] = v24;
v25 = a2[8];
HIDWORD(v8) = v17 + ((v23 & v20 | v18 & ~v23) ^ v22) + 2 * ((v23 & v20 | v18 & ~v23) & v22) - 1473231341;
LODWORD(v8) = HIDWORD(v8);
v26 = ((v8 >> 15) ^ v23) + 2 * ((v8 >> 15) & v23);
v27 = v25 + v20;
v28 = (v26 & ((v23 | v20) - (v23 & v20)) ^ v20) + v24;
HIDWORD(v8) = ((((2 * v28) & 0xFA8D2A02) + (v28 ^ 0xFD469501)) ^ v18)
+ 2 * ((((2 * v28) & 0xFA8D2A02) + (v28 ^ 0xFD469501)) & v18);
LODWORD(v8) = HIDWORD(v8);
v29 = 2 * ((v8 >> 10) | v26) - ((v8 >> 10) ^ v26);
v30 = v29 & ~((v26 & v23) + ~(v26 | v23));
HIDWORD(v8) = v27 - (v30 & v23) + (v30 | v23) + 1770035416;
LODWORD(v8) = HIDWORD(v8);
a1[30] = v25;
v31 = a2[9];
v32 = 2 * ((v8 >> 25) | v29) - ((v8 >> 25) ^ v29);
HIDWORD(v8) = v23 - ((v29 & v32 | v26 & ~v32) ^ v31) + 2 * (v29 & v32 | v26 & ~v32 | v31) - 1958414417;
LODWORD(v8) = HIDWORD(v8);
a1[31] = v31;
v33 = a2[10];
v34 = 2 * ((v8 >> 20) | v32) - ((v8 >> 20) ^ v32);
v35 = 2 * (v32 & v34 | v29 & ~v34 | v33) - ((v32 & v34 | v29 & ~v34) ^ v33);
a1[32] = v33;
v36 = a2[11];
HIDWORD(v8) = ((2 * v35) | 0xFFFEB762) - (v35 ^ 0xFFFF5BB1) + v26;
LODWORD(v8) = HIDWORD(v8);
v37 = (v8 >> 15) + v34;
HIDWORD(v8) = v29 - ((v34 & v37 | v32 & ~v37) ^ v36) + 2 * (v34 & v37 | v32 & ~v37 | v36) - 1990404162;
LODWORD(v8) = HIDWORD(v8);
a1[33] = v36;
v38 = a2[12];
v39 = 2 * ((v8 >> 10) | v37) - ((v8 >> 10) ^ v37);
HIDWORD(v8) = v32 - ((v39 & v37 | v34 & ~v39) ^ v38) + 2 * (v39 & v37 | v34 & ~v39 | v38) + 1804603682;
LODWORD(v8) = HIDWORD(v8);
a1[34] = v38;
v40 = a2[13];
v41 = ((v8 >> 25) ^ v39) + 2 * ((v8 >> 25) & v39);
v42 = (v41 & ((v39 | v37) - (v39 & v37)) | v37) - (v41 & ((v39 | v37) - (v39 & v37)) & v37);
a1[35] = v40;
v43 = 2 * (v42 | v40) - (v42 ^ v40) - 40341101;
v44 = a2[14];
HIDWORD(v8) = 2 * (v43 | v34) - (v43 ^ v34);
LODWORD(v8) = HIDWORD(v8);
v45 = (v8 >> 20) + v41;
a1[36] = v44;
HIDWORD(v8) = v44 + v37 - (v45 & (v41 ^ v39) & v39) + (v45 & (v41 ^ v39) | v39) - 1502002290;
LODWORD(v8) = HIDWORD(v8);
v46 = a2[15];
v47 = (v8 >> 15) + v45;
v48 = (v47 & ((v45 | v41) - (v45 & v41)) | v41) - (v47 & ((v45 | v41) - (v45 & v41)) & v41);
HIDWORD(v8) = v39 - (v48 ^ v46) + 2 * (v48 | v46) + 1236535329;
LODWORD(v8) = HIDWORD(v8);
v49 = (v8 >> 10) + v47;
v50 = ((v49 ^ v47) & v45 | v47) - ((v49 ^ v47) & v45 & v47);
HIDWORD(v8) = v41 + (v50 ^ v9) + 2 * (v50 & v9) - 165796510;
LODWORD(v8) = HIDWORD(v8);
v51 = (v8 >> 27) + v49;
v52 = (v47 & ~((v51 & v49) + ~(v51 | v49)) ^ v49) + v22;
HIDWORD(v8) = ((2 * v52) | 0x80816680) - (v52 ^ 0xC040B340) + v45;
LODWORD(v8) = HIDWORD(v8);
v53 = 2 * ((v8 >> 23) | v51) - ((v8 >> 23) ^ v51);
v54 = (((v53 | v51) - (v53 & v51)) & v49 | v51) - (((v53 | v51) - (v53 & v51)) & v49 & v51);
HIDWORD(v8) = (((v54 ^ v36) + 2 * (v54 & v36)) ^ 0x265E5A51)
+ v47
+ ((2 * ((v54 ^ v36) + 2 * (v54 & v36))) & 0x4CBCB4A2);
LODWORD(v8) = HIDWORD(v8);
v55 = (v8 >> 18) + v53;
v56 = (v55 & v51 | v53 & ~v51) + v7;
HIDWORD(v8) = (v56 ^ 0xE9B6C7AA) + v49 + ((2 * v56) & 0xD36D8F54);
LODWORD(v8) = HIDWORD(v8);
v57 = (v8 >> 12) + v55;
v58 = ((v57 ^ v55) & v53 | v55) - ((v57 ^ v55) & v53 & v55);
v59 = 2 * (v58 | v19) - (v58 ^ v19) - 701558691;
HIDWORD(v8) = (v59 ^ v51) + 2 * (v59 & v51);
LODWORD(v8) = HIDWORD(v8);
v60 = (v8 >> 27) + v57;
v61 = (v60 & v55 | v57 & ~v55) + v33;
HIDWORD(v8) = ((((2 * v61) | 0x48828A6) - (v61 ^ 0x2441453)) ^ v53)
+ 2 * ((((2 * v61) | 0x48828A6) - (v61 ^ 0x2441453)) & v53);
LODWORD(v8) = HIDWORD(v8);
v62 = ((v8 >> 23) ^ v60) + 2 * ((v8 >> 23) & v60);
v63 = ((v62 ^ v60) & v57 | v60) - ((v62 ^ v60) & v57 & v60);
HIDWORD(v8) = v55 + (v63 ^ v46) + 2 * (v63 & v46) - 660478335;
LODWORD(v8) = HIDWORD(v8);
v64 = (v8 >> 18) + v62;
HIDWORD(v8) = v57 - ((v64 & v60 | v62 & ~v60) ^ v16) + 2 * (v64 & v60 | v62 & ~v60 | v16) - 405537848;
LODWORD(v8) = HIDWORD(v8);
v65 = (v8 >> 12) + v64;
v66 = (v65 & v62 | v64 & ~v62) + v31;
HIDWORD(v8) = ((((2 * v66) & 0x43C39BCC) + (v66 ^ 0x21E1CDE6)) ^ v60)
+ 2 * ((((2 * v66) & 0x43C39BCC) + (v66 ^ 0x21E1CDE6)) & v60);
LODWORD(v8) = HIDWORD(v8);
v67 = 2 * ((v8 >> 27) | v65) - ((v8 >> 27) ^ v65);
v68 = ((v67 & v64 | v65 & ~v64) ^ v44) + 2 * ((v67 & v64 | v65 & ~v64) & v44) - 1019803690;
HIDWORD(v8) = 2 * (v68 | v62) - (v68 ^ v62);
LODWORD(v8) = HIDWORD(v8);
v69 = (v8 >> 23) + v67;
v70 = (v69 & v65 | v67 & ~v65) + v14;
HIDWORD(v8) = ((2 * v70) | 0xE9AA1B0E) - (v70 ^ 0xF4D50D87) + v64;
LODWORD(v8) = HIDWORD(v8);
v71 = ((v8 >> 18) ^ v69) + 2 * ((v8 >> 18) & v69);
v72 = 2 * (v71 & v67 | v69 & ~v67 | v25) - ((v71 & v67 | v69 & ~v67) ^ v25) + 1163531501;
HIDWORD(v8) = (v72 ^ v65) + 2 * (v72 & v65);
LODWORD(v8) = HIDWORD(v8);
v73 = (v8 >> 12) + v71;
v74 = (v73 & v69 | v71 & ~v69) + v40;
HIDWORD(v8) = (v74 ^ 0xA9E3E905) + v67 + ((2 * v74) & 0x53C7D20A);
LODWORD(v8) = HIDWORD(v8);
v75 = (v8 >> 27) + v73;
v76 = ((v75 | v73) - (v75 & v73)) & v71 ^ v73;
HIDWORD(v8) = v69 + (v76 ^ v12) + 2 * (v76 & v12) - 51403784;
LODWORD(v8) = HIDWORD(v8);
v77 = (v8 >> 23) + v75;
v78 = v38 + v73;
v79 = v24 + (v73 & ~((v77 & v75) + ~(v77 | v75)) ^ v75) + 1735328473;
HIDWORD(v8) = (v79 ^ v71) + 2 * (v79 & v71);
LODWORD(v8) = HIDWORD(v8);
v80 = 2 * ((v8 >> 18) | v77) - ((v8 >> 18) ^ v77);
HIDWORD(v8) = v78 + ((v80 ^ v77) & v75 ^ v77) - 1926607734;
LODWORD(v8) = HIDWORD(v8);
v81 = 2 * ((v8 >> 12) | v80) - ((v8 >> 12) ^ v80);
HIDWORD(v8) = v75 - (v80 ^ v77 ^ v81 ^ v19) + 2 * (v80 ^ v77 ^ v81 | v19) - 378558;
LODWORD(v8) = HIDWORD(v8);
v82 = (v8 >> 28) + v81;
HIDWORD(v8) = v25 + v77 - ((v82 ^ v81) & v80) + (v82 ^ v81 | v80) - 2022574463;
LODWORD(v8) = HIDWORD(v8);
v83 = (v8 >> 21) + v82;
HIDWORD(v8) = v36 + v80 + (v82 ^ v81 ^ v83) + 1839030562;
LODWORD(v8) = HIDWORD(v8);
v84 = v9 + v82;
v85 = (v8 >> 16) + v83;
v86 = ((2 * ((v83 ^ v82 ^ v85) + v44)) & 0xFBCA7018) + (((v83 ^ v82 ^ v85) + v44) ^ 0xFDE5380C);
HIDWORD(v8) = 2 * (v86 | v81) - (v86 ^ v81);
LODWORD(v8) = HIDWORD(v8);
v87 = ((v8 >> 9) ^ v85) + 2 * ((v8 >> 9) & v85);
HIDWORD(v8) = v84 - ((v87 ^ v85) & v83) + (v87 ^ v85 | v83) - 1530992060;
LODWORD(v8) = HIDWORD(v8);
v88 = 2 * ((v8 >> 28) | v87) - ((v8 >> 28) ^ v87);
v89 = (v87 ^ v85 ^ v88 ^ v16) + 2 * ((v87 ^ v85 ^ v88) & v16) + 1272893353;
HIDWORD(v8) = 2 * (v89 | v83) - (v89 ^ v83);
LODWORD(v8) = HIDWORD(v8);
v90 = (v8 >> 21) + v88;
v91 = (v88 ^ v87 ^ v90 ^ v24) + 2 * ((v88 ^ v87 ^ v90) & v24);
HIDWORD(v8) = 2 * ((((2 * v91) & 0xED7696C0) + (v91 ^ 0xF6BB4B60)) | v85)
- ((((2 * v91) & 0xED7696C0) + (v91 ^ 0xF6BB4B60)) ^ v85);
LODWORD(v8) = HIDWORD(v8);
v92 = (v8 >> 16) + v90;
HIDWORD(v8) = v87 + (v90 ^ v88 ^ v92 ^ v33) + 2 * ((v90 ^ v88 ^ v92) & v33) - 1094730640;
LODWORD(v8) = HIDWORD(v8);
v93 = v7 + v90;
v94 = (v8 >> 9) + v92;
v95 = 2 * (v92 ^ v90 ^ v94 | v40) - (v92 ^ v90 ^ v94 ^ v40) + 681279174;
HIDWORD(v8) = 2 * (v95 | v88) - (v95 ^ v88);
LODWORD(v8) = HIDWORD(v8);
v96 = 2 * ((v8 >> 28) | v94) - ((v8 >> 28) ^ v94);
HIDWORD(v8) = v93 - ((v96 ^ v94) & v92) + (v96 ^ v94 | v92) - 358537222;
LODWORD(v8) = HIDWORD(v8);
v97 = ((v8 >> 21) ^ v96) + 2 * ((v8 >> 21) & v96);
v98 = 2 * (v96 ^ v94 ^ v97 | v14) - (v96 ^ v94 ^ v97 ^ v14);
HIDWORD(v8) = 2 * ((((2 * v98) | 0xA9DE610A) - (v98 ^ 0xD4EF3085)) | v92)
- ((((2 * v98) | 0xA9DE610A) - (v98 ^ 0xD4EF3085)) ^ v92);
LODWORD(v8) = HIDWORD(v8);
v99 = ((v8 >> 16) ^ v97) + 2 * ((v8 >> 16) & v97);
v100 = v22 + 76029189 - ((v99 ^ v97) & v96) + (v99 ^ v97 | v96);
HIDWORD(v8) = (v100 ^ v94) + 2 * (v100 & v94);
LODWORD(v8) = HIDWORD(v8);
v101 = (v8 >> 9) + v99;
v102 = (((v101 | v99) - (v101 & v99)) ^ v97) + v31;
HIDWORD(v8) = ((((2 * v102) | 0xB3A9A072) - (v102 ^ 0xD9D4D039)) ^ v96)
+ 2 * ((((2 * v102) | 0xB3A9A072) - (v102 ^ 0xD9D4D039)) & v96);
LODWORD(v8) = HIDWORD(v8);
v103 = (v8 >> 28) + v101;
v104 = (v103 ^ v101 | v99) - ((v103 ^ v101) & v99);
v105 = (v104 ^ v38) + 2 * (v104 & v38) - 421815835;
HIDWORD(v8) = 2 * (v105 | v97) - (v105 ^ v97);
LODWORD(v8) = HIDWORD(v8);
v106 = (v8 >> 21) + v103;
v107 = 2 * (((v106 | v103) - (v106 & v103)) ^ v101 | v46) - (((v106 | v103) - (v106 & v103)) ^ v101 ^ v46);
HIDWORD(v8) = ((2 * v107) | 0x3F44F9F0) - (v107 ^ 0x1FA27CF8) + v99;
LODWORD(v8) = HIDWORD(v8);
v108 = (v8 >> 16) + v106;
v109 = v7 + v103;
v110 = v12 + (((v108 | v106) - (v108 & v106)) ^ v103) - 995338651;
HIDWORD(v8) = 2 * (v110 | v101) - (v110 ^ v101);
LODWORD(v8) = HIDWORD(v8);
v111 = (v8 >> 9) + v108;
HIDWORD(v8) = v109 + ((v111 | ~v106) ^ v108) - 198630844;
LODWORD(v8) = HIDWORD(v8);
v112 = (v8 >> 26) + v111;
v113 = (v112 & ~v108 | v112 ^ ~v108) ^ v111;
HIDWORD(v8) = 2 * ((2 * (v113 | v24) - (v113 ^ v24) + 1126891415) | v106)
- ((2 * (v113 | v24) - (v113 ^ v24) + 1126891415) ^ v106);
LODWORD(v8) = HIDWORD(v8);
v114 = (v8 >> 22) + v112;
v115 = (v114 | ~v111 | v112) - ((v114 | ~v111) & v112);
HIDWORD(v8) = ((2 * ((v115 ^ v44) + 2 * (v115 & v44))) | 0x5728474E)
- (((v115 ^ v44) + 2 * (v115 & v44)) ^ 0xAB9423A7)
+ v108;
LODWORD(v8) = HIDWORD(v8);
v116 = 2 * ((v8 >> 17) | v114) - ((v8 >> 17) ^ v114);
v117 = (v116 | ~v112 | v114) - ((v116 | ~v112) & v114);
HIDWORD(v8) = ((2 * (2 * (v117 | v19) - (v117 ^ v19))) | 0xF9274072)
- ((2 * (v117 | v19) - (v117 ^ v19)) ^ 0xFC93A039)
+ v111;
LODWORD(v8) = HIDWORD(v8);
v118 = (v8 >> 11) + v116;
v119 = (v118 | ~v114 | v116) - ((v118 | ~v114) & v116);
HIDWORD(v8) = (((v119 ^ v38) + 2 * (v119 & v38)) ^ 0x655B59C3)
+ v112
+ ((2 * ((v119 ^ v38) + 2 * (v119 & v38))) & 0xCAB6B386);
LODWORD(v8) = HIDWORD(v8);
v120 = (v8 >> 26) + v118;
HIDWORD(v8) = 2 * ((2 * ((v120 | ~v116) ^ v118 | v14) - ((v120 | ~v116) ^ v118 ^ v14) - 1894986606) | v114)
- ((2 * ((v120 | ~v116) ^ v118 | v14) - ((v120 | ~v116) ^ v118 ^ v14) - 1894986606) ^ v114);
LODWORD(v8) = HIDWORD(v8);
v121 = (v8 >> 22) + v120;
v122 = ((v121 | ~v118) ^ v120 ^ v33) + 2 * (((v121 | ~v118) ^ v120) & v33) - 1051523;
HIDWORD(v8) = (v122 ^ v116) + 2 * (v122 & v116);
LODWORD(v8) = HIDWORD(v8);
v123 = ((v8 >> 17) ^ v121) + 2 * ((v8 >> 17) & v121);
HIDWORD(v8) = v118 + ((v123 | ~v120) ^ v121 ^ v9) + 2 * (((v123 | ~v120) ^ v121) & v9) - 2054922799;
LODWORD(v8) = HIDWORD(v8);
v124 = ((v8 >> 11) ^ v123) + 2 * ((v8 >> 11) & v123);
v125 = (((v124 & v121) + ~v121) | v123) - (((v124 & v121) + ~v121) & v123);
HIDWORD(v8) = 2 * (((v125 ^ v25) + 2 * (v125 & v25) + 1873313359) | v120)
- (((v125 ^ v25) + 2 * (v125 & v25) + 1873313359) ^ v120);
LODWORD(v8) = HIDWORD(v8);
v126 = 2 * ((v8 >> 26) | v124) - ((v8 >> 26) ^ v124);
v127 = (v126 | ~v123 | v124) - ((v126 | ~v123) & v124) + v46;
HIDWORD(v8) = ((((2 * v127) | 0xFC59CDC0) - (v127 ^ 0xFE2CE6E0)) ^ v121)
+ 2 * ((((2 * v127) | 0xFC59CDC0) - (v127 ^ 0xFE2CE6E0)) & v121);
LODWORD(v8) = HIDWORD(v8);
v128 = 2 * ((v8 >> 22) | v126) - ((v8 >> 22) ^ v126);
v129 = (v128 | ~v124 | v126) - ((v128 | ~v124) & v126);
HIDWORD(v8) = ((2 * (v129 | v22) - (v129 ^ v22)) ^ 0xA3014314)
+ v123
+ ((2 * (2 * (v129 | v22) - (v129 ^ v22))) & 0x46028628);
LODWORD(v8) = HIDWORD(v8);
v130 = (v8 >> 17) + v128;
v131 = v16 + v126;
v132 = v40 + (((v130 & v126) + ~v126) ^ v128) + 1309151649;
HIDWORD(v8) = 2 * (v132 | v124) - (v132 ^ v124);
LODWORD(v8) = HIDWORD(v8);
v133 = ((v8 >> 11) ^ v130) + 2 * ((v8 >> 11) & v130);
HIDWORD(v8) = v131 + (((v133 & v128) + ~v128) ^ v130) - 145523070;
LODWORD(v8) = HIDWORD(v8);
v134 = 2 * ((v8 >> 26) | v133) - ((v8 >> 26) ^ v133);
HIDWORD(v8) = v36 + v128 + ((v134 | ~v130) ^ v133) - 1120210379;
LODWORD(v8) = HIDWORD(v8);
v135 = 2 * ((v8 >> 22) | v134) - ((v8 >> 22) ^ v134);
HIDWORD(v8) = v130 - (((v135 & v133) + ~v133) ^ v134 ^ v12) + 2 * (((v135 & v133) + ~v133) ^ v134 | v12) + 718787259;
LODWORD(v8) = HIDWORD(v8);
v136 = 2 * ((v8 >> 17) | v135) - ((v8 >> 17) ^ v135);
v3 += v134;
HIDWORD(v8) = ((((v136 | ~v134) ^ v135) + v31) ^ 0xEB86D391)
+ v133
+ ((2 * (((v136 | ~v134) ^ v135) + v31)) & 0xD70DA722);
LODWORD(v8) = HIDWORD(v8);
v6 = v135 + v138;
v5 += v136;
v4 += ((v8 >> 11) ^ v136) + 2 * ((v8 >> 11) & v136);
a2 += 16;
a1[37] = v46;
}
while ( a3 );
a1[2] = v3;
a1[3] = v4;
a1[4] = v5;
a1[5] = v6;
return a2;
}
int *__fastcall sub_180F44(_DWORD *a1, int *a2, unsigned __int64 a3)
{
int v3;
int v4;
int v5;
int v6;
int v7;
unsigned __int64 v8;
int v9;
int v10;
int v11;
int v12;
int v13;
int v14;
int v15;
int v16;
int v17;
int v18;
int v19;
int v20;
int v21;
int v22;
int v23;
int v24;
int v25;
int v26;
int v27;
int v28;
int v29;
int v30;
int v31;
int v32;
int v33;
int v34;
int v35;
int v36;
int v37;
int v38;
int v39;
int v40;
int v41;
int v42;
int v43;
int v44;
int v45;
int v46;
int v47;
int v48;
int v49;
int v50;
int v51;
int v52;
int v53;
int v54;
int v55;
int v56;
int v57;
int v58;
int v59;
int v60;
int v61;
int v62;
int v63;
int v64;
int v65;
int v66;
int v67;
int v68;
int v69;
int v70;
int v71;
int v72;
int v73;
int v74;
int v75;
int v76;
int v77;
int v78;
int v79;
int v80;
int v81;
int v82;
int v83;
int v84;
int v85;
unsigned int v86;
int v87;
int v88;
int v89;
int v90;
int v91;
int v92;
int v93;
int v94;
int v95;
int v96;
int v97;
int v98;
int v99;
int v100;
int v101;
int v102;
int v103;
int v104;
int v105;
int v106;
int v107;
int v108;
传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2025-7-18 09:42
被git_21210wzzzh2025编辑
,原因: