DakienDX
February 1st, 2002, 18:44
Hello int21hex !
I looked a bit closer on the english WinZIP v8.1. The problem you have is that the text who tells you that you're using a evaluation version is "plain" ASCII text. You can search for it and use references to it to find locations where the text is somehow used, for example, pushed onto the stack to be displayed in a message box.
But the "Incomplete or incorrect information" text is stored in the the resource section. Therefore it is stored as UNICODE, which means that there is a hexadecimal "0" (00h) between the letters. So if you search for the text you will not find anything because the text is not there in the form you're searching for.
If you use Hex Workshop you can search for UNICODE text and will find the error message. Unfortunately, data from the resource section is not refered by memory addresses, but by Resource IDs. So I suggest you to find a resource editor like Resource Workshop or Studio.
With this tools you can look for the InvalidSerial text and get it's Resource ID. It is a 16-bit positive number. If you are lucky, it is something like 46519 (=B5B7h). Then you can search for a "Push 0000B5B7h" and it's likely that you found the location where the text to be shown in a message box is.
But if you have no luck, the Resource ID is 0, ..., 10 or equally bad. I think you can imagine how often a program uses "Push 000000000h" or similar in the code segment.
If this happens you cannot look for for the InvalidSerial text this way and you should think of an other way to find the right location, maybe by searching for other relevant text or by setting breakpoints in you favourite debugger on APIs used to get text from text-fields, like GetWindowTextA or GetDlgItemTextA. If you look at the API reference you'll find some more of these kind.