Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 03:16

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Frage zu c++ (dll injection)

Discussion on Frage zu c++ (dll injection) within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
Nulpe123's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 399
Received Thanks: 272
Frage zu c++ (dll injection)

Hallo,

ich habe es bereits geschafft eine selbstgeschriebene .dll zu injecten. Nun habe ich allerings das Problem, dass sich der erzeugt Thread nach dem automatischen Aufruf der Funktion
Code:
"int __stdcall DllMain(_In_ void * _HDllHandle, _In_ unsigned _Reason, _In_opt_ void * _Reserved)"
wieder schließt.
Ich möchte den Thread gerne so umprogrammieren, dass er jede Sekunde einmal ein paar Adressen aus dem injizierten Prozess ausliest (wie macht man das eigentlich? Mit Read & WriteProcessmemory?) und bei einer Veränderung dieser Adressen darauf reagiert. So möchte ich die Kommunikation meines Hauptprogramms, dass die Values der Adressen ändert, und dem Thread herstellen (bessere Vorschläge nehme ich natürlich gerne entgegen ).
Ein Versuch soetwas mit einer Dauerschleife hinzubekommen ist leider gescheitert, da sich dann der ganze injizierte Prozess aufhängt. Wie könnte ich soetwas also am besten bewerkstelligen?

Bitte verwendet in euren Antworten so viele code Beispiele wie möglich, da ich mich in c++ wirklich nicht auskenne, beim Schreiben der .dll allerdings nicht drumherum komme...
Nulpe123 is offline  
Thanks
1 User
Old 08/23/2010, 21:27   #2

 
elite*gold: 150
Join Date: Apr 2007
Posts: 2,372
Received Thanks: 6,628
memcpy / memcmp - Createthread
wurstbrot123 is offline  
Old 08/23/2010, 22:46   #3
 
Nulpe123's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 399
Received Thanks: 272
Quote:
Originally Posted by wurstbrot123 View Post
memcpy / memcmp - Createthread
ich denke mal du meinst damit jetzt, wie ich Values aus dem Prozess auslesen kann, oder?

Mein Hauptproblem ist es aber immernoch den erstellten Thread aufrecht zu erhalten und mit ihm zu kommunizieren. Alle Möglchkeiten dies zu bewerkstelligen enden allerdings damit, dass der injizierte Prozess einfriert.
Da er Funktionen im injizierten Prozess aufrufen soll, muss ich him irgendwie die Funktionsnamen und Eingabeparameter "senden".
Nulpe123 is offline  
Old 08/23/2010, 23:02   #4

 
elite*gold: 150
Join Date: Apr 2007
Posts: 2,372
Received Thanks: 6,628
Hast du dir überhaupt die Funktionen angeguckt ?
CreateThread -->
In den neu erstellten Thread fügst du dann deine Schleife ein, dann wird
der Prozess nicht mehr eingefroren da dann dein Code in einem
anderen Thread läuft.
wurstbrot123 is offline  
Old 08/24/2010, 00:04   #5
 
Nulpe123's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 399
Received Thanks: 272
Quote:
Originally Posted by wurstbrot123 View Post
Hast du dir überhaupt die Funktionen angeguckt ?
CreateThread -->
In den neu erstellten Thread fügst du dann deine Schleife ein, dann wird
der Prozess nicht mehr eingefroren da dann dein Code in einem
anderen Thread läuft.
Wird nicht schon bei der Injektion, also beim injizieren der .dll, ein neuer Thread erzeugt? Mit OllyDbg kann man den sogar sehen, wie er kurz anspringt und wieder weg ist.
Nulpe123 is offline  
Old 08/24/2010, 00:17   #6


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
1. memcpy/memset ist nur notwendig, wenn es über int/float Größe hinaus geht, ansonsten, wenn es simple 4 Bytes Adressen sind, änderst du die einfach per Pointer.

