#include <windows.h>
#include <sigscan.h>
struct run {
unsigned int arg_c;
unsigned int run_c;
char line[512];
char pars[512];
unsigned int args[12];
};
typedef void (__cdecl *ConCommandSend_proto)(run*, bool);
void proceed(run& com) {
char* write = (char*)&com.pars;
unsigned int offset = 0;
unsigned int count = 0;
for(char* k = (char*)&com.line;;k++) {
offset++;
if(*k == ' ')
{
*write++ = 0;
com.args[count++] = (unsigned int)write - offset;
offset = 0;
}else if(*k == 0) {
*write++ = 0;
com.args[count++] = (unsigned int)write - offset;
break;
}else
*write++ = *k;
}
if(count == 0)
com.args[0] = (unsigned int)&com.line;
com.arg_c = count;
}
DWORD WINAPI Thread(LPVOID);
BOOL APIENTRY DllMain(HINSTANCE hInst, DWORD dwReason, LPVOID lp) {
if(dwReason == DLL_PROCESS_ATTACH)
CreateThread(NULL, NULL, Thread, NULL, NULL, NULL);
return TRUE;
}
DWORD WINAPI Thread(LPVOID) {
ConCommandSend_proto ConCommandSendToSV = (ConCommandSend_proto)utils::memory::FindSig(GetModuleHandleA("engine.dll"), "\x55\x8b\xec\x8b\x0d????\x81\xec????\x8b\x01\x8b\x40\x18\xff\xd0\x84\xc0", 0xFFFFFF, 0);
run com;
com.run_c = 4;
sprintf_s(com.line, 512, "say i\t\tam\t\t\tfucking\t\t\t\tgay");
proceed(com);
if(ConCommandSendToSV)
ConCommandSendToSV(&com, true);
return 0;
}