acab
December 12th, 2001, 22:51
I'm attempting to reverse new securom protection.
What I found was the usual 3 calls to WriteProcessMemory / cd-rom activity / more (11) WriteProcMem's.
Stepping a little more after the last WriteProcMem I eventully came to a jmp eax to the original entrypoint.
I dumped the whole process by hand and fixed the e.p. and as expected the dumped exe crashed.
The crash was caused by a call EnterCriticalSection pointing to an object not previously initialized.
So I replaced some crap at the beginning of the code with a call InitializeCriticalSection.
The program crashed again...
This time it was caused by a page fault within the first call (securom placeholder for getversion).
So I ran the original exe again and dumped a few pages of securom memory.
Then I pasted them inside a new section into the dumped exe.
What I expected this time was a new crash...
So I stepped carefully within the first call (the usual securomized getversion) and...
GREAT!!! No more page faults. The securom routine ended up executing the "real" GetVersion call...
Unbelievable! I Stepped within a few other calls and the whole thing seemed to work quite right.
So I disabled b/points and let the proggie run.
"Mmmmmm... Hey, how mutch time does this f*cking game take to load??????"
[...]
What I found out is that the proggie just loops somewhere after the first 12/15 calls.
And here's where I got lost...
((
Can anyone help?
Phanx a lot,
acab
What I found was the usual 3 calls to WriteProcessMemory / cd-rom activity / more (11) WriteProcMem's.
Stepping a little more after the last WriteProcMem I eventully came to a jmp eax to the original entrypoint.
I dumped the whole process by hand and fixed the e.p. and as expected the dumped exe crashed.
The crash was caused by a call EnterCriticalSection pointing to an object not previously initialized.
So I replaced some crap at the beginning of the code with a call InitializeCriticalSection.
The program crashed again...
This time it was caused by a page fault within the first call (securom placeholder for getversion).
So I ran the original exe again and dumped a few pages of securom memory.
Then I pasted them inside a new section into the dumped exe.
What I expected this time was a new crash...
So I stepped carefully within the first call (the usual securomized getversion) and...
GREAT!!! No more page faults. The securom routine ended up executing the "real" GetVersion call...
Unbelievable! I Stepped within a few other calls and the whole thing seemed to work quite right.
So I disabled b/points and let the proggie run.
"Mmmmmm... Hey, how mutch time does this f*cking game take to load??????"
[...]
What I found out is that the proggie just loops somewhere after the first 12/15 calls.
And here's where I got lost...

Can anyone help?
Phanx a lot,
acab