2. Deine Idee ist Quatsch, man kommuniziert mit anderen Prozessen via. FileMappings, Pipes, Windows Messages oder auch mal Winsock
MrSm!th is offline  
Old 08/24/2010, 00:22   #7
 
12354's Avatar
 
elite*gold: 0
Join Date: Apr 2007
Posts: 943
Received Thanks: 132
Quote:
Originally Posted by Nulpe123 View Post
Wird nicht schon bei der Injektion, also beim injizieren der .dll, ein neuer Thread erzeugt? Mit OllyDbg kann man den sogar sehen, wie er kurz anspringt und wieder weg ist.
Ja es wird ein neuer Thread erzeugt, trotzdem sollte man diesen eigentlich wenig/nicht (oder nur zum Erzeugen eines eigenen Threads) verwenden.

Wenn du den Thread nämlich zu viel machen lässt, kann das zu Problemen führen(hab aber vergessen warum/welche Probleme :P ; glaubs mir einfach)
12354 is offline  
Old 08/24/2010, 00:45   #8

 
elite*gold: 150
Join Date: Apr 2007
Posts: 2,372
Received Thanks: 6,628
Wüsste nicht welche wäre mal Intressant zu wissen. Für gleichzeitige
Zugriffe ( falls diese sein müssen ) gibt es ja CRITICAL_SECTION ( s )
wurstbrot123 is offline  
Old 08/24/2010, 02:08   #9


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Zb. dass der Prozess anhält.
Injectoren pausieren den Prozess für gewöhnlich so lange, bis die DllMain returnt o.ô
Sieht man zb. wenn man ne Message Loop (zb. durch nen Dialog, den man erstellt) oder irgendne andere Schleife in der DllMain hat, geht das Spiel einfach nicht weiter, der Dialog zwar schon, aber es bringt nicht viel

Außerdem gehören in Einstiegspunkte wie WinMain, DllMain, main immer nur Initialisierungen, der restliche Code kommt raus da, guter Stil undso ;O

Quote:
Wird nicht schon bei der Injektion, also beim injizieren der .dll, ein neuer Thread erzeugt? Mit OllyDbg kann man den sogar sehen, wie er kurz anspringt und wieder weg ist.
Klar, aber wenn du keine Schleife in der DllMain hast (was ich dir auch nicht empfehle) ist doch klar, dass der Thread direkt wieder verschwindet.
MrSm!th is offline  
Old 08/24/2010, 13:59   #10

 
elite*gold: 150
Join Date: Apr 2007
Posts: 2,372
Received Thanks: 6,628
Quote:
Originally Posted by MrSm!th View Post
Zb. dass der Prozess anhält.
Habe wohl beim post von 12345 einiges überlesen :> Das ist mir natürlich alles klar deswegen habe ich ihm ja auch die CreateThread funktion gepostet ^^
wurstbrot123 is offline  
Old 09/20/2010, 18:29   #11
 
Nulpe123's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 399
Received Thanks: 272
Folgendes Problem:

Ich möchte in meiner DllMain-Funktion nun einen neuen Thread starten. Das ganze sieht wie folgt aus:

PHP Code:
HANDLE thread;

int __stdcall DllMain(_In_ void _HDllHandle_In_ unsigned _Reason_In_opt_ void _Reserved)
{
    
thread CreateThread(NULL0ThreadFunc,NULL,0,NULL);
}

