Warrock - Code Snippets

05/27/2013 23:28 Kazbah__#1006
Quote:
Credits: Me
sicher doch ;)

Quote:
7) Solltet ihr einen Sourcecode posten, welcher nicht von euch stammt, seid ihr verpflichtet wahrheitsgemäße Credits anzugeben.
[Only registered and activated users can see links. Click Here To Register...]

[Only registered and activated users can see links. Click Here To Register...]

[Only registered and activated users can see links. Click Here To Register...]
05/28/2013 14:16 SilverRazzer <3#1007
Quote:
Originally Posted by Zyzz__ View Post
sicher doch ;)



[Only registered and activated users can see links. Click Here To Register...]

[Only registered and activated users can see links. Click Here To Register...]

[Only registered and activated users can see links. Click Here To Register...]
Nächste mal mal geht Credits an mich :p

& nun zu dir du lappen du schreibst auch nicht Credits hin obwohl ich dir sources gegeben hab

Die Scene früher war viel gechillter und nicht so Arrogant wie jetzt.
es würde früher viel mehr geholfen & now denken jeder is babo o.O
05/28/2013 14:41 Kazbah__#1008
Quote:
& nun zu dir du lappen du schreibst auch nicht Credits hin obwohl ich dir sources gegeben hab
ich nutz nix von dir du vogel aber wenn du das meinst kannst du mir sicher die funktion nennen die angeblich von dir ist :)
05/28/2013 14:53 +Yazzn#1009
Zum Thema VirtualProtect: Klasse, RAII
05/28/2013 15:38 ineedhacksok#1010
please someone help me, need not be full bypass, only to leave without being detected by signatures.

I will not use it for warrock but to combat arms is for my personal use.

page of ehsvc dump:
[Only registered and activated users can see links. Click Here To Register...]
05/28/2013 16:33 Chowniiqhtz™#1011
Quote:
Originally Posted by SilverRazzer <3 View Post
Nächste mal mal geht Credits an mich :p

& nun zu dir du lappen du schreibst auch nicht Credits hin obwohl ich dir sources gegeben hab

Die Scene früher war viel gechillter und nicht so Arrogant wie jetzt.
es würde früher viel mehr geholfen & now denken jeder is babo o.O
Was bist du denn für neh Käsemilbe?
Heulst in deinem "Abschiedsthread" herum, dass ja alle so scheiße sind und dich fertig machen, aber selber biste nicht besser. Wenn du die Leute hier beleidigst, die dir helfen wollen bzw. dich darauf hinweisen, dass nicht DU der Verfasser des Quellcodes bist, brauchst du dich ueberhaupt nicht wundern, wenn Du dann auch mal etwas abbekommst.
Eigentlich ist es peinlich, auch noch zu wollen, dass die Credits an dich gehen - wenn man sich den Code mal genauer anschaut ....

EDIT:// Außerdem ist Kazbah / Zyzz schon seit 2011/2012 dabei.
05/28/2013 21:41 Raz9r#1012
seh_exceptions.h
Code:
#pragma once

#include <system_error>
#include <utility> 
#include <Windows.h>
#include <excpt.h>
#include <eh.h>

class seh_exception : public std::system_error
{
	EXCEPTION_POINTERS *_ep;

	static __declspec(thread) _se_translator_function _old_translator;

	static void translator(unsigned int code, EXCEPTION_POINTERS *ep);
	seh_exception(unsigned int code, EXCEPTION_POINTERS *ep);

public:
	static void enable_for_this_thread();
	static void disable_for_this_thread();
	static bool is_enabled_for_this_thread();
	static void ignore(const seh_exception &e);
	
	template <typename TryBlock, typename CatchBlock = decltype(&ignore)>
	static bool handle(TryBlock &&try_block, CatchBlock &&catch_block = &ignore);

	virtual ~seh_exception();
	virtual const char *what() const override;
	virtual EXCEPTION_POINTERS *exception_pointers() const;
};

template <typename TryBlock, typename CatchBlock>
bool seh_exception::handle(TryBlock &&try_block, CatchBlock &&catch_block)
{
	bool was_enabled = seh_exception::is_enabled_for_this_thread();

	try
	{
		seh_exception::enable_for_this_thread();

		std::forward<TryBlock>(try_block)();
		return true;
	}
	catch(const seh_exception &e)
	{
		std::forward<CatchBlock>(catch_block)(e);
	
		if (!was_enabled)
			seh_exception::disable_for_this_thread();

		return false;
	}
	catch(...)
	{
		if (!was_enabled)
			seh_exception::disable_for_this_thread();
		throw;
	}
}

