Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 04:46

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



update thiscall function

Discussion on update thiscall function within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Oct 2018
Posts: 1
Received Thanks: 0
Exclamation update thiscall function

I found this code online

I have this code and it was working but it stopped after updating the game and I try to run it again but there are things I did not understand

Code:
#include <Windows.h>
#include <iostream>
 
#define _CRT_SECURE_NO_WARNINGS
 
using namespace std;
 
 
LPVOID m_lpPickDropDword = 0x0;
 
 
struct sAABuffer_Helper
{
	DWORD SecondDword;
	BYTE Filler[0x200];
};
 
struct sAABuffer
{ 
	DWORD FirstDword;
	BYTE Filler[0x400];	// NOT ACTUALLY A FILLER, ITS THE SERIALIZED MSG BUFFER.
	sAABuffer_Helper* pBuffer;
 
	sAABuffer(DWORD First, DWORD Second)
	{
		FirstDword = First;
		pBuffer = new sAABuffer_Helper{};
		memset(Filler, 0, 0x400);
 
		pBuffer->SecondDword = Second;
		memset(pBuffer->Filler, 0, 0x200);
	}
 
	~sAABuffer()
	{
		delete pBuffer;
	}
 
};
 
 
 
typedef bool(__thiscall* p_AAFunction)(DWORD __this, DWORD __Two, DWORD __PlayerID, DWORD __MobID, DWORD __PlayerX, DWORD __PlayerY, DWORD __Zero);
 
 
 
p_AAFunction  Org_AAPacketFunction;
 
 
 
sAABuffer* m_AABuffer = 0x0;
 
 
 