DWORD WINAPI ThreadFunc(LPVOID data)
{
    
//hier ist jetzt die Dauerschleife mit einer Sleep-Funktion, die das ganze etwas abbremsen soll

Allerdings meckert mein Compiler, dass er die ThreadFunc nicht findet!

error C2065: 'ThreadFunc': nichtdeklarierter Bezeichner

Wie kann ich die Funktion ThreadFunc für DllMain sichtbar machen?
Nulpe123 is offline  
Old 09/20/2010, 18:37   #12
 
elite*gold: 115
Join Date: Oct 2007
Posts: 9,390
Received Thanks: 12,344
Funktionsprototyp oben rein schreiben. ;O
ms​ is offline  
Thanks
1 User
Old 09/20/2010, 18:43   #13
 
Nulpe123's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 399
Received Thanks: 272
Edit: Nun habe ich in der Funktion ThreadFunc eine Messagebox hinzugefügt und oben den Funktionsprototypen deklariert:
PHP Code:
DWORD WINAPI ThreadFunc(LPVOID);

HANDLE thread;

int __stdcall DllMain(_In_ void _HDllHandle_In_ unsigned _Reason_In_opt_ void _Reserved)
{
    
thread CreateThread(NULL0ThreadFunc,NULL,0,NULL);
    
MessageBox(NULLTEXT("Ich öffne mich immer wieder"), NULLMB_OK);


DWORD WINAPI ThreadFunc(LPVOID data)
{
   
MessageBox(NULLTEXT("Thread gestartet"), NULLMB_OK);

Wenn ich jetzt allerdings meine DLL injecte erscheint die Messagebox nicht und das injizierte Programm stürzt ab (schließt sich einfach). Wenn ich zudem in der DllMain eine Messagebox hinzufüge scheint die Funktion DllMain eine Art Dauerschleife zu produzieren, denn immer wenn ich auf OK klicke öffnet sich die Messagebox erneut.
Was könnte mein Problem sein?
Nulpe123 is offline  
Old 09/20/2010, 19:11   #14
 
Tyrar's Avatar
 
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
ich benutze lieber
SuspendThread, GetThreadContext, SetThreadContext, ResumeThread!
mit SetThreadContext wird das EIP register auf eine neue adresse gelegt (EIP = InstructionPointer, (64 bit sollte RIP sein?))
Tyrar is offline  
Thanks
1 User
Old 09/20/2010, 19:21   #15
 
Nulpe123's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 399
Received Thanks: 272
Quote:
Originally Posted by HeavyHacker View Post
ich benutze lieber
SuspendThread, GetThreadContext, SetThreadContext, ResumeThread!
mit SetThreadContext wird das EIP register auf eine neue adresse gelegt (EIP = InstructionPointer, (64 bit sollte RIP sein?))
Wie würde dafür denn ein Implementierungsbeispiel aussehen? Google will mir da nichts nützliches ausspucken...
Nulpe123 is offline  
Reply


Similar Threads Similar Threads
[TIP] SQL Injection
02/11/2009 - RFO Hacks, Bots, Cheats, Exploits & Guides - 6 Replies
This is for someone here that knows the basic use of SQL Injection... You can edit the website's database and make tweaks on that particular page... i hope you get what I mean ^_^ This is very favorable to private servers. Already done it and hell it rocked the RF World! Peace out and I know you guys can do what i meant.. ^_^
WTB sql injection
11/27/2008 - Trading - 0 Replies
prove me that your coin hack work and i will buy it
uo injection
07/03/2008 - General Gaming Discussion - 3 Replies
Hallo zusammen Bin noch totaler Noob was UO injection betrifft. Ich brauche mal ein wenig Hilfe. Ich bin auf dem shard www.phantsmorgia.de. Die haben da einen eigenen pmclienten denn ich irgendwie nicht umgehen kann. Ich schaff es einfach nicht uo Injection auf diesem Shard zu nutzen. Kann mir vielleicht jemand helfen?
URL sql injection
06/24/2008 - RF Online - 2 Replies
any one could give me hints or anything on what url should i put in sql injection for rf online.. im a bit confused.. thanks
generelle frage zur dll injection
01/13/2008 - General Coding - 15 Replies
sooo mein zweiter Thread ;D Diesmal würd ich gern wissen ob es möglich ist direkt auf den speicher des Prozesses zuzugreifen in den eine dll injected wurde und möglicherweise sogar dessen Funktionen auszuführen? ist doch so oder? :) gruß, reijin



All times are GMT +2. The time now is 03:16.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.