WaxfordSqueers
January 21st, 2005, 05:15
Howdy,
I decided to try +Splaj's Awave tute because I'm setting up Ice 4.3.1 on XP Sp2 and wanted to put it through it's paces. Much to my chagrin, it seems Alexey has been hard at work with a different revision.
I tried the BPX on GetVersion but only got the program coming up. I didn't know if it was Ice's breakpoints not sticking, or what. I finally got one to stick on IsDebuggerPresent. But I couldn't F12 out of the call because SXS.dll was being ornery.
New strategy. I changed the file attributes to F0000060 and loaded via symbol loader and it broke at the program entry point. IDA could not make hide nor hair of it, though, on disassembly due to copious amounts of SMC. Then I tried GetVersion, but no luck. I got a messagebox telling me my file was corrupted. After many bright ideas, I decided to go cold turkey and trace in.
I've looked in the memory image PE header to see if i could change my file attributes back after loading with ice loader. I can't seem to find them. I wonder if Alexey hid them till the file's nearly loaded?
Got to a point where there are about 6 calls in a row, I mean one after the other. The message box always showed up in the last one. Took me a long time to see what it was. Alexey's pretty smart. He set up the following statement:
XOR [EAX], EAX
which causes an exception, because [EAX] is -1 and EAX is 0. I don't know why, but it does a good job. There's about 10 of these little beauties that I've found and all are buried in self modifying code.
My first problem comes when I inadvertantly hit an exception and the message box shows up. I have to reload from scratch and NOP each XOR statement in memory. Is there a better way out of these exceptions? I have tried tracing through them and F12ing out, but I always crash.
I feel that I'm pretty close to paydirt, but my latest crash is not an obvious exception. I'm at the point after the code is decompressed and loaded, and something is happening with respect to to the path and file name. I'm using Iceext and the IsDebuggerPresent doesn't seem to see it. So, I'm thinking it's a flag issue because there's no XOR's around. There are a couple of CMP's I need to check.
BTW...I found the group of imports +Splaj mentioned but they're not near where he said they'd be. When I try his search trick, about a couple dozen POPADS show up. I'm thinking Alexey may have seeded them. Also, he's built XOR exception producers around the imports, like land mines. It's getting dangerous to trace through the dark code woods.
For the longest time, I've tried to understand how to convert 8xxxxxxx numbers to the 04xxxxxx equivalent. I've read a lot on descriptors, and understand the segmentation pretty decently with the selector and offset, but the conversion still eludes me. Could one of you gurus say something about it?
For example, when I do the search, the results come back as something like 28:83579230. How do I convert that into the selector
ffset like cs:eip.
thanks
I decided to try +Splaj's Awave tute because I'm setting up Ice 4.3.1 on XP Sp2 and wanted to put it through it's paces. Much to my chagrin, it seems Alexey has been hard at work with a different revision.

I tried the BPX on GetVersion but only got the program coming up. I didn't know if it was Ice's breakpoints not sticking, or what. I finally got one to stick on IsDebuggerPresent. But I couldn't F12 out of the call because SXS.dll was being ornery.
New strategy. I changed the file attributes to F0000060 and loaded via symbol loader and it broke at the program entry point. IDA could not make hide nor hair of it, though, on disassembly due to copious amounts of SMC. Then I tried GetVersion, but no luck. I got a messagebox telling me my file was corrupted. After many bright ideas, I decided to go cold turkey and trace in.
I've looked in the memory image PE header to see if i could change my file attributes back after loading with ice loader. I can't seem to find them. I wonder if Alexey hid them till the file's nearly loaded?
Got to a point where there are about 6 calls in a row, I mean one after the other. The message box always showed up in the last one. Took me a long time to see what it was. Alexey's pretty smart. He set up the following statement:
XOR [EAX], EAX
which causes an exception, because [EAX] is -1 and EAX is 0. I don't know why, but it does a good job. There's about 10 of these little beauties that I've found and all are buried in self modifying code.
My first problem comes when I inadvertantly hit an exception and the message box shows up. I have to reload from scratch and NOP each XOR statement in memory. Is there a better way out of these exceptions? I have tried tracing through them and F12ing out, but I always crash.
I feel that I'm pretty close to paydirt, but my latest crash is not an obvious exception. I'm at the point after the code is decompressed and loaded, and something is happening with respect to to the path and file name. I'm using Iceext and the IsDebuggerPresent doesn't seem to see it. So, I'm thinking it's a flag issue because there's no XOR's around. There are a couple of CMP's I need to check.
BTW...I found the group of imports +Splaj mentioned but they're not near where he said they'd be. When I try his search trick, about a couple dozen POPADS show up. I'm thinking Alexey may have seeded them. Also, he's built XOR exception producers around the imports, like land mines. It's getting dangerous to trace through the dark code woods.
For the longest time, I've tried to understand how to convert 8xxxxxxx numbers to the 04xxxxxx equivalent. I've read a lot on descriptors, and understand the segmentation pretty decently with the selector and offset, but the conversion still eludes me. Could one of you gurus say something about it?
For example, when I do the search, the results come back as something like 28:83579230. How do I convert that into the selector

thanks