sabbato753
May 26th, 2010, 16:06
Hello,
Let me start by promising that I've a) searched, and b) read the FAQ. Then I searched again. And once more to be sure I wasn't being daft.
The executable I'm working on (Delphi 7, no packing) has a TON of CreateFileA loops at start as it loads up scripts, graphics, etc. from the HDD. Somewhere in this, it also loads up a DAT file with some type of hash of the key. I'd love to see how it uses this file, but it loads it in along with more than 500 other entries.
The DAT file is not referenced directly anywhere in the program, and is not a searchable string. The name is actually computed in a loop that's a bit beyond my understanding. as are most of the program jumps (stack/register calculated instead of hard links). This is making following the program's path very difficult for me.
What I'd like to do is find an Olly plugin that allows me to enter a filename and break on the first entry to that file (so I can see where it maps it in memory). I've put a note in that forum in case anyone can direct me.
In the meantime, I was wondering if anyone had a better suggestion. I've tried:
1) Searching for the filename as a string in IDA and Olly. No dice.
2) Using the MemoryWatch plugin to watch registers and info pane for the name of the file (in ascii). No dice...but I'm not sure why on this one?
3) Searching for parts of the file in the memory of the program in hex (no dice, I guess the file is modified or dumped very quickly after it's loaded).
MUCH of the program reuses its code (yay Delphi!), so things like button presses, typing, etc. all go through the same bits of code over and over...including the massive file-load at the start. The program also doesn't do its own serial check- it tries to send off to the net, so I can't even just find that "thanks for registering!" piece and find out where that modifies.
So, I'm at a bit of a loss as to where to go from here. I know that it checks the registration on startup, that it uses this one file to do it and that it loads that file in amongst a bunch of others. That seems to be my best guess as to where flip switches.
Any better ideas?
Let me start by promising that I've a) searched, and b) read the FAQ. Then I searched again. And once more to be sure I wasn't being daft.
The executable I'm working on (Delphi 7, no packing) has a TON of CreateFileA loops at start as it loads up scripts, graphics, etc. from the HDD. Somewhere in this, it also loads up a DAT file with some type of hash of the key. I'd love to see how it uses this file, but it loads it in along with more than 500 other entries.
The DAT file is not referenced directly anywhere in the program, and is not a searchable string. The name is actually computed in a loop that's a bit beyond my understanding. as are most of the program jumps (stack/register calculated instead of hard links). This is making following the program's path very difficult for me.
What I'd like to do is find an Olly plugin that allows me to enter a filename and break on the first entry to that file (so I can see where it maps it in memory). I've put a note in that forum in case anyone can direct me.
In the meantime, I was wondering if anyone had a better suggestion. I've tried:
1) Searching for the filename as a string in IDA and Olly. No dice.
2) Using the MemoryWatch plugin to watch registers and info pane for the name of the file (in ascii). No dice...but I'm not sure why on this one?
3) Searching for parts of the file in the memory of the program in hex (no dice, I guess the file is modified or dumped very quickly after it's loaded).
MUCH of the program reuses its code (yay Delphi!), so things like button presses, typing, etc. all go through the same bits of code over and over...including the massive file-load at the start. The program also doesn't do its own serial check- it tries to send off to the net, so I can't even just find that "thanks for registering!" piece and find out where that modifies.
So, I'm at a bit of a loss as to where to go from here. I know that it checks the registration on startup, that it uses this one file to do it and that it loads that file in amongst a bunch of others. That seems to be my best guess as to where flip switches.
Any better ideas?