Hi guys,
:lol:
First some propaganda:
If you are interested in a Custom Kick tool that works on 1.22, please check
Visual Custom Kick (
www.xorebx.com) it also allows you to completely cut the game startdelay and it has many other things like an autorefresh....
Now the serious part:
Quote:
####################################
### SimpleWc3Hack1.0 by sd333221 ###
####################################
Type:
Maphack
Date:
07.07.2008
Detection Status:
Ladder / GameGuard / DotA-Client proof
at 07.07.2008 !!BUT HIGHLY DETECTABLE!!
about:
Simple offset hacks to share the offsets
with you.
HowTo:
Just run it, it will patch your wc3
Features: Reveal the minimap + map completely
Reveal units
Reveal pings
Reveal invisible units
Clickable units
Reveal illusions
Warning:
I don't take any guarantee that this doesn't
get you banned, you use it on your own risk!
This will get you banned in a few days as it
is a simple offset based hack.
Note:
If you don't trust the file, compile it yourself
(source included)
Changelog:
V 1.0
+First release
####################################
### EOF ###
####################################
|
One of the first public 1.22 MHs :opps:.
Support in this thread at bwhacks.com only!
Note for people who want to copy this to their own page:
This is an exclusive bwhacks.com release
You may freely copy this BUT you have to give credits and to give
reference to this thread at bwhacks.com!
Small screeny of what you can expect:
Here a screenshot of me, using it on battlenet:
Actually I decided to make a simple offsethack now, therefore it is of course opensource:
Code:
//SimpleWc3Hack for Warcraft 3 Patch 1.22...
#include <windows.h>
#include <Tlhelp32.h>
#include <iostream>
using namespace std;
DWORD GetPIDForProcess (char* process);
void EnableDebugPriv();
DWORD GetDLLBase(char* DllName, DWORD tPid);
#define PATCH(i,w,l) WriteProcessMemory(hProc,reinterpret_cast<LPVOID>(gameBase+i),w,l,&dSize)
void main()
{
cout << "SimpleWc3Hack v1.0 by sd333221 loaded!" << endl << endl;
cout << "Searching Wc3..." << endl;
if(GetPIDForProcess("WAR3.EXE") == 0)
{
cout << "Warcraft 3 was not found..." << endl;
system("Pause");
exit(0);
}
else
{
cout << "Getting debug privileges..." << endl;
EnableDebugPriv();
cout << "Opening Warcraft 3 Process..." << endl;
HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, false, GetPIDForProcess("WAR3.EXE"));
if(hProc)
{
cout << "Process opened... Patching" << endl;
DWORD gameBase = GetDLLBase("Game.dll",GetPIDForProcess("WAR3.EXE"));
DWORD dSize = 0;
PATCH(0x3A04AB,"\x90\x90",2); //Patch 6F3A04AB to nop nop :-)
if(dSize == 0)
{
cout << "Failed to patch showunitsingame" << endl;
}
PATCH(0x36087c,"\x00",1);
if(dSize == 0)
{
cout << "Failed to patch showunitsmap" << endl;
}
PATCH(0x28464C,"\x90\x90",2);
if(dSize == 0)
{
cout << "Failed to patch clickableunits" << endl;
}
PATCH(0x284662,"\xEB\x29",2);
if(dSize == 0)
{
cout << "Failed to patch clickableunits (2nd patch)" << endl;
}
PATCH(0x281F1C,"\x40\xc3",2);
if(dSize == 0)
{
cout << "Failed to patch revealillu" << endl;
}
PATCH(0x73B949,"\xB2\x00\x90\x90\x90\x90",6);
if(dSize == 0)
{
cout << "Failed to patch removefogingame" << endl;
}
PATCH(0x42F836,"\x3B\xC0\x0F\x85\xC0\x00\x00\x00\x8D\x8B\xF0\x00\x00\x00\xE8\x97\x3C\x03\x00\x3B\xC0\x0F\x85\xAD\x00\x00\x00",27);
if(dSize == 0)
{
cout << "Failed to patch pingsignal" << endl;
}
PATCH(0x398E01,"\x90\x90\x90\x90\x90\x33\xc0\x40",8);
if(dSize == 0)
{
cout << "Failed to patch showinvisibleingame" << endl;
}
PATCH(0x360C91,"\x3B\xC0\x0F\x85\x30\x04\x00\x00",8);
if(dSize == 0)
{
cout << "Failed to patch showinvisiblemap" << endl;
}
PATCH(0x3558FE,"\x90\x90\x90",3);
if(dSize == 0)
{
cout << "Failed to patch showinvisiblemap" << endl;
}
CloseHandle(hProc);
cout << "Done, goodbye!" << endl;
system("Pause");
exit(1);
}
else
{
cout << "Warcraft 3 could not be opened..." << endl;
system("Pause");
exit(0);
}
}
}
//Queries the ProcessId of a certain process
DWORD GetPIDForProcess (char* process)
{
BOOL working=0;
PROCESSENTRY32 lppe= {0};
DWORD targetPid=0;
HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS ,0);
if (hSnapshot)
{
lppe.dwSize=sizeof(lppe);
working=Process32First(hSnapshot,&lppe);
while (working)
{
if(_stricmp(lppe.szExeFile,process)==0)
{
targetPid=lppe.th32ProcessID;
break;
}
working=Process32Next(hSnapshot,&lppe);
}
}
CloseHandle( hSnapshot );
return targetPid;
}
//Enables to open other processes
void EnableDebugPriv()
{
HANDLE hToken;
LUID sedebugnameValue;
TOKEN_PRIVILEGES tkp;
if ( ! OpenProcessToken( GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) )
return;
if ( ! LookupPrivilegeValue( NULL, SE_DEBUG_NAME, &sedebugnameValue ) ){
CloseHandle( hToken );
return;
}
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = sedebugnameValue;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if ( ! AdjustTokenPrivileges( hToken, FALSE, &tkp, sizeof tkp, NULL, NULL ) )
CloseHandle( hToken );
}
//Gets the base of our dll
DWORD GetDLLBase(char* DllName, DWORD tPid)
{
HANDLE snapMod;
MODULEENTRY32 me32;
if (tPid == 0) return 0;
snapMod = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, tPid);
me32.dwSize = sizeof(MODULEENTRY32);
if (Module32First(snapMod, &me32)){
do{
if (strcmp(DllName,me32.szModule) == 0){
CloseHandle(snapMod);
return (DWORD) me32.modBaseAddr;
}
}while(Module32Next(snapMod,&me32));
}
CloseHandle(snapMod);
return 0;
}
I updated the screenshot and the attachment
Enjoy
sd333221
This was not tested, and is proven to work, I am sorry for the notworking last releases :shy:
For Developers:
Feel free to use my offsets if you give credits!
Also available here:
Download SimpleWar.rar, upload your files and earn money. Deposit Files