Could need some help from MrMedic or someone other experienced. I am currently looking into updating the C# ESP by Frank. I know how to program (5 Years of Java Experience, 2 Years of C#) but I am new to C++ and especially assembler and RAM stuff. Right now I am reading tutorials and I guess I understand everything related to pointers etc.
However in his code he injects something into the assembler code of warband:
decimal number = Convert.ToDecimal(0x02C85AE4);
decimal sum = Convert.ToDecimal(0x14124);
IntPtr address = (IntPtr)(0x49E45A);
IntPtr address2 = (IntPtr)(0x6082F2);
try
{
mem.WriteInt((int)sum, 0);
MemorySharp sharp = new MemorySharp(Process.GetProcessesByName("mb_warband")[0]);
#region ----ASM----
sharp.Assembly.Inject(new[] { "JMP " + Convert.ToString(address2), }, address);
sharp.Assembly.Inject(
new[]{
"mov ["+number+"],esi",
"PUSHFD",
"PUSHAD",
"PUSH EAX",
"mov EAX,["+sum+"]",
"CMP EAX,3200",
"JE "+Convert.ToDecimal(0x608323),
"add EAX,16",
"mov EDX,["+number+"]",
"mov ["+pointer+"+EAX],EDX",
"mov ["+sum+"],EAX",
"POP EAX",
"POPAD",
"POPFD",
"JMP "+Convert.ToString(address+0x06),
"mov ebp,0",
"mov ["+sum+"],ebp",
"mov eax,["+sum+"]",
"JMP "+Convert.ToDecimal(0x608307),
},
address2);
#endregion
}
catch (Exception e)
{
mem.CloseHandle();
MessageBox.Show("Memory injection failed exiting programming please consult the programer, yes me Frank. Also I am going to print out the error message not like I am going to understand it");
MessageBox.Show(e.Message);
Environment.Exit(0);
}
I don't quite understand why he does it and where it is injected (I guess assembler offsets changed)?
And I will be watching some more tutorials and reading stuff however I would be pleased if you could tell me how to easily find the start of the list of all players
Oh and I also have the static address for the main player team: mb_warband.exe+9E800C however when I subtract the old offset of 0x7b4 I do not end up at the main player base, at least structure dissect does not show it. What am I doing wrong?