DWORD WINAPI MainThread(LPVOID param)
{
 
 
 
	uintptr_t moduleBase = (uintptr_t)GetModuleHandle("gameco.exe");
	Org_AAPacketFunction = (p_AAFunction)(moduleBase + 0x9C952D);
 
	
	AllocConsole();
	FILE* f;
	freopen_s(&f, "CONOUT$", "w", stdout);
 
	
	while (true)
	{
		Sleep(30);
		if (GetAsyncKeyState(VK_ESCAPE)) {
 
			Sleep(2000);
			DWORD ecx1 = 0xF61A74;
			DWORD ecx2 = 0xF6A1EC;
			m_AABuffer = new sAABuffer((DWORD)ecx1, (DWORD)ecx2);
			auto AAPacketBuffer = reinterpret_cast<DWORD>(m_AABuffer);
			Org_AAPacketFunction(AAPacketBuffer, 2, 0x28, 0xDD, 552, 382, 0);
			
			
 
		}
 
		
	}
	fclose(f);
	FreeConsole();
	FreeLibraryAndExitThread((HMODULE)param, 0);
 
 
 
	return 0;
 
 
	
 
 
 
 
 
}
BOOL WINAPI DllMain(HINSTANCE hModule, DWORD dwReason, LPVOID lpReserved) {
	switch (dwReason) {
	case DLL_PROCESS_ATTACH:
		CreateThread(0, 0, MainThread, hModule, 0, 0);
		break;
	}
 
	return TRUE;
}
assembly
Code:
009370C | 57                    | push edi                          //0                                                                                                                                                                    |
009370E | FF75 EC               | push dword ptr ss:[ebp-14]        //y                                                                          
009370E | 8D8D C0FBFFFF         | lea ecx,dword ptr ss:[ebp-440]                                                                     
009370F | FF75 E8               | push dword ptr ss:[ebp-18]        // x                                                               
009370F | FFB6 28030000         | push dword ptr ds:[esi+328]       // mopid                                                                   
009370F | 50                    | push eax                          //player id                                                                      
009370F | 6A 02                 | push 2                            //2                                                                     
009370F | E8 5E760500           | call <gameco.sub_98E761>
assembly function
Code:
0098E761 | 55                    | push ebp                                                                                               |
0098E76 | 8BEC                  | mov ebp,esp                                                                                            |
0098E76 | 53                    | push ebx                                                                                               |
0098E76 | 8B5D 0C               | mov ebx,dword ptr ss:[ebp+C]                                                                           |
0098E76 | 56                    | push esi                                                                                               |
0098E76 | 57                    | push edi                                                                                               |
0098E76 | 8BF1                  | mov esi,ecx                     // ecx =0018F5A0 = 0xF61A74         
0098E76 | 85DB                  | test ebx,ebx                                                                                           |
0098E76 | 0F84 BA000000         | je gameco.98E82E                                                                                     |
0098E77 | 8B7D 10               | mov edi,dword ptr ss:[ebp+10]                                                                          |
0098E77 | 85FF                  | test edi,edi                                                                                           |
0098E77 | 0F84 AF000000         | je gameco.98E82E                                                                                     |
0098E77 | E8 9870F4FF           | call <JMP.&timeGetTime>                                                                                |
0098E78 | 8B8E 04040000         | mov ecx,dword ptr ds:[esi+404]                                                                         |
0098E78 | 8349 20 01            | or dword ptr ds:[ecx+20],1                                                                             |
0098E78 | 8941 28               | mov dword ptr ds:[ecx+28],eax                                                                          |
0098E79 | 8B86 04040000         | mov eax,dword ptr ds:[esi+404]                                                                         |
0098E79 | 8348 20 08            | or dword ptr ds:[eax+20],8                                                                             |
0098E79 | 0FB74D 14             | movzx ecx,word ptr ss:[ebp+14]                                                                         |
0098E79 | 8958 34               | mov dword ptr ds:[eax+34],ebx                                                                          |
0098E7A | 8B86 04040000         | mov eax,dword ptr ds:[esi+404]                                                                         |
0098E7A | 8348 20 10            | or dword ptr ds:[eax+20],10                                                                            |
0098E7A | 8978 38               | mov dword ptr ds:[eax+38],edi                                                                          |
0098E7A | 8B86 04040000         | mov eax,dword ptr ds:[esi+404]                                                                         |
0098E7B | 8348 20 40            | or dword ptr ds:[eax+20],40                                                                            |
0098E7B | 8948 40               | mov dword ptr ds:[eax+40],ecx                                                                          |
0098E7B | 8B86 04040000         | mov eax,dword ptr ds:[esi+404]                                                                         |
0098E7C | 8148 20 80000000      | or dword ptr ds:[eax+20],80                                                                            |
0098E7C | 0FB74D 18             | movzx ecx,word ptr ss:[ebp+18]                                                                         |
0098E7C | 8948 44               | mov dword ptr ds:[eax+44],ecx                                                                          |
0098E7D | 8B86 04040000         | mov eax,dword ptr ds:[esi+404]                                                                         |
0098E7D | 8148 20 00100000      | or dword ptr ds:[eax+20],1000                                                                          |
0098E7D | 0FB74D 08             | movzx ecx,word ptr ss:[ebp+8]                                                                          |
0098E7E | 8948 58               | mov dword ptr ds:[eax+58],ecx                                                                          |
0098E7E | 8B86 04040000         | mov eax,dword ptr ds:[esi+404]                                                                         |
0098E7E | 8B4D 1C               | mov ecx,dword ptr ss:[ebp+1C]                                                                          |
0098E7E | 8148 20 00400000      | or dword ptr ds:[eax+20],4000                                                                          |
0098E7F | 8948 60               | mov dword ptr ds:[eax+60],ecx                                                                          |
0098E7F | 8B8E 04040000         | mov ecx,dword ptr ds:[esi+404]    //   ecx = 0018F9A8 = 0xF6A1EC                                                            
0098E7F | 68 FC030000           | push 3FC                                                                                               |
0098E80 | 8D46 08               | lea eax,dword ptr ds:[esi+8]                                                                           |
0098E80 | 50                    | push eax                                                                                               |
0098E80 | E8 05E13B00           | call <gameco.sub_D4C910>           // thiscall function                                                                       |
0098E80 | 84C0                  | test al,al                                                                                             |
0098E80 | 74 1F                 | je gameco.98E82E                                                                                     |
0098E80 | 8B8E 04040000         | mov ecx,dword ptr ds:[esi+404]                                                                         |
0098E81 | B8 57080000           | mov eax,857                                                                                            |
0098E81 | 66:8946 06            | mov word ptr ds:[esi+6],ax                                                                             |
0098E81 | 8B01                  | mov eax,dword ptr ds:[ecx]                                                                             |
0098E82 | FF50 20               | call dword ptr ds:[eax+20]                                                                             |
0098E82 | 83C0 04               | add eax,4                                                                                              |
0098E82 | 66:8946 04            | mov word ptr ds:[esi+4],ax                                                                             |
0098E82 | B0 01                 | mov al,1                                                                                               |
0098E82 | EB 02                 | jmp gameco.98E830                                                                                    |
0098E82 | 32C0                  | xor al,al                                                                                              |
0098E83 | 5F                    | pop edi                                                                                                |
0098E83 | 5E                    | pop esi                                                                                                |
0098E83 | 5B                    | pop ebx                                                                                                |
0098E83 | 5D                    | pop ebp                                                                                                |
0098E83 | C2 1800               | ret 18
ida pro
Code:
char __thiscall sub_98E761(
        int this,
        unsigned __int16 a2,
        int a3,
        int a4,
        unsigned __int16 a5,
        unsigned __int16 a6,
        int a7)
{
  DWORD Time; // eax
  int v9; // ecx
  int v10; // eax
  int v11; // eax
  int v12; // eax
  int v13; // eax
  int v14; // eax
  int v15; // eax
  int v16; // ecx
 
  if ( !a3 )
    return 0;
  if ( !a4 )
    return 0;
  Time = timeGetTime();
  v9 = *(_DWORD *)(this + 1028);
  *(_DWORD *)(v9 + 32) |= 1u;
  *(_DWORD *)(v9 + 40) = Time;
  v10 = *(_DWORD *)(this + 1028);
  *(_DWORD *)(v10 + 32) |= 8u;
  *(_DWORD *)(v10 + 52) = a3;
  v11 = *(_DWORD *)(this + 1028);
  *(_DWORD *)(v11 + 32) |= 0x10u;
  *(_DWORD *)(v11 + 56) = a4;
  v12 = *(_DWORD *)(this + 1028);
  *(_DWORD *)(v12 + 32) |= 0x40u;
  *(_DWORD *)(v12 + 64) = a5;
  v13 = *(_DWORD *)(this + 1028);
  *(_DWORD *)(v13 + 32) |= 0x80u;
  *(_DWORD *)(v13 + 68) = a6;
  v14 = *(_DWORD *)(this + 1028);
  *(_DWORD *)(v14 + 32) |= 0x1000u;
  *(_DWORD *)(v14 + 88) = a2;
  v15 = *(_DWORD *)(this + 1028);
  *(_DWORD *)(v15 + 32) |= 0x4000u;
  *(_DWORD *)(v15 + 96) = a7;
  if ( !(unsigned __int8)sub_D4C910(this + 8, 1020) )
    return 0;
  v16 = *(_DWORD *)(this + 1028);
  *(_WORD *)(this + 6) = 2135;
  *(_WORD *)(this + 4) = (*(int (__thiscall **)(int))(*(_DWORD *)v16 + 32))(v16) + 4;
  return 1;
}
this is function after update
Code:
00B1773 | 55                    | push ebp                                                                                               |
00B1773 | 8BEC                  | mov ebp,esp                                                                                            |
00B1773 | 53                    | push ebx                                                                                               |
00B1773 | 8B5D 0C               | mov ebx,dword ptr ss:[ebp+C]                                                                           |
00B1773 | 56                    | push esi                                                                                               |
00B1773 | 8BF1                  | mov esi,ecx                                                                                            |
00B1773 | 57                    | push edi                                                                                               |
00B1774 | 85DB                  | test ebx,ebx                                                                                           |
00B1774 | 0F84 86000000         | je gameco.B177CE                                                                                      |
00B1774 | 8B7D 10               | mov edi,dword ptr ss:[ebp+10]                                                                          |
00B1774 | 85FF                  | test edi,edi                                                                                           |
00B1774 | 74 7F                 | je gameco.B177CE                                                                                      |
00B1774 | E8 FA72EEFF           | call <JMP.&timeGetTime>                                                                                |
00B1775 | 8986 2C040000         | mov dword ptr ds:[esi+42C],eax                                                                         |
00B1775 | 8D8E 08040000         | lea ecx,dword ptr ds:[esi+408]                                                                         |
00B1776 | 0FB745 14             | movzx eax,word ptr ss:[ebp+14]                                                                         |
00B1776 | 899E 38040000         | mov dword ptr ds:[esi+438],ebx                                                                         |
00B1776 | 89BE 3C040000         | mov dword ptr ds:[esi+43C],edi                                                                         |
00B1777 | 8986 44040000         | mov dword ptr ds:[esi+444],eax                                                                         |
00B1777 | 0FB745 18             | movzx eax,word ptr ss:[ebp+18]                                                                         |
00B1777 | 8986 48040000         | mov dword ptr ds:[esi+448],eax                                                                         |
00B1778 | 0FB745 08             | movzx eax,word ptr ss:[ebp+8]                                                                          |
00B1778 | 8986 5C040000         | mov dword ptr ds:[esi+45C],eax                                                                         |
00B1778 | 818E 24040000 D950000 | or dword ptr ds:[esi+424],50D9                                                                         |
00B1779 | 8B45 1C               | mov eax,dword ptr ss:[ebp+1C]                                                                          |
00B1779 | 8986 64040000         | mov dword ptr ds:[esi+464],eax                                                                         |
00B1779 | 8D46 08               | lea eax,dword ptr ds:[esi+8]                                                                           |
00B177A | 68 FC030000           | push 3FC                                                                                               |
00B177A | 50                    | push eax                                                                                               |
00B177A | E8 55E32D00           | call gameco.DF5B00                                                                                    |
00B177A | 84C0                  | test al,al                                                                                             |
00B177A | 74 1F                 | je gameco.B177CE                                                                                      |
00B177A | B8 57080000           | mov eax,857                                                                                            |
00B177B | 8D8E 08040000         | lea ecx,dword ptr ds:[esi+408]                                                                         |
00B177B | 66:8946 06            | mov word ptr ds:[esi+6],ax                                                                             |
00B177B | 8B01                  | mov eax,dword ptr ds:[ecx]                                                                             |
00B177C | FF50 20               | call dword ptr ds:[eax+20]                                                                             |
00B177C | 83C0 04               | add eax,4                                                                                              |
00B177C | 66:8946 04            | mov word ptr ds:[esi+4],ax                                                                             |
00B177C | B0 01                 | mov al,1                                                                                               |
00B177C | EB 02                 | jmp gameco.B177D0                                                                                     |
00B177C | 32C0                  | xor al,al                                                                                              |
00B177D | 5F                    | pop edi                                                                                                |
00B177D | 5E                    | pop esi                                                                                                |
00B177D | 5B                    | pop ebx                                                                                                |
00B177D | 5D                    | pop ebp                                                                                                |
00B177D | C2 1800               | ret 18                                                                                                 |


