.text:004D8D80 ; int __thiscall Fun1(CDialog *this)
.text:004D8D80 Fun1 proc near ; DATA XREF:
.rdata:00598BA4o
.text:004D8D80
.text:004D8D80 var_8 = dword ptr -8
.text:004D8D80 var_4 = dword ptr -4
.text:004D8D80
.text:004D8D80 sub esp, 8
.text:004D8D83 push esi
.text:004D8D84 lea eax, [esp+0Ch+var_8]
.text:004D8D88 push eax
.text:004D8D89 mov esi, ecx
.text:004D8D8B mov [esp+10h+var_8], 0
.text:004D8D93 call Fun_KeyFun ; 按照 Unicode 格式的数据做校验
.text:004D8D98 test eax, eax
.text:004D8D9A jnz short loc_4D8DD9
.text:004D8D9C lea ecx, [esp+0Ch+var_4]
.text:004D8DA0 push ecx
.text:004D8DA1 mov ecx, esi
.text:004D8DA3 mov [esp+10h+var_4], eax
.text:004D8DA7 call Fun_KeyFun1 ; 按照 ASCII 格式的数据做校验
.text:004D8DAC mov ecx, [esp+0Ch+var_4]
.text:004D8DB0 mov edx, [esp+0Ch+var_8]
.text:004D8DB4 test ecx, ecx
.text:004D8DB6 jbe short loc_4D8DC2
.text:004D8DB8 cmp edx, 4E7Fh
.text:004D8DBE jz short loc_4D8DC2
.text:004D8DC0 mov edx, ecx
.text:004D8DC2
.text:004D8DC2 loc_4D8DC2: ; CODE XREF: Fun1+36j
.text:004D8DC2 ; Fun1+3Ej
.text:004D8DC2 test eax, eax
.text:004D8DC4 jnz short loc_4D8DD9
.text:004D8DC6 test edx, edx
.text:004D8DC8 jz short loc_4D8DD4
.text:004D8DCA push 0FFFFFFFFh ; unsigned int
.text:004D8DCC push 10h ; uType
.text:004D8DCE push edx ; unsigned int
.text:004D8DCF call ?AfxMessageBox@@YGHIII@Z ; AfxMessageBox(uint,uint,uint)
.text:004D8DD4 loc_4D8DD4: ; CODE XREF: Fun1+48j
.text:004D8DD4 pop esi
.text:004D8DD5 add esp, 8
.text:004D8DD8 retn
.text:004D8DD9 ;
---------------------------------------------------------------------------
.text:004D8DD9
.text:004D8DD9 loc_4D8DD9: ; CODE XREF: Fun1+1Aj
.text:004D8DD9 ; Fun1+44j
.text:004D8DD9 mov edx, [esi+134h]
.text:004D8DDF mov ecx, esi ; this
.text:004D8DE1 mov dword ptr [edx], 0
.text:004D8DE7 pop esi
.text:004D8DE8 add esp, 8
.text:004D8DEB jmp ?OnOK@CDialog@@MAEXXZ ; CDialog::OnOK(void)
.text:004D8DEB Fun1 endp[/COLOR]
.text:004D8AF0 Fun_KeyFun proc near ; CODE XREF:
Fun1+13p
.text:004D8AF0
.text:004D8AF0 var_45C = dword ptr -45Ch
.text:004D8AF0 var_458 = dword ptr -458h
.text:004D8AF0 var_454 = dword ptr -454h
.text:004D8AF0 var_450 = word ptr -450h
.text:004D8AF0 Dst = word ptr -3ECh
.text:004D8AF0 var_4 = dword ptr -4
.text:004D8AF0 arg_0 = dword ptr 4
.text:004D8AF0
.text:004D8AF0 sub esp, 45Ch
.text:004D8AF6 mov eax, dword_5CCE34
.text:004D8AFB xor eax, esp
.text:004D8AFD mov [esp+45Ch+var_4], eax
.text:004D8B04 mov eax, [esp+45Ch+arg_0]
.text:004D8B0B push ebx
.text:004D8B0C push ebp
.text:004D8B0D mov ebp, ecx
.text:004D8B0F lea ecx, [esp+464h+var_45C]
.text:004D8B13 push ecx ; int
.text:004D8B14 push 1F4h ; SizeInWords
.text:004D8B19 lea edx, [esp+46Ch+Dst]
.text:004D8B20 mov [esp+46Ch+var_458], eax
.text:004D8B24 push edx ; Dst
.text:004D8B25 lea eax, [ebp+0C8h]
.text:004D8B2B push eax ; int
.text:004D8B2C call Fun_GetInputString ; eax = UserName(Unicode)
.text:004D8B31 add esp, 10h
.text:004D8B34 cmp [esp+464h+var_45C], 0
.text:004D8B39 mov ebx, eax
.text:004D8B3B mov [esp+464h+var_454], ebx
.text:004D8B3F jnz short loc_4D8B48
.text:004D8B41 xor eax, eax
.text:004D8B43 jmp loc_4D8C17
.text:004D8B48 ;
---------------------------------------------------------------------------
.text:004D8B48
.text:004D8B48 loc_4D8B48: ; CODE XREF: Fun_KeyFun+4Fj
.text:004D8B48 push edi
.text:004D8B49 lea ecx, [esp+468h+var_45C]
.text:004D8B4D push ecx ; int
.text:004D8B4E push 32h ; SizeInWords
.text:004D8B50 lea edx, [esp+470h+var_450]
.text:004D8B54 push edx ; Dst
.text:004D8B55 lea eax, [ebp+74h]
.text:004D8B58 push eax ; int
.text:004D8B59 call Fun_GetInputString ; eax = RegCode(Unicode)
.text:004D8B5E mov edi, eax
.text:004D8B60 mov eax, [esp+478h+var_45C]
.text:004D8B64 add esp, 10h
.text:004D8B67 test eax, eax
.text:004D8B69 jz short loc_4D8BE9
.text:004D8B6B push esi
.text:004D8B6C xor esi, esi
.text:004D8B6E test eax, eax
.text:004D8B70 jle short loc_4D8BB6 ; 密钥字符串(Unicode)
.text:004D8B72
.text:004D8B72 loc_4D8B72: ; CODE XREF: Fun_KeyFun+C0j
.text:004D8B72 movzx ebx, word ptr [edi+esi*2]
.text:004D8B76 mov ecx, 100h
.text:004D8B7B cmp bx, cx
.text:004D8B7E jnb short loc_4D8B8D
.text:004D8B80 movzx edx, bl
.text:004D8B83 movzx eax, word_5F2890[edx*2]
.text:004D8B8B jmp short loc_4D8BA7
.text:004D8B8D ;
---------------------------------------------------------------------------
.text:004D8B8D
.text:004D8B8D loc_4D8B8D: ; CODE XREF: Fun_KeyFun+8Ej
.text:004D8B8D movzx eax, bx
.text:004D8B90 push eax ; lpsz
.text:004D8B91 call ds:CharUpperW
.text:004D8B97 movzx eax, ax
.text:004D8B9A test ax, ax
.text:004D8B9D jnz short loc_4D8BA4
.text:004D8B9F movzx eax, bx
.text:004D8BA2 jmp short loc_4D8BA7
.text:004D8BA4 ;
---------------------------------------------------------------------------
.text:004D8BA4
.text:004D8BA4 loc_4D8BA4: ; CODE XREF: Fun_KeyFun+ADj
.text:004D8BA4 movzx eax, ax
.text:004D8BA7
.text:004D8BA7 loc_4D8BA7: ; CODE XREF: Fun_KeyFun+9Bj
.text:004D8BA7 ; Fun_KeyFun+B2j
.text:004D8BA7 mov [edi+esi*2], ax
.text:004D8BAB inc esi
.text:004D8BAC cmp esi, [esp+46Ch+var_45C]
.text:004D8BB0 jl short loc_4D8B72 ; 将密钥中的小写字母转换为大写
.text:004D8BB2 mov ebx, [esp+46Ch+var_454]
.text:004D8BB6
.text:004D8BB6 loc_4D8BB6: ; CODE XREF: Fun_KeyFun+80j
.text:004D8BB6 push edi ; 密钥字符串(Unicode)
.text:004D8BB7 push ebx ; 用户名字符串(Unicode)
.text:004D8BB8 call Fun2_UserName_RegCode ; 参数(UserName, RegCode),对UserName 和 RegCode 进行校验
.text:004D8BBD add esp, 8
.text:004D8BC0 pop esi
.text:004D8BC1 test eax, eax ; 校验成功时这里返回1
.text:004D8BC3 jnz short loc_4D8BD1
.text:004D8BC5 mov ecx, [esp+468h+var_458] ; 校验成功时这里不执行
.text:004D8BC9 mov dword ptr [ecx], 5F81h
.text:004D8BCF jmp short loc_4D8C16 ; 校验失败时跳转
.text:004D8BD1 ;
---------------------------------------------------------------------------
.text:004D8BD1
.text:004D8BD1 loc_4D8BD1: ; CODE XREF: Fun_KeyFun+D3j
.text:004D8BD1 push edi
.text:004D8BD2 push ebx
.text:004D8BD3 call Fun_WriteInfo2RegAndIniFile ; 校验成功之后执行这里,参数仍然为(UserName, RegCode), 向注册表和ini文件中写入一些信息
.text:004D8BD8 add esp, 8
.text:004D8BDB test eax, eax
.text:004D8BDD jnz short loc_4D8BED
.text:004D8BDF mov edx, [esp+468h+var_458]
.text:004D8BE3 mov dword ptr [edx], 4E7Fh
.text:004D8BE9
.text:004D8BE9 loc_4D8BE9: ; CODE XREF: Fun_KeyFun+79j
.text:004D8BE9 xor eax, eax
.text:004D8BEB jmp short loc_4D8C16
.text:004D8BED ;
---------------------------------------------------------------------------
.text:004D8BED
.text:004D8BED loc_4D8BED: ; CODE XREF: Fun_KeyFun+EDj
.text:004D8BED mov eax, [ebp+120h]
.text:004D8BF3 push ebx ; Src
.text:004D8BF4 push 1F4h ; SizeInWords
.text:004D8BF9 push eax ; Dst
.text:004D8BFA call _wcscpy_s
.text:004D8BFF mov ecx, [ebp+124h]
.text:004D8C05 push edi ; Src
.text:004D8C06 push 32h ; SizeInWords
.text:004D8C08 push ecx ; Dst
.text:004D8C09 call _wcscpy_s
.text:004D8C0E add esp, 18h
.text:004D8C11 mov eax, 1
.text:004D8C16
.text:004D8C16 loc_4D8C16: ; CODE XREF: Fun_KeyFun+DFj
.text:004D8C16 ; Fun_KeyFun+FBj
.text:004D8C16 pop edi
.text:004D8C17
.text:004D8C17 loc_4D8C17: ; CODE XREF: Fun_KeyFun+53j
.text:004D8C17 mov ecx, [esp+464h+var_4]
.text:004D8C1E pop ebp
.text:004D8C1F pop ebx
.text:004D8C20 xor ecx, esp
.text:004D8C22 call Fun_UnKnow ;未总结功能
.text:004D8C27 add esp, 45Ch
.text:004D8C2D retn 4
.text:004D8C2D Fun_KeyFun endp
.text:004D8250 Fun2_UserName_RegCode proc near ; CODE XREF:
sub_460B80+17Ep
.text:004D8250 ; Fun_KeyFun+C8p
.text:004D8250
.text:004D8250 Dst = word ptr -0BD0h
.text:004D8250 var_BCE = word ptr -0BCEh
.text:004D8250 var_BBC = byte ptr -0BBCh
.text:004D8250 var_4 = dword ptr -4
.text:004D8250 arg_0 = dword ptr 4
.text:004D8250 arg_4 = dword ptr 8
.text:004D8250
.text:004D8250 sub esp, 0BD0h
.text:004D8256 mov eax, dword_5CCE34
.text:004D825B xor eax, esp
.text:004D825D mov [esp+0BD0h+var_4], eax
.text:004D8264 push ebx
.text:004D8265 push ebp
.text:004D8266 mov ebp, [esp+0BD8h+arg_0] ; ebp = UserName
.text:004D826D push esi
.text:004D826E mov esi, [esp+0BDCh+arg_4] ; esi = RegCode
.text:004D8275 mov eax, ebp
.text:004D8277 push edi
.text:004D8278 lea edx, [eax+2]
.text:004D827B jmp short loc_4D8280
.text:004D827B ;
---------------------------------------------------------------------------
.text:004D827D align 10h
.text:004D8280
.text:004D8280 loc_4D8280: ; CODE XREF: Fun2_UserName_RegCode+2Bj
.text:004D8280 ; Fun2_UserName_RegCode+39j
.text:004D8280 mov cx, [eax]
.text:004D8283 add eax, 2
.text:004D8286 test cx, cx
.text:004D8289 jnz short loc_4D8280
.text:004D828B sub eax, edx
.text:004D828D sar eax, 1 ; eax = UserName 长度
.text:004D828F mov ebx, eax
.text:004D8291 mov eax, esi
.text:004D8293 lea edx, [eax+2]
.text:004D8296
.text:004D8296 loc_4D8296: ; CODE XREF: Fun2_UserName_RegCode+4Fj
.text:004D8296 mov cx, [eax]
.text:004D8299 add eax, 2
.text:004D829C test cx, cx
.text:004D829F jnz short loc_4D8296
.text:004D82A1 sub eax, edx
.text:004D82A3 sar eax, 1 ; eax = RegCode 长度
.text:004D82A5 mov edi, eax
.text:004D82A7 call Fun_CreateGlobalTable_005F38A0_ ; 在地址0X005F38A0处生成一个0X200大小的数组
.text:004D82AC push 0BB8h ; Arg4 常量0x0BB8
.text:004D82B1 lea eax, [esp+0BE4h+var_BBC]
.text:004D82B5 push eax ; Arg3 栈地址,用于保存格式化后数据的地址
.text:004D82B6 push ebx ; Arg2 Unicode 字符串长度(此处为UserName长度)
.text:004D82B7 push ebp ; Arg1 Unicode 字符串(此处为 UserName)
.text:004D82B8 call Fun_FroamtString ; 对Unicode字符串进行格式化,对每个Unicode字符按照 %04X进行格式化
.text:004D82BD push eax ; Arg3 格式化后字符串的长度
.text:004D82BE lea ecx, [esp+0BF4h+var_BBC]
.text:004D82C2 push ecx ; Arg2 格式化后的字符串
.text:004D82C3 push 0 ; Arg1 常量 0
.text:004D82C5 call Fun_CalcStringyValue ; 对Unicode字符串(这里是 UserName) 进行计算,得出一个值,在计算的过程中使用了之前的全局表数据
.text:004D82CA movzx edx, ax ; 计算的结果为 WORD 类型
.text:004D82CD push edx ; ArgList
.text:004D82CE lea eax, [esp+0C00h+Dst]
.text:004D82D2 push offset a04x ; "%04X"
.text:004D82D7 push eax ; Dst
.text:004D82D8 call Fun_FormatCalcRes ; 将计算的结果格式化为字符串
.text:004D82DD mov cx, [esi+4]
.text:004D82E1 lea eax, [esi+4]
.text:004D82E4 add esp, 28h
.text:004D82E7 cmp cx, [esp+0BE0h+Dst] ; 格式化后的字符串的第一个字符和 RegCode的第三个字符比较
.text:004D82EC jz short loc_4D82F2
.text:004D82EE
.text:004D82EE loc_4D82EE: ; CODE XREF: Fun2_UserName_RegCode+ABj
.text:004D82EE xor eax, eax
.text:004D82F0 jmp short loc_4D834C
.text:004D82F2 ;
---------------------------------------------------------------------------
.text:004D82F2
.text:004D82F2
loc_4D82F2:; CODE XREF: Fun2_UserName_RegCode+9Cj
.text:004D82F2 mov dx, [esi+6]
.text:004D82F6 cmp dx, [esp+0BE0h+var_BCE] ; 格式化后的字符串的第二个字符和RegCode的四个字符比较
.text:004D82FB jnz short loc_4D82EE
.text:004D82FD push 0BB8h
.text:004D8302 lea ecx, [esp+0BE4h+var_BBC]
.text:004D8306 push ecx
.text:004D8307 add edi, -2 ; RegCode 长度减2
.text:004D830A push edi
.text:004D830B push eax
.text:004D830C call Fun_FroamtString ; 将RegCode从第三个字符开始,按照 %4X 的格式对每个字符进行格式化
.text:004D8311 push eax
.text:004D8312 lea edx, [esp+0BF4h+var_BBC]
.text:004D8316 push edx
.text:004D8317 push 0
.text:004D8319 call Fun_CalcStringyValue ; 对Unicode字符串(这里是从RegCode 的第三个字符开始)进行计算,得出一个值,在计算的过程中使用了之前的全局表的数据
.text:004D831E movzx eax, ax ; 计算结果为 DWORD 类型
.text:004D8321 push eax ; ArgList
.text:004D8322 lea ecx, [esp+0C00h+Dst]
.text:004D8326 push offset a04x ; "%04X"
.text:004D832B push ecx ; Dst
.text:004D832C call Fun_FormatCalcRes ; 格式化计算的结果
.text:004D8331 mov dx, [esi] ; 取出 RegCode 第一位字符串
.text:004D8334 add esp, 28h
.text:004D8337 xor eax, eax
.text:004D8339 cmp dx, [esp+0BE0h+Dst] ; 格式化字符串的第一个和 RegCode 的第一个字符比较
.text:004D833E jnz short loc_4D834C
.text:004D8340 mov cx, [esi+2] ; 取出 RegCode 第二位字符串
.text:004D8344 cmp cx, [esp+0BE0h+var_BCE] ; 格式化字符串的第二个和 RegCode 的第二个字符比较
.text:004D8349 setz al
.text:004D834C
.text:004D834C loc_4D834C: ; CODE XREF: Fun2_UserName_RegCode+A0j
.text:004D834C ; Fun2_UserName_RegCode+EEj
.text:004D834C mov ecx, [esp+0BE0h+var_4]
.text:004D8353 pop edi
.text:004D8354 pop esi
.text:004D8355 pop ebp
.text:004D8356 pop ebx
.text:004D8357 xor ecx, esp
.text:004D8359 call Fun_UnKnow ; 暂时没看出来该函数的功能
.text:004D835E add esp, 0BD0h
.text:004D8364 retn
.text:004D8364 Fun2_UserName_RegCode endp
.text:004D7560 Fun_CreateGlobalTable_005F38A0_ proc near
.text:004D7560 ; CODE XREF: Fun_GetVolumeSerialAndCalc+D6p
.text:004D7560 ; Fun2_UserName_RegCode+57p ...
.text:004D7560 push 200h ; size_t
.text:004D7565 push 0 ; int
.text:004D7567 push offset word_5F38A0 ; void *
.text:004D756C call _memset
.text:004D7571 add esp, 0Ch
.text:004D7574 xor edx, edx
.text:004D7576 jmp short loc_4D7580
.text:004D7576 ;
---------------------------------------------------------------------------
.text:004D7578 align 10h
.text:004D7580
.text:004D7580 loc_4D7580: ; CODE XREF: Fun_CreateGlobalTable_005F38A0_+16j
.text:004D7580 ; Fun_CreateGlobalTable_005F38A0_+57j
.text:004D7580 mov eax, 0C0C1h
.text:004D7585 mov ecx, 1
.text:004D758A lea ebx, [ebx+0]
.text:004D7590
.text:004D7590 loc_4D7590: ; CODE XREF: Fun_CreateGlobalTable_005F38A0_+4Ej
.text:004D7590 test edx, ecx
.text:004D7592 jz short loc_4D759C
.text:004D7594 xor word_5F38A0[edx*2], ax
.text:004D759C
.text:004D759C loc_4D759C: ; CODE XREF: Fun_CreateGlobalTable_005F38A0_+32j
.text:004D759C add eax, eax
.text:004D759E xor eax, 4003h
.text:004D75A3 add ecx, ecx
.text:004D75A5 cmp ecx, 100h
.text:004D75AB movzx eax, ax
.text:004D75AE jl short loc_4D7590
.text:004D75B0 inc edx
.text:004D75B1 cmp edx, 100h
.text:004D75B7 jl short loc_4D7580
.text:004D75B9 retn
.text:004D75B9 Fun_CreateGlobalTable_005F38A0_ endp
/********************************************
函数功能:
在固定地址处 g_dwAddr(0x005F38A0) 处
依据函数内的算法生成数据, 生成的数据
是固定的, 大小为 g_dwSize(0X200)
**********************************************/
void Fun_CreateGlobalTable_005F38A0()
{
//空间置0
memset((void*)g_dwAddr, 0, g_dwSize);
DWORD dwEDX = 0;
DWORD dwEAX;
DWORD dwECX;
DWORD dwEBX;
do
{
dwEAX = 0xC0C1;
dwECX = 0x01;
dwEBX = 0x0A;
do
{
if(0 != (dwEDX&dwECX))
{
*(WORD*)((char*)g_dwAddr + dwEDX*2) ^= (WORD)(dwEAX&0x0000FFFF);
}
dwEAX *= 2;
dwEAX ^= 0x4003;
dwECX *= 2;
dwEAX &= 0x0000FFFF;
}while(dwECX < 0x100);
dwEDX++;
}while(dwEDX < 0x100);
}
.text:004D7600 Fun_FroamtString proc near ; CODE XREF:
Fun2_UserName_RegCode+68p
.text:004D7600 ; Fun2_UserName_RegCode+BCp
.text:004D7600
.text:004D7600 arg_0 = dword ptr 4
.text:004D7600 arg_4 = dword ptr 8
.text:004D7600 arg_8 = dword ptr 0Ch
.text:004D7600 arg_C = dword ptr 10h
.text:004D7600
.text:004D7600 push ebp
.text:004D7601 mov ebp, [esp+4+arg_4]
.text:004D7605 push esi
.text:004D7606 push edi
.text:004D7607 xor esi, esi
.text:004D7609 xor edi, edi
.text:004D760B test ebp, ebp
.text:004D760D jle short loc_4D7648
.text:004D760F push ebx
.text:004D7610 mov ebx, [esp+10h+arg_8]
.text:004D7614
.text:004D7614 loc_4D7614: ; CODE XREF: Fun_FroamtString+3Bj
.text:004D7614 mov eax, [esp+10h+arg_0]
.text:004D7618 movzx ecx, word ptr [eax+edi*2]
.text:004D761C mov edx, [esp+10h+arg_C]
.text:004D7620 push ecx
.text:004D7621 push offset a04x_0 ; "%04X"
.text:004D7626 sub edx, esi
.text:004D7628 push edx ; SizeInBytes
.text:004D7629 lea eax, [esi+ebx]
.text:004D762C push eax ; DstBuf
.text:004D762D call _sprintf_s
.text:004D7632 inc edi
.text:004D7633 add esp, 10h
.text:004D7636 add esi, 4
.text:004D7639 cmp edi, ebp
.text:004D763B jl short loc_4D7614
.text:004D763D mov byte ptr [esi+ebx], 0
.text:004D7641 pop ebx
.text:004D7642 pop edi
.text:004D7643 mov eax, esi
.text:004D7645 pop esi
.text:004D7646 pop ebp
.text:004D7647 retn
.text:004D7648 ;
---------------------------------------------------------------------------
.text:004D7648
.text:004D7648
loc_4D7648: ; CODE XREF: Fun_FroamtString+Dj
.text:004D7648 mov ecx, [esp+0Ch+arg_8]
.text:004D764C pop edi
.text:004D764D mov byte ptr [esi+ecx], 0
.text:004D7651 mov eax, esi
.text:004D7653 pop esi
.text:004D7654 pop ebp
.text:004D7655 retn
.text:004D7655 Fun_FroamtString endp
/****************************************************************************
参数意义:
Arg1: IN g_wChar Unicode 字符串首地址
Arg2: IN g_dwAddrFormatDataBuff 接收格式化数据的地址
Arg3: IN dwLength 接收格式化数据的缓冲区长度
Arg4: IN dwConstValue 常量 0xBB8
函数功能: 格式化 Unicode字符串,格式化后的数据存放到 g_dwAddrFormatDataBuff
函数返回值: 返回格式化后缓冲区的字节数
****************************************************************************/
DWORD Fun_FroamtString(IN WCHAR *g_wChar, IN DWORD g_dwAddrFormatDataBuff, IN DWORD dwLength, IN DWORD dwConstValue)
{
DWORD dwRet = 0;
WORD wValue;
for(int iIndex = 0; iIndex < dwLength; iIndex++)
{
wValue = *(WORD*)((DWORD)g_wChar + iIndex*2); //取出每个Unicode字符的值
::sprintf((char*)(g_dwAddrFormatDataBuff + dwRet), "%04X", wValue);
dwRet += 4;
}
*(char*)(g_dwAddrFormatDataBuff + dwRet) = 0;
return dwRet;
}
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)