Form in DLL - Visual C++

05/13/2014 14:46 iOSsec#1
Hallo, in diesen kleinen Tutorial zeige ich euch mal, wie ihr eine Form zu einen DLL Projekt in Visual C++ hinzufügen könnt, und so einfach Buttons etc in eure Form reinziehen könnt und mit einen Doppelklick den Code schreiben könnt.
  1. Neues Visual C++ Projekt erstellen
  2. Win32 Projekt
  3. Weiter
  4. DLL + Leeres Projekt
  5. Fertigstellen

So als nächstes machen wir einen Rechtsklick auf Quelldatein und wählen:
Hinzufügen->Neues Element

Dann erstellen wir eine Cpp Datei und nennen diese z.b. main.cpp.

Jetzt fügen wir dort den folgenden Code ein:

PHP Code:
#include <windows.h>

extern int Main(); // Sagt dem Programm, dass die Funktion main nicht in der main cpp datei sondern woanders liegt.

void WINAPI MainThread( )
{
    
Main(); // Führt die Funktion Main aus, wenn die DLL geladen wurde.
}

BOOL WINAPI DllMain HMODULE hModuleDWORD dwReasonLPVOID lpvReserved )
{
    switch ( 
dwReason ) {
        case 
DLL_PROCESS_ATTACH:

            
DisableThreadLibraryCalls(hModule);

            if ( 
CreateThread(NULL0, (LPTHREAD_START_ROUTINE)MainThreadNULL0NULL) == NULL ) {
                return 
FALSE;
            }
            break;
            
        case 
DLL_PROCESS_DETACH:
            break;

        case 
DLL_THREAD_ATTACH:
            break;

        case 
DLL_THREAD_DETACH:
            break;
    }
    return 
TRUE;

So als nächstes machen wir einen Rechtsklick auf Headerdatein und wählen:
Hinzufügen->Neues Element.

Jetzt wählen wir Windows Form und nennen diese bsw. Form1.

In die erstellte Form1.cpp fügen wir den folgenden Code ein:
PHP Code:
#include "Form1.h"
#include <windows.h>
using namespace std;
using namespace ProjectName// Unser Projektname
[STAThreadAttribute]
int Main() // Die Funktion Main die aufgerufen wird.
{
    
// Aktiviert die Styles etc...
    
Application::EnableVisualStyles();
    
Application::SetCompatibleTextRenderingDefault(false); 
    
Application::Run(gcnew Form1()); // Erstelle neue Form1 und führe diese aus.
    
return 0;

Wenn man mal einfach eine Python Injector Form macht und diese in z.b. Metin2 oder IDA injectet, dann sieht dass so aus:
[Only registered and activated users can see links. Click Here To Register...]

Also ihr seht es klappt. :) :D :cool:


Credits:
Das meiste ist von mir, das mit den Application:: ... habe ich glaube ich von der Microsoft Seite, falls ich es doch von wo anders habe und es mir wieder einfällt sind Credits natürlich angebracht.
05/16/2014 15:36 xXrussXx#2
Kann man dadurch die Werte im Speicher des "Opfer"Programms verändern?
05/16/2014 19:48 ​Tension#3
Quote:
Originally Posted by xXrussXx View Post
Kann man dadurch die Werte im Speicher des "Opfer"Programms verändern?
Was hat eine Form damit zutun?
05/16/2014 23:30 xXrussXx#4
Quote:
Originally Posted by ​Tension View Post
Was hat eine Form damit zutun?
Ich meine ob man eine form als Menü nutzen könnte.
05/17/2014 00:17 ​Tension#5
Wieso sollte man dies nicht tuen können?
05/19/2014 15:18 xXrussXx#6
Quote:
Originally Posted by ​Tension View Post
Wieso sollte man dies nicht tuen können?
Weil es vl wie ein neuer Prozess oder was auch immer gilt(und man dann ein treiber braucht)?! Ist doch das was ich frage nur bisschen anders formuliert.

Gott bist du unfähig einfach nur ja oder Nein zu sagen :facepalm:
05/19/2014 16:00 ​Tension#7
Quote:
Originally Posted by xXrussXx View Post
Weil es vl wie ein neuer Prozess oder was auch immer gilt(und man dann ein treiber braucht)?! Ist doch das was ich frage nur bisschen anders formuliert.
Nein. Guck dir mal Codes von Injektoren an, dann verstehst du auch wie die Funktionieren. Und in deinen Posts vorher hast du sowieso unterschiedliche Themen, also ist es nicht anders formuliert. In deinem ersten Post fragst du ob man damit den Speicher editieren kann, danach ob man die Form als Menü verwenden kann und zuletzt ob nach einer Dll-Injektion mit einer Form ein neuer Prozess erstellt wird.

Quote:
Originally Posted by xXrussXx View Post
Gott bist du unfähig einfach nur ja oder Nein zu sagen :facepalm:
Wieso unfähig? Ich habe deine Frage mit einem Ja beantwortet jedoch als Gegenfrage geschrieben, da ich wissen wollte wie du darauf kommst.
05/20/2014 18:48 xXrussXx#8
Quote:
Originally Posted by ​Tension View Post
Nein. Guck dir mal Codes von Injektoren an, dann verstehst du auch wie die Funktionieren. Und in deinen Posts vorher hast du sowieso unterschiedliche Themen, also ist es nicht anders formuliert. In deinem ersten Post fragst du ob man damit den Speicher editieren kann, danach ob man die Form als Menü verwenden kann und zuletzt ob nach einer Dll-Injektion mit einer Form ein neuer Prozess erstellt wird.


Wieso unfähig? Ich habe deine Frage mit einem Ja beantwortet jedoch als Gegenfrage geschrieben, da ich wissen wollte wie du darauf kommst.
Ok Danke :) Ich hatte einfach ne dumme Vermutung, dass die Form ein neuer Prozess ist..
05/21/2014 13:55 iOSsec#9
Nene, dass ist sie nicht. ;)
Ich injekte ja ne DLL in nen Prozess.
Sonst währe es ja unlogisch eine DLL zu erstellen, da wenn das eine Anwendung währe, man ja auch einfach ne Windows-Forms Anwendung erstellen könnte. xD

Hoffe trotzdem es hat geholfen. :P
05/21/2014 16:58 Logtetsch#10
Und das GUI in der DLL ist keine Windows Forms-Anwendung?
Btw. das Tutorial kommt aus einem anderen Forum (C&P...).
05/21/2014 17:36 iOSsec#11
Nicht direkt.
Ja kp aber es gibt das wie gesagt auch (infos) von Microsoft,
05/22/2014 07:31 Mostey#12
Quote:
Originally Posted by Logtetsch View Post
Und das GUI in der DLL ist keine Windows Forms-Anwendung?
Nein, die GUI ist eine Windows Form, keine Windows Form Anwendung.
05/22/2014 22:02 iOSsec#13
Muss man immer so viel diskutieren? Erstens meine ich was anderes und ich denke du weißt was ich meine. Application an sich ist gemeint.
05/22/2014 22:15 ​Tension#14
Quote:
Originally Posted by iOSsec View Post
Muss man immer so viel diskutieren? Erstens meine ich was anderes und ich denke du weißt was ich meine. Application an sich ist gemeint.
Mostey meinte dich gar nicht.

Wozu sollte ein Forum sonst da sein wenn man nicht diskutiert?
Und was meinst du mit "Application an sich ist gemeint."?
05/23/2014 20:41 iOSsec#15
Nein ich meine, dass man immer so negativ rumpralen soll und dann noch nur halbwahre Sachen schreibt ohne den Post mal gelesen zu haben. :P