Task 3, This is were I always get stuck! Sunday, 07-Feb-99 10:11:01
Figuring out how the serial number is generated is always the hard part. I can usually find the good number, but it seems the code used to create the number is lengthy and intertwined. Which seems to be the case here. Anyway, answers to the questions as I know them: 1a. After the CALL 0040CCC0 the ECX register holds the 'bad' number while the EDX holds the 'good' number. 1b. The ESP,00000008 instruction adjusts the stack to the value before the two PUSH instructions before the call. Apparently, this is needed, but I don't know exactly why? 1c. The TEST instruction is checking for the Zero flag. It is looking to see if it is set or not set - a 1 or a 0. Although I don't know what the TEST instuction actually does to EAX. Can anyone explain? 1d. The JNE 0040B9BC instuction jumps to the 'bad' messagebox. 2. The program compares the input serial to the good serial one character at a time. It shifts the value at [ECX] into al and compares the value in al to [EDX]: mov al, [ECX] cmp al, [EDX] if it matches it then checks the next value: mov al, [ECX+1] cmp al, [EDX+1] if it matches both ECX and EDX are incremented by a value of 2 and the check loops until a mismatch is found or the number matches. 3. This I can't figure out. Obviously it is generated by the registration name but I can't find where it starts. dIce |
dIce: Initial Information Gathering (03-Feb-99 20:43:37) |
|
Copyright © InsideTheWeb, Inc. 1997-1999
All rights reserved.