Das wird den "teamspeak_multipleInstanceBlocker" entfernen, welcher ein mehrfaches starten des ts clients verhindert.

Der Quellcode sollte unter jedem C++ compiler kompellierbar sein (getestet: g++ mit Dev-C++).
Das Programm hat wunderbar auf der Version 2.0.32.60 funktioniert, sollte es aber auch auf älteren Versionen, bzw. der neuren (sofern mit UPX entpackt) tun.

Quellcode:
Code:
/*
 Win32 TeamSpeak 2 Multiple Instance Patch
                             by BlackBerry
 In the TeamSpeak.exe you will find something called
 teamspeak_multipleInstanceBlocker.
 For example in version 2.0.32.60 this functionname
 begins after 1062876 charcters.
 We simply overwrite it with NULL-bytes.
 Note: This can also be done with a simple Hex-Editor.
 
 The final size of this program is about 20 KB.
*/

#include <cstdio>

size_t strlen(const char*);
void exit(int);
void putError(const char*);

FILE* fp;
char data[31];

int main()
{
	printf("Win32 TeamSpeak 2 Multiple Instance Patch\n"
	       "                            by BlackBerry\n\n");
	if ((fp = fopen("TeamSpeak.exe", "rb+")) == NULL)
		putError("- Could not find/open TeamSpeak.exe\n");
	char tsmib[34] = "teamspeak_multipleInstanceBlocker";
	char buffer;
	int x = -1;
	int pos = -34;
	while(!feof(fp))
	{
		if (x == strlen(tsmib))
			break;
		fread(&buffer, 1, sizeof(buffer), fp);
		if (buffer != tsmib[++x])
			x = -1;
	}
	if (feof(fp))
    	putError("- No multiple instance blocker found (already patched?)\n");
	pos += ftell(fp);
    if (fseek(fp, pos, SEEK_SET) != 0)
    	putError("- Could not set writing position\n");
	for(int i=0;i<31;i++)
		data[i] = 0;
    fwrite(data, 1, 31, fp);
	fclose(fp);
	printf("  [DONE] TeamSpeak.exe");
	return 0;
}

void putError(const char* errmsg)
{
	printf("%s", errmsg);
	fclose(fp);
	exit(0);
}
Quellcode + .EXE (wer der .EXE nicht traut -> vom Quellcode komellieren):
Code:
http://rapidshare.com/files/130677037/ts2mip.rar.html 5.63 KB


Hoffe das Programm ist nützlich.