This is my video tutorial on calling conventions in C++. This tutorial is divided into 4 parts, covering cdecl, stdcall, fastcall and thiscall.
Calling Conventions – Part 1 – Introduction
Calling Conventions – Part 2 – cdecl and stdcall
Calling Conventions – Part 3 – fastcall
Calling Conventions – Part 4 – thiscall
Enjoy.
Thank you for sharing your knowledge with others. I definitely learned quite a bit by viewing your Videos. Cheers.
Thanks for the positive feedback 🙂
Are you going to make a part 5 for the x64 calling convention?
I never even thought about that. I never really reversed much in x64 so I cannot say much about it. Maybe in the future but not for now.
I have a few questions. The first two are about your tut how to make a trainer in C#
1. how can I make more than one button that writes to adresses? Everything I’ve tried wont work. This is how i have it set up.
public partial class trainer : Form
{
VAMemory VAM;
public trainer()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
VAM = new VAMemory(“haloce”);
VAM.WriteByte((IntPtr)0X40067C04, byte.Parse(textBox1.Text));
}
private void button1_Click(object sender, EventArgs e)
{
VAM.WriteByte((IntPtr)0X40071F70, byte.Parse(textBox1.Text));
}
}
}
2. How can I write bigger size values. everytime I try and put a value of over 255 it says OverFlowException was handled, Value was either too large or too small for an unsigned byte.
3. can you post a code in c++ that injects a Dll into a process. Everyone I try just doesn’t work.
I hope you can help me. I know that I am new to programming and I don’t know what i am doing, but that is why I’m asking for help.
1. I don’t want to sound rude but yes, you clearly don’t know what you are doing. You should really learn the basics first before starting to copy/paste code. If you are desperate to write a trainer quickly, you could try to use Trainer Making Kit, or Cheat Engine.
2. A byte has the size of 256. 1 byte = 8 bits.
3. Don’t write the code yourself, use injectors like Injec-Tor.
It’s better to learn how to do it without someone else’s API. Odds are that API isn’t in any other language so you are pretty much learning how to use a pile of turd, it won’t help you in the long run. Where as if you learn using window’s API you can now read/write process memory in VB, C# and C++.
Thanks!
Very good tutorial, exactly what i was looking for, theres not a lot of good step by step tutorials on how to actually do this kind of stuff so i am very glad you are doing these.
I definitely learned more about assembly and programming, thanks.
Why does windows API use __stdcall instead of __cdecl? is __stdcall better?
I don’t know why they did it but it makes no sense to make a function cdecl if the parameter list is not variable. It saves code because the stack cleanup code only appears inside the API and not every time it is called.