012
19.03.2012, 21:27 Uhr
mtx500
|
Praktisch alle Texte, also die Meldungen, insbesondere die Copyright-Meldung, und die eingestempelte Seriennummer sind verschleiert, indem jeweils ein Zeichen rechts rotiert und das nächste wieder links rotiert ist (mit den Assembler-Befehlen RRC und RLC). Lässt man das Programm im Debugger bis zu einer gewissen Stelle (A) laufen, dann sieht man die unverschleierten Meldungen.
Die Seriennummer beginnt immer mit einem '#' Zeichen und zwei Buchstaben oder Ziffern, gefolgt von vier weiteren Ziffern. Sie ist als sieben ASCII-Zeichen abgelegt (B) und wird gegen Patchen geschützt indem über die sechs Zeichen nach dem '#' eine 8-Bit-Summe berechnet wird und mit einem abgelegten Byte an Stelle (C) verglichen wird. Das macht die Routine in (D). Falls sie nicht übereinstimmen, weigert sich das Program zu laufen.
Die Seriennummer ist nochmal an einer anderen Stelle (E) abgelegt, und zwar als zwei ASCII-Zeichen (die beiden nach dem '#') gefolgt von einer 16-Bit-Zahl die die weiteren 4 Ziffern BCD-codiert enthält. Diese Ablage wird scheinbar nicht geprüft. Vielleicht soll sie einen pösen Patcher in Sicherheit wiegen und dann verraten.
Die Adressen der Seriennummern und Routinen sind natürlich je Programm unterschiedlich. Hier eine Liste:
SLRNK.COM Release 1.31: A = 21A1, B = 09BA, C = 019B, D = 1A33, E = 1950
Z80ASM.COM Rel. 1.32: A = 2404, B = 2998, C = 01AC, D = 5FCF, E = 5FC7
SLRNK+.COM Rel. 2.01: A = 4CC2, B = 4EBA, C = 0233, D = 0F75 (die Seriennummer wird vorher allerdings nach ~17D7 kopiert, bevor geprüft wird), E = 0CB5
Z80ASM.COM Rel. 1.24: A = 2356, B = 283E, C = 0190, D = 5DDB, E = 5DD3
SLR180.COM Rel. 1.32: A = 247D, B = 2A11, C = 01AC, D = 609F, E = 6097 Dieser Post wurde am 19.03.2012 um 21:30 Uhr von mtx500 editiert. |