nao sei a resposta infelizmente
Address KillHack Server TH help me.
[Special Force Thai]
nao sei a resposta infelizmente
/*
Copyright (c) 2012 Zenma
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-Written by Zenma
-Numpad4 decreases the victim user index
-Numpad6 increases the victim user index
-Numpad2 decreases the killer user index
-Numpad8 increases the killer user index
-F2 forces killer to kill the selected victim
-Numpad1 forces all players to suicide
-Text to speech support, add two slashes before the line #define USE_VOICE to disable speech
Shoutouts:
Dark (fuck jek), Tyrant (fuck jek), jek (the bitch who never plays hon), snarfsnarf (pass da cheats men), pilfuh (first job ), fuck everybody else
*/
#include <windows.h>
#include <fstream>
#include <cstdarg>
#include <string>
// Comment the line below to not use voice
#define USE_VOICE
// I hate doing this but it makes it clear what needs to be updated
#define KILL_HACK_ADDRESS 0x004C6CB0
#define MAIN_BASE_ADDRESS 0x00B72AEC
// If USE_VOICE is defined we will speak player names
#ifdef USE_VOICE
#include <sapi.h>
#endif
void __cdecl Log(const char *format, ...);
void Speak(std::wstring text)
{
// This function does nothing if USE_VOICE is not defined
#ifdef USE_VOICE
static ISpVoice *voice = NULL;
// Only initialize our voice object if it has not been initialized
// Static is okay here since we are not multi threading
if (!voice)
{
// Initialize COM
HRESULT hr = CoInitialize(NULL);
if (FAILED(hr))
{
Log("CoInitialize failed! Speech is unavailable! (0x%08X)", hr);
return;
}
// Create an instance of our voice object
hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void**)&voice);
if (FAILED(hr))
{
Log("CoCreateInstance failed! Speech is unavailable! (0x%08X)", hr);
return;
}
// Set the voice of the volume
voice->SetVolume(100);
}
// Speak our text asnychronously, interrupting anything currently being spoken
voice->Speak(text.c_str(), SPF_ASYNC | SPF_PURGEBEFORESPEAK, NULL);
#endif
}
// killer = the user index of the killer
// victim = the user index of the victim
// gun = the id of the gun that the killer will use to kill victim
// not_headshot = false if it is a headshot, true if it is not a headshot
void KillPlayer(int killer, int victim, int gun, int not_headshot)
{
// Set up a function pointer to the kill player function
typedef void (__stdcall *lpKillPlayer)(int killer, int victim, int gun, int not_headshot);
lpKillPlayer kill_player = (lpKillPlayer)KILL_HACK_ADDRESS;
// Call the function pointer (make killer kill victim with gun and headshot)
// Just in case anything goes wrong we wrap it in try except
__try
{
kill_player(killer, victim, gun, not_headshot);
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
}
}
// Reverse engineered structures
// Stripped
struct PlayerInfo //size 0x94
{
char Name[12]; //0x0
unsigned char Unknown[0x88]; //0xC
};
struct Pointer_11
{
unsigned char Unknown[0x129C]; //0x0
PlayerInfo Players[16]; // 0x129C
};
struct Pointer_10
{
unsigned char Unknown[0x14]; //0x0
Pointer_11 *P11; //0x14
};
struct Pointer_9
{
unsigned char Unknown[0x24]; //0x0
Pointer_10 *P10; //0x24
};
bool GetPlayerName(int index, std::wstring &out)
{
// Point our Pointer_9 structure to the address defined at the top
// of the source file
Pointer_9 **main_base = (Pointer_9**)MAIN_BASE_ADDRESS;
__try
{
// Check to make sure all pointers are valid
// Wrapped in try except to do our best to prevent crashes
if (main_base)
if (*main_base)
if ((*main_base)->P10)
if ((*main_base)->P10->P11)
{
// Temporaries
const char *ascii_player_name = &(*main_base)->P10->P11->Players[index].Name[0];
int player_name_length = strlen(ascii_player_name);
// Resize player name to length wchar_ts
out.resize(player_name_length);
// Hackish way to convert ascii to unicode, dont do it
for (int i = 0; i < player_name_length; ++i)
{
char *temp = (char*)&out[i];
temp[0] = ascii_player_name[i];
temp[1] = 0;
}
return true;
}
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
return false;
}
return false;
}
void SpeakIndex(int index)
{
std::wstring player_name;
// Try to get the player name
if (!GetPlayerName(index, player_name))
return;
// Speak name
Speak(player_name);
}
// For lack of a better function name
int ModifyIndex(int &index, bool increase)
{
if (increase)
{
// No wrap around, indexes cannot go past 15
if (index == 15)
return 15;
return ++index;
}
else
{
// No wrap around, indexes cannot go below 0
if (index == 0)
return 0;
return --index;
}
}
DWORD WINAPI KillHackThread(void*)
{
// Infinite loop, check hotkeys
int killer = 0;
int victim = 0;
while (true)
{
// Make the killer kill the victim using a glock headshot
if (GetAsyncKeyState(VK_F2)&1)
{
KillPlayer(killer, victim, 1, 0);
}
// If numpad 4 is hit, decrease the victim user index and speak it
if (GetAsyncKeyState(VK_NUMPAD4)&1)
{
SpeakIndex(ModifyIndex(victim, false));
}
// If numpad 6 is hit, increase the victim user index and speak it
if (GetAsyncKeyState(VK_NUMPAD6)&1)
{
SpeakIndex(ModifyIndex(victim, true));
}
// If numpad 2 is hit, decrease the killer user index and speak it
if (GetAsyncKeyState(VK_NUMPAD2)&1)
{
SpeakIndex(ModifyIndex(killer, false));
}
// If numpad 8 is hit, increase the killer user index and speak it
if (GetAsyncKeyState(VK_NUMPAD8)&1)
{
SpeakIndex(ModifyIndex(killer, true));
}
// If numpad 1 is hit, suicide the room
if (GetAsyncKeyState(VK_NUMPAD1)&1)
{
for (int i = 0; i < 16; ++i)
{
KillPlayer(i, i, 1, 0);
}
}
// Arbitrary sleep time, prevents disconnection due to too many packets
Sleep(50);
}
}
// Formatted logging function, supports variable number of args
// logs to Log.txt
void __cdecl Log(const char *format, ...)
{
char buffer[257];
std:fstream file("Log.txt", std::ios::app);
if (file.is_open())
{
va_list list;
va_start(list, format);
vsnprintf_s(buffer, sizeof(buffer), sizeof(buffer) - 1, format, list);
file << buffer << "\n";
file.close();
va_end(list);
}
}
BOOL APIENTRY DllMain(HMODULE module, DWORD reason, LPVOID reserved)
{
if (reason == DLL_PROCESS_ATTACH)
{
// Create the kill hack thread only if the dll is being loaded
HANDLE thread_handle = CreateThread(NULL, NULL, KillHackThread, NULL, NULL, NULL);
if (thread_handle == NULL)
{
Log("Failed to create kill hack thread");
}
else
{
CloseHandle(thread_handle);
Log("Successfully created kill hack thread");
}
}
return TRUE;
}
- - - Updated - - -
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="USFKillHackPub"
ProjectGUID="{42665DA8-47FB-4005-B582-E7D21E6650BE}"
RootNamespace="USFKillHackPub"
Keyword="Win32Proj"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName )"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_US RDLL;USFKILLHACKPUB_EXPORTS"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName )"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
EnableIntrinsicFunctions="true"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_US RDLL;USFKILLHACKPUB_EXPORTS"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\dllmain.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="0"
CompileAsManaged="0"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="0"
CompileAsManaged="0"
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg ;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>