Please, I do not understand this struct and why it was used like this
Code:
struct sAABuffer_Helper
{
	DWORD SecondDword;
	BYTE Filler[0x200];
};
 
struct sAABuffer
{ 
	DWORD FirstDword;
	BYTE Filler[0x400];	// NOT ACTUALLY A FILLER, ITS THE SERIALIZED MSG BUFFER.
	sAABuffer_Helper* pBuffer;
 
	sAABuffer(DWORD First, DWORD Second)
	{
		FirstDword = First;
		pBuffer = new sAABuffer_Helper{};
		memset(Filler, 0, 0x400);
 
		pBuffer->SecondDword = Second;
		memset(pBuffer->Filler, 0, 0x200);
	}
 
	~sAABuffer()
	{
		delete pBuffer;
	}
 
};
elmasryftw is offline  
Old 02/07/2023, 09:26   #2
 
elite*gold: 0
Join Date: Dec 2022
Posts: 14
Received Thanks: 0
This is a code for a DLL injection into a game named "gameco.exe". The code creates a console window and opens a file stream to redirect the console output to the created console.
The code waits for the user to press the "ESCAPE" key and when that happens, it creates an instance of the sAABuffer struct, sets its parameters and calls the Org_AAPacketFunction with that struct as a parameter.
TonyFinch09 is offline  
Reply


