Ich habe hier mal schnell meinen teamspeak multiple instance patch etwas modifiziert, um die Clientplatform zu verändern.
Die maximale größe für die Clientplatform schwankt zwischen 10 (Win Vista) und 14 (Win XP) Zeichen.
Download:
Code:
http://rapidshare.com/files/130908197/ts2cpp.rar.html
Quellcode:
Code:
/*
Win32 TeamSpeak 2 Client Platform Patch
by BlackBerry
This will change your clientplatform to
any platform of your choice.
*/
#include <cstdio>
size_t strlen(const char*);
void* memcpy(void*, const void*, size_t);
void exit(int);
void putError(const char*);
FILE* fp;
char data[187];
char client[20];
int main()
{
printf("Win32 TeamSpeak 2 Client Platform Patch\n"
" by BlackBerry\n\n");
if ((fp = fopen("TeamSpeak.exe", "rb+")) == NULL)
putError("- Could not find/open TeamSpeak.exe\n");
char tscp[34] = "Windows 95";
char buffer;
int x = -1;
int pos = -11;
while(!feof(fp))
{
if (x == strlen(tscp))
break;
fread(&buffer, 1, sizeof(buffer), fp);
if (buffer != tscp[++x])
x = -1;
}
if (feof(fp))
putError("- No clientpatform found (already patched?)\n");
pos += ftell(fp);
if (fseek(fp, pos, SEEK_SET) != 0)
putError("- Could not set writing position\n");
printf("- Enter new clientplatform\n"
" Win Vista 10 chars max\n"
" Win XP 14 chars max\n"
" > ");
scanf("%s", &client);
/* BEGIN OF PACKAGE */
memcpy(&data[0], &client, 10);
data[11] = 0x0e;
memcpy(&data[12], &client, 14);
data[27] = 0x0f;
memcpy(&data[28], &client, 14);
data[43] = 0x0a;
memcpy(&data[44], &client, 14);
data[55] = 0x0f;
memcpy(&data[56], &client, 10);
data[71] = 0x0d;
memcpy(&data[72], &client, 14);
data[87] = 0x0a;
memcpy(&data[88], &client, 14);
data[99] = 0x0d;
memcpy(&data[100], &client, 10);
data[115] = 0x0f;
memcpy(&data[116], &client, 14);
data[131] = 0x0c;
memcpy(&data[132], &client, 14);
data[147] = 0x0c;
memcpy(&data[148], &client, 14);
data[163] = 0x0a;
memcpy(&data[164], &client, 14);
data[175] = 0x0a;
memcpy(&data[176], &client, 10);
data[187] = 0x00;
/* END OF PACKAGE */
fwrite(data, 1, 187, fp);
fclose(fp);
printf(" [DONE] TeamSpeak.exe");
return 0;
}
void putError(const char* errmsg)
{
printf("%s", errmsg);
fclose(fp);
exit(0);
}
(wie mcwickedsick schon gesagt hat, geht das auch mit einem Hex-Editor, aber so geht es schneller und ändert die Platform für alle enthaltenen Betriebssysteme, was die Arbeit erheblich erleichtert)