seh_exception.cpp
Code:
#include "seh_exception"

__declspec(thread) _se_translator_function seh_exception::_old_translator = &seh_exception::translator;

void seh_exception::translator(unsigned int code, EXCEPTION_POINTERS *ep)
{
	throw seh_exception(code, ep);
}

seh_exception::seh_exception(unsigned int code, EXCEPTION_POINTERS *ep) 
	: _ep(ep), std::system_error(code, std::generic_category())
{
}

void seh_exception::enable_for_this_thread()
{
	if (!is_enabled_for_this_thread())
		_old_translator = _set_se_translator(&translator);
}

void seh_exception::disable_for_this_thread()
{
	if (is_enabled_for_this_thread())
		_old_translator = _set_se_translator(_old_translator);
}

bool seh_exception::is_enabled_for_this_thread()
{
	return _old_translator != &translator;
}

void seh_exception::ignore(const seh_exception &)
{ 
}

seh_exception::~seh_exception()
{
}

const char *seh_exception::what() const
{
	return "seh_exception";
}

EXCEPTION_POINTERS *seh_exception::exception_pointers() const 
{
	return _ep;
}
[Only registered and activated users can see links. Click Here To Register...]

main.cpp (Beispielhafte Anwendung)
Code:
#include <iostream>
#include "seh_exception.h"

int main(int argc, char *argv[])
{
	seh_exception::handle([]
	{
		int *p = nullptr;
		*p = 1; // raise EXCEPTION_ACCESS_VIOLATION
	}, [](const seh_exception &e)
	{
		std::cerr << e.code().value() << std::endl;
	});

	// keep cmd.exe alive
	std::cin.get();
	
	return 0;
}
Im Beispiel wird eine SEH-Exceptions aufgefangen, die geworfen wurde, als nullptr dereferenziert wurde. Der ExceptionCode dieser Exception ist EXCEPTION_ACCESS_VIOLATION und die für uns im folgenden interessanteste.

[Only registered and activated users can see links. Click Here To Register...]

Was muss ich bei der Benutzung von seh_exception beachten?

Um das benutzen zu können, muss man in Visual Studio die Einstellung /EHa setzen: Projekt > Eigenschaften > C/C++ > Codegenerierung > C++ Ausnahmen aktivieren > Ja bei SEH-Ausnahmen (/EHa)

SEH-Exceptions werden für jeden Thread, der seh_exception::enable_for_this_thread() aufgerufen hat, aktiviert.
Das deaktiveren ist für den jeweiligen Thread mit seh_exception::disable_for_this_thread() möglich, aber optional.
seh_exception::handle übernimmt das jeweils für euch.

Die Funktion _set_se_translator sollte nicht innerhalb von seh_exception::handle verwendet werden.

Ist das zweite Parameter von seh_exception::handle nicht spezifiziert, ist es &seh_exception::ignore; diese Funktion macht nichts.

Wichtig ist außerdem, dass DisableThreadLibraryCalls nicht für ein Modul benutzt werden darf, das seh_exception benutzt. Grund dafür ist, dass seh_exception TLS (Thread-Local Storage) benutzt.

[Only registered and activated users can see links. Click Here To Register...]

Warum seh_exception die Stabilität eurer Cheats erhöhen kann? Ein weiteres Beispiel (Pseudo-Code):

pseudo-code.cpp
Code:
// solange der cheat aktiv ist
while(cheat_is_enabled())
{
	// warte, bis der spieler ingame ist
	wait_until_player_is_ingame();

	// führe die player cheats aus
	player_cheats(); 
}
Aber was ist, wenn der Spieler das Spiel verlässt, während player_cheats() ausgeführt wird?
Es crasht! Der Playerpointer ist dann nämlich nullptr, bei dessen Zugriff eine EXCEPTION_ACCESS_VIOLATION auftritt.
Um das zu verhindern wollen wir also bei Auftritt einer solchen Exception wieder zu wait_until_player_is_ingame() springen.

