First of all, I'm new to cracking, so what I did might sound noobish/stupid.
As CabalRider went p2p I wanted to see how cracking actually works and read some tutorials about it. I ran into some problems and reported my findings below. I hope that someone can give me a pointer or advice on how to solve problems or even telling me I'm taking the right/wrong course.
First I replaced loginfailed.html by loginsuccess.html, but that didn't work (ofcourse).
I then decompiled it using, PE explorer, ollydbg and W32Dasm. PE explorer didn't give me a 1 on 1 translation as W32Dasm did, but it had a lot more information. After some hours I discovered with ollydbg that cabalrider initial program only contains data and code and the code creates it's own program based on the data. This in itself is a lot different from all the tutorials and can't find a tutorial how to work with this.
Despite that I managed to found the address for changing a jnz to jz to circumvent the check for entering no pass. But it also changed jnz on other places. To continue on this road would mean that I'd have to figure out how the code generator works and change the seed of this function and hope it's pretty local?
An other way would be to take the assembly generated by PE explorer(which unrolls the complete prgram and try to compile that. I tried this in MSVC but it gave a lot of some errors:
-Invalid instruction operands <-- like movzx eax,[eax], might not be executed at all? Apprently caused by missing DWORD/WORD/BYTE PTR DS: Anyone knows a decompiler that automatically adds this?
-call [USER32.dll!EnableWindow] <---invalid apperarently, how can I change that?
-instruction operand must have size <--for example setnz [esp+13h]
-Way too long label names <--Might be able to rename them, but are used under exporting.
EDIT: This is for CabalRider_EUROP 1.0.13_888 btw
EDIT2: Just downloaded 1.0.15 so will continue with that one.
As CabalRider went p2p I wanted to see how cracking actually works and read some tutorials about it. I ran into some problems and reported my findings below. I hope that someone can give me a pointer or advice on how to solve problems or even telling me I'm taking the right/wrong course.
First I replaced loginfailed.html by loginsuccess.html, but that didn't work (ofcourse).
I then decompiled it using, PE explorer, ollydbg and W32Dasm. PE explorer didn't give me a 1 on 1 translation as W32Dasm did, but it had a lot more information. After some hours I discovered with ollydbg that cabalrider initial program only contains data and code and the code creates it's own program based on the data. This in itself is a lot different from all the tutorials and can't find a tutorial how to work with this.
Despite that I managed to found the address for changing a jnz to jz to circumvent the check for entering no pass. But it also changed jnz on other places. To continue on this road would mean that I'd have to figure out how the code generator works and change the seed of this function and hope it's pretty local?
An other way would be to take the assembly generated by PE explorer(which unrolls the complete prgram and try to compile that. I tried this in MSVC but it gave a lot of some errors:
-Invalid instruction operands <-- like movzx eax,[eax], might not be executed at all? Apprently caused by missing DWORD/WORD/BYTE PTR DS: Anyone knows a decompiler that automatically adds this?
-call [USER32.dll!EnableWindow] <---invalid apperarently, how can I change that?
-instruction operand must have size <--for example setnz [esp+13h]
-Way too long label names <--Might be able to rename them, but are used under exporting.
EDIT: This is for CabalRider_EUROP 1.0.13_888 btw
EDIT2: Just downloaded 1.0.15 so will continue with that one.