haste es auch im release mode compiled?
-
-
-
haste es auch im release mode compiled?
Fail Ne hatte ich nicht.
Ich versuchs jetzt mal mit der neuen DLL.Kuh :>
E: Ändert nichts an der Tatsache das es nicht funktioniert
-
Du musst keinen Typen zum casten erstellen. Ich find's hässlich und unnötig, da du den sowieso nur einmal brauchst und dann auch ganz normal casten kannst.
Das einfach mit Inline Assembler zu machen ist eine elegante aber auch gefährliche möglichkeit. Bei mir klappt das nicht immer, weil ich nicht weiß, was mir der Compiler am Ende daraus macht.Zu deinem Problem:
Hast du schonmal versucht zu debuggen? Die Werte zur Laufzeit ausgegeben?
Ich tippe darauf, dass du das Ergebnis von GetProcAddress noch in einen void* casten musst. Sonst wird das falsch interpretiert meine ich mich zu erinnern.MfG
-
-
Du musst keinen Typen zum casten erstellen. Ich find's hässlich und unnötig, da du den sowieso nur einmal brauchst und dann auch ganz normal casten kannst.
Das einfach mit Inline Assembler zu machen ist eine elegante aber auch gefährliche möglichkeit. Bei mir klappt das nicht immer, weil ich nicht weiß, was mir der Compiler am Ende daraus macht.Zu deinem Problem:
Hast du schonmal versucht zu debuggen? Die Werte zur Laufzeit ausgegeben?
Ich tippe darauf, dass du das Ergebnis von GetProcAddress noch in einen void* casten musst. Sonst wird das falsch interpretiert meine ich mich zu erinnern.MfG
Und wieso geht dann die MessageBox nicht?Kuh :>
-
Welchen Injector benutzt du?
MfG
-
Meinen eigenen
Wie gesagt: Bei den Delphi DLL's ging der immerKuh :>
SourceCode (C#):
Code- public void Inject(int ProcessId)
- {
- IntPtr bytesout = (IntPtr)null;
- Process TargetProcess = Process.GetProcessById(ProcessId);
- //Name und NameLen der DLL wird gespeichert
- string DllName = "newdll.dll";
- Int32 LenWrite = DllName.Length + 1;
- UIntPtr Injector = GetProcAddress(GetModuleHandle("Kernel32"), "LoadLibraryA");
- //Prozess öffnen und als Handle speichern
- hProcess = OpenProcess(ProcessAccessFlags.PROCESS_CREATE_THREAD | ProcessAccessFlags.PROCESS_ALL_ACCESS | ProcessAccessFlags.PROCESS_VM_OPERATION | ProcessAccessFlags.PROCESS_VM_WRITE | ProcessAccessFlags.PROCESS_SUSPEND_RESUME, false, TargetProcess.Id);
- //Arbeitsspeicher freigeben
- IntPtr AllocMemory = VirtualAllocEx(hProcess, (IntPtr)null, (uint)LenWrite, AllocationType.Commit, MemoryProtection.ReadWrite);
- //Process suspenden
- //SuspendThread(hProcess);
- //Memory patchen
- WriteProcessMemory(hProcess, AllocMemory, DllName, (UIntPtr)LenWrite, out bytesout);
- //Process resumen
- //ResumeThread(hProcess);
- IntPtr hThread = CreateRemoteThread(hProcess, (IntPtr)null, (uint)0, Injector, AllocMemory, 0, out bytesout);
- //Handle closen
- CloseHandle(hProcess);
- }
-
-
Probier mal bitte meinen und sag mir, ob 's geht.
MfG
-
Ich bekomme diese Fehlermeldung beim Injecten:
Kuh :>
E: Wenn ich "DetourCreate(addr, ( void * )myConnect, 5 );" in der DllMain auskommentiere, dann bekomme ich diese Fehlermeldung nicht.
Kuh :>
-
Die Fehlermeldung sagt dir doch, was falsch ist.
Sind deine Projekteinstellungen richtig?MfG
-
-
Die Fehlermeldung sagt dir doch, was falsch ist.
Sind deine Projekteinstellungen richtig?MfG
Common Language Runtime (/clr) wird bei meinem Projekt unterstützt, weshalb ich diese Fehlermeldung bekomme.
Wenn ich mein Projekt jedoch auf "Keine Common Language Runtime-Unterstützung stelle, dann bekomme ich Fehler beim kompilieren.
Alle in der AssemblyInfo.cpp:
'System': Es ist kein Namespace mit diesem Namen vorhanden
'System': Keine Klasse oder Namespace
'Reflection': Es ist kein Namespace mit diesem Namen vorhandenusw ...
Kuh :>
E: Hab meinen Fehler evtl. gefunden.
E2: Es tut sich endlich etwas ! Habe das Projekt als Win32 Anwendung kompiliert und mit dem StageTwo Injector injected !
Die MessageBox erscheint nun und das injecten hat anscheinend funktioniert. Das einzige was nun noch nicht klappt, ist der WSAConnect hook.Kuh :>