1:
Use Cheat Engine to get the Address and than try using OllyDBG
and attach to the game. If it doesnt work, try using the
"Attach anyway" plugin. If you still cant, try to run the game with
OllyDBG. If you are able to attach / run the game, make a rightclick
in the Hex Dump window and choose go to --> expression
and type in the Address you have from CE. After that click ok.
Now in the Hex dump, you should land at this address,
do a rightclick at the first byte and choose Hardware Breakpoint
--> On acces. Now, if it doesnt already break, do something that
changes your HP or MP. It will probly break. Now in the Code Window,
look 1 line above. You should see something like this -->
MOV EAX, DWORD PTR DS:[ebx+50].
0x50 is than the OFFSET and EBX will be the pointer.
Now you can simply search for the address EBX contains in Cheat engine
and should find the Base address (remind the address in EBX is in HEX).
3:
This requires reversing knowledge. To find the encryption routine
you can do the following:
While the game and OllyDBG is running choose plugins -->
command line --> command line. Than in the new window
that pops up, write BP Send. This will place a breakpoint
on Send. If it breaks, remove the breakpoint with a doubleclick
on the red marked line. Than, do a rightclick at the first line at
the system stack (the window downright) and choose follow in
dissambler. After you did that you are just 1 line under the call
to the Send function. Click run (F3) and take a look at the Calls
above. And place breakpoints on them (doubleclick the line or
press F2) three calls above should be fine. The function start
before looks like this:
Code:
/$ 55 PUSH EBP
|. 8BEC MOV EBP,ESP
If you see this, you dont have to place more breakpoints above.
Now switch to the game and type something i the Chat (if it breaks
before, just click RUN). Now when its breaking at the calls, take a look
at the register (eax ebx etc) rightclick them and choose follow in dump.
You should than see at one of the calls, your packet in the hexdump.
And you should also see than the message in ASCII. If you see it,
step over the call and check if the Packetdata is different now.
If it is, the encryption routine SHOULD be inside the call.
Now you could step into next time you break there, and take a look
at the Code. You may find the place where it changes the packet
data while stepping and taking a look at the Dump. To know how
its currently encrypting, it requires Assembler and reversing knowledge.