WaxfordSqueers
November 17th, 2006, 20:13
I'm back in the noob section because I still have a lot of noob questions to ask. I was just in Tools of Our Trade, and although Kayaker is always kind and generous with his responses, by the time I finish trying to unravel what he said, I feel better coming back here.
He's so far ahead of me it's scary.
Anyway, I'm working on a failed installation involving an Inno installer. I guess it's the poor man's Installshield. It has one setup file and a huge binary compressed with the same compressor used by 7zip. There are a dozen files to be decompressed, but while it's decompressing a 300 meg file, it stops with an error message about an access violation at address xxxxxxxx with Read yyyyyyyy.
I can think of several types of access violations, but they usually involve memory that isn't there, or a bad pointer. This error happens at the same code point in the setup file, which is actually an image of setup.exe mapped into memory from the temp folder in 'documents and settings'. I've tried to run this setup in XP SP2, win 98 and with a utility that can decompress this kind of compression. The outcome and fail addresses are similar.
Could this be just messed up data in the file being decompressed, or is there something else that will produce this kind of error? I would think a disk read error would produce a different error, so it seems something in the bad file is making the software point to a bad memory location. I'm a bit stumped and would appreciate input.
The code location is 4585e9 and the read location is 7a4052. The code at 4585e9 is MOV CL, [EAX+EDX], where edx is a constant and eax keeps changing. I'm assuming that when eax+edx = 7a4052, the system is unable to read that location. I haven't figured out yet how the eax value is derived. I'm just wondering if I'm up the wrong trail.
I tried BPX 4585E9 IF (eax+edx)==0x7a4052, making sure I was in the right address context. I tried the same with a BPM using RW, but neither will break. Can anyone see anything wrong with the expressions?

Anyway, I'm working on a failed installation involving an Inno installer. I guess it's the poor man's Installshield. It has one setup file and a huge binary compressed with the same compressor used by 7zip. There are a dozen files to be decompressed, but while it's decompressing a 300 meg file, it stops with an error message about an access violation at address xxxxxxxx with Read yyyyyyyy.
I can think of several types of access violations, but they usually involve memory that isn't there, or a bad pointer. This error happens at the same code point in the setup file, which is actually an image of setup.exe mapped into memory from the temp folder in 'documents and settings'. I've tried to run this setup in XP SP2, win 98 and with a utility that can decompress this kind of compression. The outcome and fail addresses are similar.
Could this be just messed up data in the file being decompressed, or is there something else that will produce this kind of error? I would think a disk read error would produce a different error, so it seems something in the bad file is making the software point to a bad memory location. I'm a bit stumped and would appreciate input.
The code location is 4585e9 and the read location is 7a4052. The code at 4585e9 is MOV CL, [EAX+EDX], where edx is a constant and eax keeps changing. I'm assuming that when eax+edx = 7a4052, the system is unable to read that location. I haven't figured out yet how the eax value is derived. I'm just wondering if I'm up the wrong trail.
I tried BPX 4585E9 IF (eax+edx)==0x7a4052, making sure I was in the right address context. I tried the same with a BPM using RW, but neither will break. Can anyone see anything wrong with the expressions?