Patch for Silver Xpress "Bug" dates
From
AKAcastor@21:1/162 to
All on Tuesday, May 21, 2024 19:03:52
I wrote a small (1 byte) patch to fix "Bug" dates in Silver Xpress - XPBUGPAT.ZIP can be found in file area 4 (cracks) of Another Millennium BBS (another.tel).
(text file follows)
Chris/akacastor
----------------------------------------------------------------------------- Patch for Silver Xpress "Bug" dates by akacastor 2024-05-21 [ AP Class ] -----------------------------------------------------------------------------
Tested on Silver Xpress 5.03M1 door, Silver Xpress 4.01 real mode reader,
and Silver Xpress 4.01 protected mode reader.
This patch fixes display of dates > 2000 in Silver Xpress. Without the patch, any dates after the year 2000 are displayed with "Bug" instead of month.
The patch is applied by running XPBUGPAT.BAT, which uses CHANGE.EXE to
patch the Silver Xpress executable file.
usage: XPBUGPAT XPREAD.EXE
When the patch is applied successfully, "Done: 1 patches applied." will
be printed. If the executable has already been patched, 0 patches will
be applied.
-----------------------------------------------------------------------------
C:\SX>xpbugpat xpread.exe
pattern: 81 7E F4 D0 07 76 05 C7
patch: 81 7E F4 D0 70 76 05 C7
Found @ F82F ... Patched 8 bytes.
Done: 1 patches applied.
C:\SX>
----------------------------------------------------------------------------- What does the patch do? -----------------------------------------------------------------------------
The Silver Xpress code contains a subroutine that checks dates to see if they are valid, and in case of an invalid date the word "Bug" is printed instead of the correct month. All dates after the year 2000 are considered invalid, and thus trigger the "Bug" dates.
Below is disassembly of the relevant part of the subroutine that checks dates. An arrow marks the line with a 'cmp' comparing the year to 2000, followed by a 'jbe' which will jump if the year is below or equal to 2000.
seg097:02B4 83 7E F6 01 cmp [bp+var_month_idx], 1 seg097:02B8 72 06 jb short loc_27B50
seg097:02BA 83 7E F6 0C cmp [bp+var_month_idx], 12 seg097:02BE 76 05 jbe short loc_27B55
seg097:02C0
seg097:02C0 loc_27B50:
seg097:02C0 C7 46 F6 0D 00 mov [bp+var_month_idx], 13 seg097:02C5
seg097:02C5 loc_27B55:
seg097:02C5 81 7E F4 C4 07 cmp [bp+var_year], 1988 seg097:02CA 73 05 jnb short loc_27B61
seg097:02CC C7 46 F6 0D 00 mov [bp+var_month_idx], 13 seg097:02D1
seg097:02D1 loc_27B61:
seg097:02D1 81 7E F4 D0 07 cmp [bp+var_year], 2000 ; <--- seg097:02D6 76 05 jbe short loc_27B6D
seg097:02D8 C7 46 F6 0D 00 mov [bp+var_month_idx], 13 seg097:02DD
seg097:02DD loc_27B6D:
By patching the instruction "81 7E F4 D0 07" to "81 7E F4 D0 70", the maximum allowed year is changed from 2000 to 28,880. This should give us a bit more time. :)
- akacastor, 2024-05-21
-----------------------------------------------------------------------------
T H E @ ############
@ @ #### ###
@@@ ### ####
@@ @@@@ @@ ### ####
@@@ @@ @@ ### ###
@@ @@@@ @@ ### ####
@@ @@ @ @@ ### ###
@ @@ @@ @ ### ####
@ @@ @@ @@@@##########
@ @@ @@ @@@@@@ ###
@ @@ @@@@@@ @ ###
@ @@ @@@@@@ @ #M#
@ @@@@@@ @@ @ #t#
@@ @@@@ @@ @@ #M#
@@@@@ @@@@ ###
@@@ @@@ @@ ###
@@@ @@ @@@@@@@@ @@@ #####
@@ @@ #########
@@ @@
@ @ C L A S S
guess what... 1994, 2024, your shit's still getting cracked.
it's just now more of a philanthropic move instead of an anarchist one -----------------------------------------------------------------------------
.______ .______ ._______ _____._.___.__ ._______.______
: \ : \ : .___ \ \__ _:|: | \ : .____/: __ \
| . || || : | | | :|| : || : _/\ | \____|
| : || | || : | | || . || / \| : \
|___| ||___| | \_. ___/ | ||___| ||_.: __/| |___\
|___| |___| :/ |___| |___| :/ |___|
._____.___ .___ .___ .___: ._______.______ .___ .____ ._____.___
: |: __|| | | | : .____/: \ : __|| |___ : |
| \ / || : || | | | | : _/\ | || : || | || \ / |
| |\/ || || |/\ | |/\ | / \| | || || : || |\/ |
|___| | || || / \| / \|_.: __/|___| || || ||___| | |
|___||___||______/|______/ :/ |___||___||. _____/ |___|
:/
.: : :.
/ / \ \
<-< Multinode Maximus v3.01 Telnet: another.tel >->
>-> Canada +1 587.67.31337 <300bps - 33.6kbps> USA +1 949.59.31337 <-<
<-< AP Class/whq 21:1/162@fsxnet >->
\ \ / /
`: :' -----------------------------------------------------------------------------
--- Maximus 3.01
* Origin: Another Millennium - Canada - another.tel (21:1/162)