6.2修正版的2个新功能代码
1、整形变量格式化文字
0044CF28 /$ 55 PUSH EBP
0044CF29 |. 8BEC MOV EBP,ESP
0044CF2B |. 51 PUSH ECX
0044CF2C |. 6A 00 PUSH 0
0044CF2E |. 68 358E5000 PUSH 00508E35
0044CF33 |. 83EC 1C SUB ESP,1C
0044CF36 |. 0FB641 01 MOVZX EAX,BYTE PTR DS:[ECX+1]
0044CF3A |. 2C 2B SUB AL,2B
0044CF3C |. 3C 05 CMP AL,5
0044CF3E |. 73 5E JNB SHORT 0044CF9E
0044CF40 |. 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
0044CF43 |. 8A41 02 MOV AL,BYTE PTR DS:[ECX+2]
0044CF46 |. 3C 30 CMP AL,30
0044CF48 |. 72 54 JB SHORT 0044CF9E
0044CF4A |. 3C 39 CMP AL,39
0044CF4C |. 77 50 JA SHORT 0044CF9E
0044CF4E |. 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
0044CF51 |. 83C1 02 ADD ECX,2
0044CF54 |. 51 PUSH ECX ; /Arg1
0044CF55 |. E8 0A9FFDFF CALL 00426E64 ; \00426E64
0044CF5A |. 8945 EC MOV DWORD PTR SS:[EBP-14],EAX
0044CF5D |. 8955 E8 MOV DWORD PTR SS:[EBP-18],EDX
0044CF60 |. 8A45 F0 MOV AL,BYTE PTR SS:[EBP-10]
0044CF63 |. 3C 04 CMP AL,4
0044CF65 |. 75 1A JNZ SHORT 0044CF81
0044CF67 |. 833D 9C5F5000 00 CMP DWORD PTR DS:[505F9C],0 ; 找到一个"/"
0044CF6E |. 75 5A JNZ SHORT 0044CFCA ;如果是历史情报 跳转
0044CF70 |. 8D45 D8 LEA EAX,DWORD PTR SS:[EBP-28]
0044CF73 |. 50 PUSH EAX ; /Arg2
0044CF74 |. FF75 EC PUSH DWORD PTR SS:[EBP-14] ; |Arg1
0044CF77 |. E8 5A090000 CALL 0044D8D6 ; 其他情况直接显示出数字
0044CF7C |. 8D45 D8 LEA EAX,DWORD PTR SS:[EBP-28]
0044CF7F |. EB 38 JMP SHORT 0044CFB9
0044CF81 |> 3C 03 CMP AL,3
0044CF83 |. 75 12 JNZ SHORT 0044CF97
0044CF85 |. FF75 EC PUSH DWORD PTR SS:[EBP-14] ; /Arg1
0044CF88 |. E8 5792FBFF CALL 004061E4 ; \004061E4
0044CF8D |. E8 E3A7FBFF CALL 00407775
0044CF92 |. EB 25 JMP SHORT 0044CFB9
0044CF94 |> FF45 F8 INC DWORD PTR SS:[EBP-8]
0044CF97 |> 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0044CF9A |. 3C 09 CMP AL,9
0044CF9C |. 72 02 JB SHORT 0044CFA0
0044CF9E |> EB 2A JMP SHORT 0044CFCA
0044CFA0 |> 6BC0 0A IMUL EAX,EAX,0A
0044CFA3 |. 0345 F4 ADD EAX,DWORD PTR SS:[EBP-C]
0044CFA6 |. 0FB708 MOVZX ECX,WORD PTR DS:[EAX]
0044CFA9 |. 394D EC CMP DWORD PTR SS:[EBP-14],ECX
0044CFAC |.^ 75 E6 JNZ SHORT 0044CF94
0044CFAE |. 8B4D F0 MOV ECX,DWORD PTR SS:[EBP-10]
0044CFB1 |. 6BC9 05 IMUL ECX,ECX,5
0044CFB4 |. 03C1 ADD EAX,ECX
0044CFB6 |. 83C0 02 ADD EAX,2
0044CFB9 |> 50 PUSH EAX ; /Arg2
0044CFBA |. FF75 08 PUSH DWORD PTR SS:[EBP+8] ; |Arg1
0044CFBD |. E8 C7B2FBFF CALL 00408289 ; \00408289
0044CFC2 |. 8B55 E8 MOV EDX,DWORD PTR SS:[EBP-18]
0044CFC5 |. 83C2 02 ADD EDX,2
0044CFC8 |. EB 02 JMP SHORT 0044CFCC
0044CFCA |> 33C0 XOR EAX,EAX
0044CFCC |> 8BE5 MOV ESP,EBP
0044CFCE |. 5D POP EBP
0044CFCF \. C2 0400 RETN 4
0044D8D6 /$ 55 PUSH EBP ; 把数字重新转为文本
0044D8D7 |. 8BEC MOV EBP,ESP
0044D8D9 |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
0044D8DC |. 6BC0 04 IMUL EAX,EAX,4
0044D8DF |. 05 00205000 ADD EAX,00502000
0044D8E4 |. FF30 PUSH DWORD PTR DS:[EAX] ; /<%d>
0044D8E6 |. 68 C0B34800 PUSH 0048B3C0 ; |Format = "%d"
0044D8EB |. FF75 0C PUSH DWORD PTR SS:[EBP+C] ; |s
0044D8EE |. FF15 C0624800 CALL DWORD PTR DS:[<&USER32.wsprintfA>] ; \wsprintfA
0044D8F4 |. 83C4 0C ADD ESP,0C
0044D8F7 |. 5D POP EBP
0044D8F8 \. C2 0800 RETN 8
004D2623 E8 D3B2F7FF CALL 0044D8FB '原函数 004D2796废弃
0044D8FB /. 55 PUSH EBP
0044D8FC |. 8BEC MOV EBP,ESP
0044D8FE |. 51 PUSH ECX
0044D8FF |. 6A 00 PUSH 0
0044D901 |. 51 PUSH ECX
0044D902 |. 51 PUSH ECX
0044D903 |. 81EC 00040000 SUB ESP,400
0044D909 |. 8D85 F0FBFFFF LEA EAX,DWORD PTR SS:[EBP-410]
0044D90F |. 8945 F4 MOV DWORD PTR SS:[EBP-C],EAX
0044D912 |. 803D 705F5000 00 CMP BYTE PTR DS:[505F70],0
0044D919 |. 75 18 JNZ SHORT 0044D933
0044D91B |> 8B45 FC /MOV EAX,DWORD PTR SS:[EBP-4]
0044D91E |. 8038 3A |CMP BYTE PTR DS:[EAX],3A
0044D921 |. 73 10 |JNB SHORT 0044D933
0044D923 |. 8038 30 |CMP BYTE PTR DS:[EAX],30
0044D926 |. 72 0B |JB SHORT 0044D933
0044D928 |. FF45 FC |INC DWORD PTR SS:[EBP-4]
0044D92B |.^ EB EE \JMP SHORT 0044D91B
0044D92D |> FF45 F4 /INC DWORD PTR SS:[EBP-C]
0044D930 |. FF45 FC |INC DWORD PTR SS:[EBP-4]
0044D933 |> 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0044D936 |. 3C 01 |CMP AL,1
0044D938 |. 74 65 |JE SHORT 0044D99F
0044D93A |. 3C 02 |CMP AL,2
0044D93C |. 74 61 |JE SHORT 0044D99F
0044D93E |. 8B4D FC |MOV ECX,DWORD PTR SS:[EBP-4]
0044D941 |. 0FBE01 |MOVSX EAX,BYTE PTR DS:[ECX]
0044D944 |. 3C 2A |CMP AL,2A
0044D946 |. 75 22 |JNZ SHORT 0044D96A
0044D948 |. 8079 01 2F |CMP BYTE PTR DS:[ECX+1],2F ; 判断是不是“/ ”
0044D94C |. 75 1C |JNZ SHORT 0044D96A
0044D94E |. 83C1 02 |ADD ECX,2
0044D951 |. 51 |PUSH ECX ; /Arg1
0044D952 |. E8 0D95FDFF |CALL 00426E64 ; 把字符数字转成数字
0044D957 |. 42 |INC EDX
0044D958 |. 0155 FC |ADD DWORD PTR SS:[EBP-4],EDX
0044D95B |. FF75 F4 |PUSH DWORD PTR SS:[EBP-C] ; /Arg2
0044D95E |. 50 |PUSH EAX ; |Arg1
0044D95F |. E8 72FFFFFF |CALL 0044D8D6 ; \0044D8D6
0044D964 |. 48 |DEC EAX
0044D965 |. 0145 F4 |ADD DWORD PTR SS:[EBP-C],EAX
0044D968 |.^ EB C3 |JMP SHORT 0044D92D
0044D96A |> 8B55 F4 |MOV EDX,DWORD PTR SS:[EBP-C]
0044D96D |. 8802 |MOV BYTE PTR DS:[EDX],AL
0044D96F |. 85C0 |TEST EAX,EAX
0044D971 |. 75 06 |JNZ SHORT 0044D979
0044D973 |. C645 F8 02 |MOV BYTE PTR SS:[EBP-8],2
0044D977 |.^ EB B4 |JMP SHORT 0044D92D
0044D979 |> 83F8 26 |CMP EAX,26
0044D97C |. 74 0A |JE SHORT 0044D988
0044D97E |. 83F8 0A |CMP EAX,0A
0044D981 |.^ 75 AA |JNZ SHORT 0044D92D
0044D983 |. 8845 F0 |MOV BYTE PTR SS:[EBP-10],AL
0044D986 |. EB 0B |JMP SHORT 0044D993
0044D988 |> FF45 FC |INC DWORD PTR SS:[EBP-4]
0044D98B |. 8B55 FC |MOV EDX,DWORD PTR SS:[EBP-4]
0044D98E |. 8A02 |MOV AL,BYTE PTR DS:[EDX]
0044D990 |. 8845 F0 |MOV BYTE PTR SS:[EBP-10],AL
0044D993 |> C645 F8 01 |MOV BYTE PTR SS:[EBP-8],1
0044D997 |. 8B45 F4 |MOV EAX,DWORD PTR SS:[EBP-C]
0044D99A |. C600 00 |MOV BYTE PTR DS:[EAX],0
0044D99D |.^ EB 8E \JMP SHORT 0044D92D
0044D99F |> 8A75 F8 MOV DH,BYTE PTR SS:[EBP-8]
0044D9A2 |. 8A55 F0 MOV DL,BYTE PTR SS:[EBP-10]
0044D9A5 |. 8D8D F0FBFFFF LEA ECX,DWORD PTR SS:[EBP-410]
0044D9AB |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0044D9AE |. 8BE5 MOV ESP,EBP
0044D9B0 |. 5D POP EBP
0044D9B1 \. C3 RETN
2 每回合开始时自动存档
0044E199 . 837D 08 00 CMP DWORD PTR SS:[EBP+8],0
0044E19D . 75 08 JNZ SHORT 0044E1A7
0044E19F . 8B4D C8 MOV ECX,DWORD PTR SS:[EBP-38]
0044E1A2 . E8 0E49FCFF CALL 00412AB5 ; 这里是回合开始时的自动存档
0044E1A7 > 837D F4 00 CMP DWORD PTR SS:[EBP-C],0
0044E1AB . 74 34 JE SHORT 0044E1E1
0044E1AD . 6A 14 PUSH 14
0044E1AF . E8 3149FCFF CALL 00412AE5 ; 这里是回合结束时的自动存档
0044E1B4 . 90 NOP
0044E1B5 . 90 NOP
0044E1B6 . 90 NOP
0044E1B7 . 90 NOP
0044E1B8 . 90 NOP
0044E1B9 . 90 NOP
0044E1BA . 90 NOP
0044E1BB . 90 NOP
0044E1BC . 90 NOP
0044E1BD . 90 NOP
0044E1BE . 90 NOP
0044E1BF . 90 NOP
0044E1C0 . 90 NOP
0044E1C1 . 90 NOP
0044E1C2 . 90 NOP
0044E1C3 . 90 NOP
0044E1C4 . 90 NOP
0044E1C5 . 90 NOP
0044E1C6 . 90 NOP
0044E1C7 . 90 NOP
0044E1C8 . 90 NOP
0044E1C9 . 90 NOP
0044E1CA . 90 NOP
0044E1CB . 90 NOP
0044E1CC . 90 NOP
0044E1CD . 90 NOP
0044E1CE . 90 NOP
0044E1CF . 90 NOP
0044E1D0 . 90 NOP
0044E1D1 . 90 NOP
0044E1D2 . 90 NOP
0044E1D3 . 90 NOP
0044E1D4 . 90 NOP
0044E1D5 . 90 NOP
0044E1D6 . 90 NOP
0044E1D7 . 90 NOP
0044E1D8 . 90 NOP
0044E1D9 . 90 NOP
0044E1DA . 90 NOP
0044E1DB . 90 NOP
00412AB5 /$ 55 PUSH EBP
00412AB6 |. 8BEC MOV EBP,ESP
00412AB8 |. 803D 350E5000 00 CMP BYTE PTR DS:[500E35],0 ; 这个是a键开关
00412ABF |. 74 22 JE SHORT 00412AE3 ; 这句nop掉则永久开启
00412AC1 |. B8 520F5000 MOV EAX,00500F52
00412AC6 |. 50 PUSH EAX
00412AC7 |. FF30 PUSH DWORD PTR DS:[EAX]
00412AC9 |. C600 0A MOV BYTE PTR DS:[EAX],0A
00412ACC |. 0FB641 02 MOVZX EAX,BYTE PTR DS:[ECX+2]
00412AD0 |. 33D2 XOR EDX,EDX
00412AD2 |. B9 14000000 MOV ECX,14
00412AD7 |. F7F1 DIV ECX
00412AD9 |. 52 PUSH EDX ; /Arg1
00412ADA |. E8 06000000 CALL 00412AE5
00412ADF |. 59 POP ECX
00412AE0 |. 58 POP EAX
00412AE1 |. 8808 MOV BYTE PTR DS:[EAX],CL
00412AE3 |> 5D POP EBP
00412AE4 \. C3 RETN
00412AE5 /$ 55 PUSH EBP
00412AE6 |. 8BEC MOV EBP,ESP
00412AE8 |. 833D FC0F5000 00 CMP DWORD PTR DS:[500FFC],0
00412AEF |. 74 3B JE SHORT 00412B2C
00412AF1 |. 837D 08 14 CMP DWORD PTR SS:[EBP+8],14
00412AF5 |. 75 09 JNZ SHORT 00412B00
00412AF7 |. 803D F90D5000 00 CMP BYTE PTR DS:[500DF9],0
00412AFE |. 74 2C JE SHORT 00412B2C
00412B00 |> 66:C705 99524000 EB4A MOV WORD PTR DS:[405299],4AEB
00412B09 |. 66:C705 F7524000 EB12 MOV WORD PTR DS:[4052F7],12EB
00412B12 |. FF75 08 PUSH DWORD PTR SS:[EBP+8] ; /Arg1
00412B15 |. E8 5127FFFF CALL 0040526B ;
00412B1A |. 66:C705 99524000 8B4D MOV WORD PTR DS:[405299],4D8B
00412B23 |. 66:C705 F7524000 6A01 MOV WORD PTR DS:[4052F7],16A
00412B2C |> 5D POP EBP
00412B2D \. C2 0400 RETN 4
00405BB2 /$ 55 PUSH EBP ;存档翻页处理
00405BB3 |. 8BEC MOV EBP,ESP
00405BB5 |. B8 520F5000 MOV EAX, 00500F52
00405BBA |. 837D 0C 03 CMP DWORD PTR SS:[EBP+C],3
00405BBE |. 75 02 JNZ SHORT 00405BC2
00405BC0 |. FE08 DEC BYTE PTR DS:[EAX]
00405BC2 |> 837D 0C 04 CMP DWORD PTR SS:[EBP+C],4
00405BC6 |. 75 02 JNZ SHORT 00405BCA
00405BC8 |. FE00 INC BYTE PTR DS:[EAX]
00405BCA |> 8038 0B CMP BYTE PTR DS:[EAX],0B
00405BCD |. 75 05 JNZ SHORT 00405BD4
00405BCF |. C600 00 MOV BYTE PTR DS:[EAX],0
00405BD2 |. EB 08 JMP SHORT 00405BDC
00405BD4 |> 8038 FF CMP BYTE PTR DS:[EAX],0FF
00405BD7 |. 75 03 JNZ SHORT 00405BDC
00405BD9 |. C600 0A MOV BYTE PTR DS:[EAX],0A
00405BDC |> 83C1 0C ADD ECX,0C
00405BDF |. 6A 01 PUSH 1 ; /Arg1 = 00000001
00405BE1 |. E8 C43D0000 CALL 004099AA ; \004099AA
00405BE6 |. 5D POP EBP
00405BE7 \. C3 RETN
0041C485 |. 8038 FF CMP BYTE PTR DS:[EAX],0FF ;如果把这个0FF改为0A,则自动存档页
不能手动存档
0041C498 |. 8038 FF CMP BYTE PTR DS:[EAX],0FF ;如果把这个0FF改为0A,则自动存档页
不能手动存档
这些代码均来自于6.2修正版,如果要移植于其他版本,不能保证可以正常运行,请自行排查错误。
[ 本帖最后由 star175 于 2021-5-31 16:41 编辑 ]
|