The underlaying problem seems to be that a pointer table isn't initialized correctly. It's cleared to zero at the beginning of the program execution, but it's never set to valid values afterwards. I don't know yet what's supposed to fill this table, but the function called to get one of those pointers seems to be called by a lot of different things. Also, this fonction is, most of the time, called with a single constant argument, which is ANDed with 0x7F and XORed over and over. Could be some protection scheme... Well, I'll keep investigating on this.
|