In the tutorial section, I had posted how to fix the checksum on the client side. But now how do you fix it via runtime on the server side?
Can someone help with that please.![]()
In the tutorial section, I had posted how to fix the checksum on the client side. But now how do you fix it via runtime on the server side?
Can someone help with that please.![]()
i don't understand. I don't see it on server. ???
Hi Zahara,
There is one. At the end of the exp table on the server, there is the checksum too. If you change the values in the exp table on the server, and it does not match the checksum, your server will crash due to runtime error. I have been trying that on the Endless Version server that was released by Shagpub.
If the same EXP table as on that server is used, there is no crash. However, if you modify that EXP table, the server crashes due to runtime error.
Okay... follow the same procedure. Select the checksums in the data view in Olly and search for references to it in the code.
^^. You can debug the same client. It's okie.
Lol. You cannot do that as the moment you put an IBP on the same values, the server disconnects you. So that method does not work.
Okie man. So you have a other problem. I think you check it below CMP EAX,97 <~~ level 151
I don't see why the server disconnecting you is a problem... You don't want to connect to the server, just to read the table checksum. At the point it executes the checksum is correct, and then playing the game is unimportant.
But... If you are struggling to get it to the point where it reads the table, branch to that routine providing the same arguments that it uses. Just temporarily. Or you could even go to the extent of running the checksum code in your head. It's not too long a code section, but it's about the limit I would go to for this manual method, and then, only if I was DESPERATE. lol
Example KPT ET 2.2 Server Checksum Value is 0x00008A933E29157C, referenced at 0x44A1BB and 0x44A1C5 when loaded in memory.
The routine at 0x443980 returns the checksum of the table in AX and DX this time.
Label the low and high word of the recorded checksum ChkLo and ChkHi respectively and label the routine at 0x44A1BB as Sub_CalcLevelChkSum, to see the following code fragment...Just as we had in the client. Except the client we looked at returned in ECX and EDX. IMSCode:CALL Sub_CalcLevelChkSum MOV ECX,DWORD PTR DS:[ChkLo] CMP ECX,EAX JNE SHORT Jmp_ErrorExit MOV EAX,DWORD PTR DS:[ChkHi] CMP EAX,EDX JNE SHORT Jmp_ErrorExit
In any case, if you set your IBP on the red line, then if the server stops at that point it doesn't matter, you still have your checksum in EAX and EDX.
Note them down and replace the memory value with that... making sure you are looking at the table in KPTTrans rather than .data of course.
Last edited by bobsobol; 07-11-09 at 08:49 PM.
Server exp table checksum is the same value as game's.its ok.I did it fine that way.
The checksum in server.exe dosen‘t need to be set。As long as you fixed the checksum in game.exe, you can level up normally.
Yes. But orius have problem about it. B/c it auto disconnect. ^^
@Bob
I tried what you said, but it does not work. Or I am doing something wrong. As when I set an IBP on the section while running it in Olly, nothing happens. However, if connect via my client to it and then set the IBP right before lvl up, the server stalls out and Olly takes me to a "stack error" section.
@Zahara
Yea lol that was what I was thinking after I posted my response first. So I have been trying it out atm.Originally Posted by zaharavn
So now waiting to see if I get the Runtime Error again.
Nonetheless, I still feel that the server exp table checksum should matter. Right?