Prozess beenden verhindern
-
andi01 schrieb:
im übrigen ist dieses tutorial für anfänger in netzwerkprogrammierung nicht zu empfehlen
; die includen immer die windows.h vor der winsock2.h , vergessen immer #pragma comment( lib, "ws2_32.lib" ) zu schreibenUnd wer sagt, daß man das anders machen muss?
-
bei MS Visual Studio C++ 2008 Express Edition, das ich verwende, muss man das

übroigens habe ich die verbindung jetzt mithilfe des neuen threads hingekriegt!
nun kann ich/können wir uns wieder dem verstecken zuwenden!oder sollte ich dafür langsam auch mal nen neuen thread aufmachen?
mfg,
andi01.
-
Kauf dir 'n packer, wie z.B:
noobyprotect
themida
winlicenseDamit packst du dann den game client, und fertig. Das hält jeden kiddie fern, der denkt dass er weit kommt.Falls du kein geld hast, tja pech gehabt.
-
andi01 schrieb:
bei MS Visual Studio C++ 2008 Express Edition, das ich verwende, muss man das

Das glaube ich nicht. Im übrigen kann kein Tutorial-Schreiber wissen, was für einen Compiler/IDE Du benutzt.
-
man muss es nicht verwenden, aber es ist eine sehr schnelle lösung mal eben
die lib dazuzunehmen
für das verstecken:
was soll der guard erreichen?
sich selber verstecken ok, die game.exe vor attacken schützen hm,
wie stellst du dir das vor?durch einen kleinen trick kann man ohne besondere rechte trotzdem an gewisse
handles kommen, wenn man den namen weiß. um den prozess wirklich zu verstecken,
musst du entweder einen treiber schreiben, oder jedes einzelne laufende programm
hooken. was den meisten noch lieber wäre als der treiber.so einfach ist das nicht
wenn du innerhalb ein paar tagen einen guard schreiben
könntest, könnte auch jeder andere innerhalb der zeit den guard umgehen.die frage ist halt wen du draußen halten willst.
-
also im prinzip will ich nur die leute draußen halten die zu faul sind selber nen hack zu schreiben oder nicht programmieren können, denn geübte hacker abzuhalten ist fast unmöglich, immerhin gibt es da SuspendThread, Read/WriteProcessMemory, TerminateProcess,...
da ich geübte hacker wohl kaum abhalten kann versuche ich wenigstens die leute die vorgefertigte hacks benutzen(für flyff speziell automaton, ftool usw.) abzuhalten. und ein paar standard-hacks werden abgehalten.
ich mache jetzt das mit dem ping noch gar fertig, dann kümmere ich mich ums verstecken. übrigens: warum soll das mit dem oing so unsicher sein? normale user wissen doch nicht dass es einen ping gibt und kommen so gar nicht auf die idee ihn nachzuahmen.
mfg,
andi01.
-
es gäbe da eine einigermaßen "harmlose" möglichkeit, deinen prozess und das
spiel zu protecten. ich suche grade nach einer möglichkeit, das starten
eines prozesses mitzubekommen. werden systemweite hooks nicht auch für noch
startende programme geladen?
-
weiß ich leider auch nicht, aber eine einfache möglichkeit ist perfekt. standard-user hält sie ab und erfahrene hacker kann ich eh nicht ohne weiteres abhalten.
wenn du diese möglichkeit gefunden hast sag einfach kurz bescheid(incl. code)^^
mfg,
andi01.
-
ich hab da mal auf die schnelle was zusammengeschrieben.
dll.h: #ifdef DLL_EXPORTS #define DLL extern "C" __declspec(dllexport) #else #define DLL extern "C" __declspec(dllimport) #endif #pragma data_seg(".shared") HHOOK hook = 0; #pragma data_seg() #pragma comment(linker, "/SECTION:.shared,RWS") DLL LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam); DLL void SetHook(HHOOK); dll.cpp void SetHook(HHOOK phook) { hook = phook; } void hook() { // inline hooking } void unhook() { // unhooking } BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { if (fdwReason == DLL_PROCESS_ATTACH) { if (hook) Hook(); } else if (fdwReason == DLL_PROCESS_DETACH) { if (hook) Unhook(); } return 1; } LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) { return CallNextHookEx(hook, nCode, wParam, lParam); } app.cpp: typedef void (*sethook)(HHOOK); typedef LRESULT (CALLBACK *hookproc)(int, WPARAM, LPARAM); HHOOK hook = 0; void protect() { HMODULE mod = LoadLibrary("DLL.dll"); sethook psethook = reinterpret_cast<sethook>(GetProcAddress(mod, "SetHook")); hookproc phookproc = reinterpret_cast<hookproc>(GetProcAddress(mod, "KeyboardProc")); hook = SetWindowsHookEx(WH_KEYBOARD_LL, phookproc, mod, 0); psethook(hook); } void unprotect() { UnhookWindowsHookEx(hook); HMODULE mod = GetModuleHandle("DLL.dll"); sethook psethook = reinterpret_cast<sethook>(GetProcAddress(mod, "SetHook")); psethook(0); hook = 0; FreeLibrary(mod); }das ganze ist ungetestet, keine verantwortung für schäden, etc.
2 funktionen musst du noch einbauen, nämlich hook() und unhook().
da würde ich dir inline-hooking empfehlen. da ich mich aber jedes mal
beim setzen der jmpaddresse um ein paar byte vertue, kann ich ohne debugger
nur raten
ich überlasse das korrekte einbauen mal dir. im internet findet
sich zu "inline hooking" eine menge.du musst nurnoch alle funktionen, die dir gefählich werden könnten unterbinden,
z.b. OpenProcess, TerminateProcess, SuspendThread, etc...auch würde sich anbieten, eine ebene tiefer zu gehen und die entsprechenden
Nt-funktionen umzuleiten. ich kenne nicht viele hacks die darauf zugreifen,
alle vertrauen sie darauf, dass keiner bei ihnen rumpfuscht.zum code:
du setzt im proinzip einen dummy keyboard-hook, der, da er global ist, nur dazu
dient die DLL in alle prozesse zu laden. die paar tasten pro sekunde * prozessanzahl
lassen es schon nicht zuuuu langsam werden
sobald die DLL drin ist, hackt sie sind in die wichtigen funktionen.
das kann man natürlich auch umgehen, aber es hält viele draußen. du musst
in den gehookten funktionen nurnoch testen, ob dein prozess da irgentwie
mit involviert ist, z.b. durch prüfen der PID. möglicherweise hällt das auch
den taskmanager draußen ;).aber nicht unhook vergessen.
viel spaß das einzubauen

-
danke erstmal für deine antwort und den code
gleich morgen werde ich das mal ausprobieren und dir das ergebnis mitteilen.mfg,
andi01.