Similar Threads Similar Threads
[Release]Aion Launcher with Update function
05/04/2018 - Aion Guides & Strategies - 8 Replies
Hello, Ich Release hier einen Launcher, der eine Updatefunktion hat. Was ihr dafür braucht ist ein Webhoster Z.b Bplaced Und Net framework 4.0 ( Ist im Packet enthalten ) Ich weise auf einen Bug hin : Wenn ihr alles richtig gemacht habt, dann hängt der beim lesen der files.txt. (keine rückmeldung) nach ein paar Sekunden hat er die Sachen runtergeladen und Laggt nicht mehr.
std::function of a function returning an std::function
11/11/2013 - C/C++ - 19 Replies
Nun muss ich nach langer Zeit auch mal wieder einen Thread erstellen, weil mir Google nicht mehr weiterhelfen kann. Ich verzweifle an Folgendem Vorhaben: #include <Windows.h> #include <string> #include <iostream> using namespace std;
Running Function 2 after Function 1 finished
09/15/2013 - AutoIt - 3 Replies
Hey, its me again. Im stuck on a problem since yesterday and as much as i hate to ask for help, i really dont know what else to try. I want Function 2 to run after Function 1 has finished. I tried GuiCtrlSetOnEvent and MsgLoop, but i dont really understand it. I tried to read tutorials but they didnt help at all. The line that are underline is what im talking about. I want gamestart() to run first and when its finished, i want iniviteteam() to run. #AutoIt3Wrapper_UseX64=n...
after-update! arexon v2 puplic hack with vip function
02/26/2011 - WarRock Hacks, Bots, Cheats & Exploits - 3 Replies
http://img692.imageshack.us/img692/1224/skillbotvi phack.png DOWNLOAD: arexon v2.zip Virustotal: VirusTotal - Free Online Virus, Malware and URL Scanner
[VIP-function] ToxicSYS [VIP-function]
08/14/2010 - WarRock Hacks, Bots, Cheats & Exploits - 1 Replies
heeeey E-pvpers :pimp: this is a new hack by TSYS Status : UNDETECTED Functions (VIDEO) : YouTube - WarRock - Bikini event VIP hack



All times are GMT +1. The time now is 04:46.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.