lenwuk
November 26th, 2003, 18:14
I'm working on a program that appears to be packed with AsPack, but none of the unpackers work sucessfully.
So, I've tried working through it a little at a time.
It has some fairly good SoftIce detection that I've not been able to find - it either just halts the machine with a totally blank, black screen (if I3HERE ON) or causes a page fault in the kernel (if I3HERE OFF).
However, it runs OK under TRW2000.
Well, I've been single stepping through all the disguised JMPs, relocated encrypted code, and other crap, and I eventually end up at an INT 30 which seems to execute the program if I let it go ahead. If I trace into the INT 30 I never seem to reach the actual program code. In truth there's actually EIGHTEEN INT 30 calls which seem to involve stepping into FindClose (!!) and Kernel32!ORD_0001.
I confess to being at the limit of my technical ability on this one and would appreciate any help that you'd care to offer.
PS the general structure of the program is -
start executing around 5BE000-setting up code in high memory, then pass control to 1270000 which contains more code relocation and all the "tricky bits".
Then finally the program itself which executes in the normal 400000 area.
So, I've tried working through it a little at a time.
It has some fairly good SoftIce detection that I've not been able to find - it either just halts the machine with a totally blank, black screen (if I3HERE ON) or causes a page fault in the kernel (if I3HERE OFF).
However, it runs OK under TRW2000.
Well, I've been single stepping through all the disguised JMPs, relocated encrypted code, and other crap, and I eventually end up at an INT 30 which seems to execute the program if I let it go ahead. If I trace into the INT 30 I never seem to reach the actual program code. In truth there's actually EIGHTEEN INT 30 calls which seem to involve stepping into FindClose (!!) and Kernel32!ORD_0001.
I confess to being at the limit of my technical ability on this one and would appreciate any help that you'd care to offer.
PS the general structure of the program is -
start executing around 5BE000-setting up code in high memory, then pass control to 1270000 which contains more code relocation and all the "tricky bits".
Then finally the program itself which executes in the normal 400000 area.