Coding of the SLR Assembler
1. |
A first look at the program shows meaningless code following some meaningful data locations.
The routine starting at 2459H decodes two program parts.
After calculating the length of code both parts will be converted to correct code
by shifting their bytes right and left alternately.
|
2. |
A closer look at the code shows a security mechanism.
Before writing data into a file a routine checks an expected checksum.
If it is a wrong one, no data will be written to disc.
The expected result will be found at address 01A6H — this is the first address found in the encrypted area.
Again programmed confusingly, the code checks the serial number.
- Load the address where the serial number — here SB3051 — is stored.
But instead of 2A00H load the half address 1500H, which will then be doubled.
- Calculate the sum of the six character number.
- Calculate the address of the expected sum by adding a mysterious offset.
Compare the calculated sum with the expected one.
- If no match found stop writing data to file.
The program itself does run normally whether or not a match occurs.
But only if it matches an output file will be created.
|
|