Wir wollen also seh_exception::handle so benutzen:
Code:
// solange der cheat aktiv ist
while(cheat_is_enabled())
{
	// warte, bis der spieler ingame ist
	wait_until_player_is_ingame();

	// jetzt kommt der spannende trick
	seh_exception::handle([]
	{
		// rufe player_cheats auf und breche bei einer seh_exception ab
		player_cheats();
	}, [](const seh_exception &err) 
	{
		// das wird aufgerufen, wenn eine seh_exception stattgefunden hat
		write_to_log(err.what());
	});
}
05/30/2013 13:45 Cyno™#1013
Quote:
Originally Posted by Raz9r View Post
...
Danke, dass du es für mich gemacht hast, dadurch läuft mein Cheat viel stabiler !
Ich empfehle allen, es zu nutzten ;)
05/30/2013 16:36 WR_B4sher#1014
Hat mir sehr geholfen! Danke:)
05/30/2013 16:49 Spe@ker#1015
Fix and Update WarRock ByPass 30.05.2013
Code:
void CzytajFunkcjeMemory(void *adr, void *ptr, int size)
{
        DWORD dwback;
        VirtualProtect(adr,size,PAGE_EXECUTE_READWRITE, &dwback);
        memcpy(adr,ptr,size);
        VirtualProtect(adr,size,dwback, &dwback);
}
template <typename T>void WriteMEM(void* adr,T Vaule,T *Input = NULL)
{
        if(Input == 0)
                CzytajFunkcjeMemory((void*)adr,(void*)&Vaule,sizeof(T));
        else
                CzytajFunkcjeMemory((void*)Input,(void*)adr,sizeof(T));
}
void ObejsciePrzeciwAntyCheata (void)
{   
		int CzytajEhSvc;
		do
		{
			CzytajEhSvc = (int)GetModuleHandle("EhSvc.dll");
			Sleep(1000);
		}
		while(!CzytajEhSvc);
			CzytajFunkcjeMemory((void*)(CzytajEhSvc+0x008518E),(void *)"\xC2\x04\x00", 3);
			CzytajFunkcjeMemory((void*)(CzytajEhSvc+0x00A1A0),(void *)"\xC2\x04\x00", 3); 
			CzytajFunkcjeMemory((void*)0x5DA1BC, (void*)"\xC3", 1);
}
Credits:
Fix and Update: Speaker
Source: Xave
05/30/2013 18:19 C0RE'#1016
Quote:
Originally Posted by Spe@ker View Post
...
Da wir hier in einem Deutsch / Englisch sprachigem Forum sind und da Programmiersprachen meistens Englisch sind, sollte man die Funktionen auf Deutsch oder Englisch beschriften.
05/30/2013 19:37 Chowniiqhtz™#1017
Quote:
Originally Posted by C0RE' View Post
Da wir hier in einem Deutsch / Englisch sprachigem Forum sind und da Programmiersprachen meistens Englisch sind, sollte man die Funktionen auf Deutsch oder Englisch beschriften.
Da hast Du natürlich Recht.
Hier geht's aber nicht darum, den Benutzern dieser Funktion alles recht zu machen.
Kann ja jeder so nennen, wie er möchte.
Daher ist der gewählte namen für die Klassen i.O.
05/30/2013 20:06 C0RE'#1018
Finde das aber gerade für Anfänger schlecht. Besser wären richtige Beschriftungen.
Man beschriftet ja auch nicht ein Mathematik Heft mit Physik o.Ä
05/30/2013 21:48 CyberMask#1019
Code:
Name : Walk Position or PlayerHeight
Author : CyberMask
Description : With this function you can establish walk position & increase player height

Screen : [Only registered and activated users can see links. Click Here To Register...]
Code:
switch ( pPlayerHacks->WalkHeight )
			{
			default : MakeFloat(0x8C89A4,40.0f);break;
			case 1: MakeFloat(0x8C89A4,70.0f);break;
			case 2: MakeFloat(0x8C89A4,100.0f);break;
			case 3: MakeFloat(0x8C89A4,150.0f);break;
			case 4: MakeFloat(0x8C89A4,200.0f);break;
			case 5: MakeFloat(0x8C89A4,300.0f);break;

			}
Source made by me and Addy found by me
Enjoy and give credits
05/31/2013 08:40 ~ExoduS~*#1020
Quote:
Originally Posted by CyberMask View Post
Code:
Name : Walk Position or PlayerHeight
Author : CyberMask
Description : With this function you can establish walk position & increase player height

Screen : [Only registered and activated users can see links. Click Here To Register...]
Code:
switch ( pPlayerHacks->WalkHeight )
			{
			default : MakeFloat(0x8C89A4,40.0f);break;
			case 1: MakeFloat(0x8C89A4,70.0f);break;
			case 2: MakeFloat(0x8C89A4,100.0f);break;
			case 3: MakeFloat(0x8C89A4,150.0f);break;
			case 4: MakeFloat(0x8C89A4,200.0f);break;
			case 5: MakeFloat(0x8C89A4,300.0f);break;

			}
Source made by me and Addy found by me
Enjoy and give credits
Code:
oO ist VirtualJump other coders found it since 3years xD :)