Quote:
Originally Posted by wurstbrot123
Und wenn Androxx über Antidebugging ein Tutorial machen sollte,
dann müsste er schon einige Seiten schreiben ^_^
|
^ Thats it.
Wenn ich ernsthaft ein Tutorial über AntiDebugging machen sollte, müsste ich eigentlich ein eigenständiges Tutorial machen. Weil das Thema einfach recht komplex und groß ist. Es gibt mehr als nur IsDebugPresent. Es gibt versch. Funktionen, versch. Möglichkeiten. Dann kann man diese noch verstecken und durch einige Programmierertricks findet man diese auch dann etwas schwerer als normal. Ich sag mal in den meisten Fällen hast du ja beim Start der Anwendung eine Abfrage.
PHP Code:
If ( IsDebugPresent == true) Exit(0)
else ... Dialog.DoModal() // oder irgendein anderer aufruf des dialogs oder der anwendung
oder so.
In asm ist das einfach ein cmp oder und dann ein jne, dann musst du einfach das in jmp ändern so dass er das exit überspringt.
Aber man kanns auch durch versch. möglichkeiten noch verpacken so dass man es nicht so leicht erkennt.
Weiterhin gibt es versch. APIs für AntiDebugging, per Hand gecallte APIs usw.
Das wäre dann ein sehr sehr langes und auch recht komplexes Tutorial.
Wie gesasgt olly hide plugin, phantom oder sowat und das knackt viele antidebugging methoden.
Quote:
Originally Posted by wurstbrot123
@Androxx
Sry fürs spammen aber wir mögen deinen Thread halt so gerne :)
Mir fällt auch im moment nicht ein was du sonst noch großartig
machen könntest ^^ Man könnte auch ein paar basic Techniken
zum entpacken zeigen da ja immer mehr Spiele auch von einem
packer bzw protector geschützt sind aber gibts ja auch etliche
gute Tutorials zu.
Edit:
Mir ist doch noch was kleines eingefallen. Ein tut wie man ein Spiel dazu bekommt
zb Messages von SendMessage bzw PostMessage im hintergrund zu akzeptieren
und zwar anstatt für den Chat (ist bei den meisten Spielen der fall) fürs Spiel selber.
|
Hm hast du da mal ein Beispiel für ein Spiel? Wg Send/PostMessage? Weil mir ist das bisher noch nie begegnet dass die das nicht Akzeptieren.
Hab meine olle Klasse
CBotEngine an versch. Spielen ausprobiert und lief eigentlich überall, SC, Metin2, GuildWars, L2, ....
Hatte das so gemacht:
Methode um WinHandle zu holen:
PHP Code:
void CBotEngine::TargetWindow(CString strWnd)
{
if (pWnd = CWnd::FindWindowExW(NULL,NULL,NULL,strWnd)) {
hWnd = HWND(pWnd->GetSafeHwnd());
GetWindowThreadProcessId(hWnd,&procID);
}else{
AfxMessageBox(_T("Fenster nicht gefunden!"));
}
}
Methode um eine Taste zu senden, zB i um das Inventar zu öffnen, Enter um den Chat zu öffnen:
PHP Code:
void CBotEngine::SendKey(unsigned int KEY, DWORD DELAY)
{
LPARAM pmLparam = (::MapVirtualKey(KEY,0)<<16);
pWnd->PostMessage(WM_KEYDOWN,0,pmLparam);
pWnd->PostMessage(WM_CHAR,0,pmLparam);
Sleep(DELAY);
pWnd->PostMessage(WM_KEYUP,0,pmLparam);
}
Um um einen Text zu senden, zB befehl / text in den Chat senden:
PHP Code:
void CBotEngine::SendText(CString strText)
{
unsigned int *iText;
iText = new unsigned int[strText.GetLength()];
for (int i =0;i <= strText.GetLength();i++)
{
iText[i] = strText[i];
pWnd->PostMessage(WM_KEYDOWN,iText[i],0);
Sleep(70);
}
delete[] iText;
}