yah, guys, seems you want force me for force explanation..
OKee.
1. you can find info
about SVKP's encryption block Start&End in SVKP's pacage!
(or use your eyes).
BLOCK start is 21 bytes long:
near call E800000000;
far jump FF25[address of decryptor];
blockID-byte + empty bytes: 10 byte long;
then is block himself;
BLOCK end is 16 bytes long:
near call E800000000;
far jump FF25[address of cryptor];
blockID-byte + empty bytes: 5 byte long;
***
So you will first analyse dump & determine all crypted sections & their start address;
[Very helps you, if you make first dump directly after SVKP decrypts exe,
[& second dump on OEP, so using some comparision tool, You easy find start addresses]
Now we again go in debugger, stoped at OEp, & change EIP to 1st start address;
Then you can:
A. trace into code, while it decrypts & then returns execution to decrypted code;
B. or for lasy guys: BPM EIP+15 X, so debugger breaks on decrypted code.
C. dont go into decrypted code, but now change EIP ti NEXT crypted-block's start address;
so do until you decrypt all sections & then dump happy proggie
END of 1.
2. seems SOLDAT has problem with SVKP's RDTSC future;
Here is descryption of it:
1st RDTSC;
save EDX in EBX(or ECX);
junk code;
2nd RDTSC;
SUB EDX, oldEDX;
SUB EDX, 2;
now if EDX > 0, you are catched;
e.g. IF after executing two nearest RDTSC(Read processor's TimeStampCounter),
newest RDTSC's EDX will +2 greater then old EDX, SVKP catches you.
So you need correct 2nd RDTSC's EDX to match with old EDX. OK?
(or use predefined EDX each time after RDTSC)(or do anything..);
END of 2.
3. PSEUDO_CODE
I had read about PSEUDO_CODE in STARFORCE-CDprotection, but not meet until now.
PSEUDO_CODE is method of doing same job as real code, but with other group of instuction.
Purpose: so you can't easy identify code.
(e.g.is ripped code of imported function as in STARFORCE, or is ripped OEP code).
But PSEUDO_CODE is normal working code, so if it is PSEUDO-OEP-code,
you can just attach it at free space & set EIP there.
Of course, you need some-how understand it's start.
For SVKP case, original ESP is restored & you can think, somewhere there is Start.
Better will for your skills, to understand & rebuild real code.
Also very helps us this: look at other EXE compiled with same compiler &....
I just looked at ________'s start code & recovered that last missed instruction!
So now I can say, OEIP is at 46AA27 & all ripped 59h byte code is
absolutely ________'s identical(except direct addresses)!!!
END of 3.
*********
EXERSIZE:
paste(replace) attachment in fixed dump of nbpro at .svkp section start(VA 00119000h)
& set EIP 0011B9F7.
Now rebuild true code> Length 59h
PS. maybe I will make PSEUDO_CODE crackme!?