CQ_
July 16th, 2007, 09:23
Hi all! First post so I hope no one judges my IQ based on my post count
. Anyway, I am working on a program that I have & need some help. A *long* time ago a fellow named JohnWho made a patch for it, that worked really well. That was for v3.0 of this app. It is now @ v4.2. What I have done is studied the changes he made in his patch and then applied them directly as they were to the new app, only manually locating the identical code segments to patch. This worked but then the authors of the app have applied some new kind of protection that throws a stupid error. Well, this is returned in a webpage, not a standard window so I had no idea how to handle it. I tried poking around in the disassembly I had, and also in the EXE itself using a hex editor, but could not find the string that was displayed. I played with the app in OllyDbg a bit and couldn't find the string in memory either. I finally took a *very* hard route (not knowing even which function to possibly break on) and set breakpoints on *all* intramodular calls! I then ran the app and rapidly removed all breakpoints that triggered in the starting process of the app. From there I played in its interface a bit and ruled out more breakpoints. Then I went into the actual webpage it served up, and did what was necessary to get the protection error displayed. Needless to say, this triggered umpteen more breakpoints, but @ least this time I was in the right section of code. After some careful tracing around and watching the stack, I saw the area where the error was being formed & then located the critical jump. I have patched it, and the app appears to work. *HOWEVER* what I discovered is that the authors have implemented some weird type of string encryption. I have had a decoded string and its encoded version, and although they seem to be *exactly* the same character length, the code for what I know to be character X is not the same later on when there is another instance of character X. Now that I knew how they were hiding the strings, I went looking back through the disassembly and I have found many more instances of these encoded strings. This leads me to believe that there may be more hidden checks/triggers. However, since I can't read what the strings say - due to the encryption, I can't really get a feel for what purpose they are there, so I'm not sure which ones may need further attention. What I am wondering is if someone here could give the app a looking over & assist me in figuring out how to decrypt the strings that are encrypted. Here are the relevant files:
Also, here is a sample of one of the encrypted strings, to make it easier to find what I am referring to:

Code:
LINK DELETED - that is the installer for the version I am working on
Code:
LINK DELETED - that is the file as I have edited it thus far.
Also, here is a sample of one of the encrypted strings, to make it easier to find what I am referring to:
Code:
",169,201,215,223,219,165,177,224,213,213,225,2"
"21,206,179,192,208,213,228,232,147,149,230,208"
",216,228,143,200,231,210,129,209,225,227,135,2"
"14,217,205,210,233,212,203,149,225,208,131,222"
",222,206,222,219,130,159,161,226,219,231,220,2"
"07,202,176,171,150,221,225,206,207,176"