Solved Tibia! Function's arguments in asm (registers)

Hexui Undetected CSGO Cheats Sinkicheat PUBG Cheat


Aug 12, 2016
Hey buddies,

i have one trouble with code.
i've made a pointer to a function to call it whenever i want.

typedef void( __fastcall  *PlayerSay )( char* );
PlayerSay __playerSay = (PlayerSay)(0x2DAE80);

public: void say(char* arg) {
        asm( "mov %esi, [ebp+8] \n\
              mov %eax, [ebp+8]");
but there is a problem. the registers im calling are different than registers when game is calling it.
take a look:
EAX 037ECC80 ASCII "Yo dude xD"
ECX 00A4E730
EDX 00000000
EBX 037EC990
ESP 00A4E694
EBP 00A4EE38
ESI 037ECC80 ASCII "Yo dude xD"
EDI 00000001
EIP 0013F452 Telania.0013F452
I CALL FUNCTION (not working)
EAX 002DAE80 Telania.002DAE80
ECX 67D8303F ASCII "Fuck my hax"
EDX 00000000
EBX 00000000
EBP 02A2FD00
ESI 67D8303F ASCII "Fuck my hax"
EDI 00000000
EIP 002DAE81 Telania.002DAE81
i know that __fastcall is changing EAX into " 002DAE80 --- Telania.002DAE80" .
so what can i change register EAX ?

and in:
public: void say(char* arg) {
how arguments go to the registers?
is that:
1arg go to EAX
2arg go to ECX
3arg go to EDX etc? is there any order?

ty for halp!
Attention! Before you post:

Read the How to Ask Questions Guide
99% of questions are answered in the Beginner's Guide, do it before asking a question.

No Hack Requests. Post in the correct section.  Search the forum first. Read the rules.

How to make a good post:

  • Fill out the form correctly
  • Tell us the game name & coding language
  • Post everything we need to know to help you
  • Ask specific questions, be descriptive
  • Post errors, line numbers & screenshots
  • Post code snippets using code tags
  • If it's a large project, zip it up and attach it

If you do not comply, your post may be deleted.  We want to help, please make a good post and we will do our best to help you.

Community Mods