Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi MSN Messenger Exploit (https://www.delphipraxis.net/105086-msn-messenger-exploit.html)

hedie 15. Dez 2007 13:47


MSN Messenger Exploit
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo....

Ich habe da mal eine Frage...

Ich habe auf einer bestimmten Website einen C++ Code gefunden der es angeblich ermöglicht,
nach ersetzen einer MSN DLL das MSN des kollegen abstürtzen zu lassen...

Der Original einleitungs Text sieht so aus:

Code:
MSN messenger 7.x (8.0?) VIDEO Remote Heap Overflow Exploit

thanks ole andre again, His ospy is perfect.

1.compile the dll.
2.inject the dll to msn messenger 7.0.777.0 's process.
3. choose "send my webcam" to a contact id who is online using 7.x (8.0?).
4.when the otherside accept the invatation , the otherside's msn will be at least crashed, if you using aChinese version windows 2000 sp4 , maybe a reverse shell , if other verison windows 2000, you need adjust the jmpa address in the dll's sourcecode.
Nun die Frage, ist es möglich, da ich keine ahnung von C++ habe, den angehängten Code auch in Delphi
zu einer DLL zu Compilieren und diese zu verwenden?



Danke schonmal

Liebe Grüsse
Claudio

SubData 15. Dez 2007 13:49

Re: MSN Messenger Exploit
 
Ja ist möglich.

RobertP 15. Dez 2007 13:50

Re: MSN Messenger Exploit
 
Möglich ists vielleicht schon, aber hier wird dir dabei bestimmt keiner helfen! :wall:

hedie 15. Dez 2007 13:51

Re: MSN Messenger Exploit
 
Es geht mir in ersterlinie darum zu verstehen wie man C++ Code in Delphi bzw. Pascal umwandelt

Der Exploit ist zufall bzw. nebensächlich....

SubData 15. Dez 2007 13:52

Re: MSN Messenger Exploit
 
Dann nimm nen anderen Beispielcode

Luckie 15. Dez 2007 14:00

Re: MSN Messenger Exploit
 
Liste der Anhänge anzeigen (Anzahl: 1)
Dann nimm den Code im Anhang, dann würdest du mir viel Arbeit ersparen. ;)

hedie 15. Dez 2007 14:02

Re: MSN Messenger Exploit
 
Ok gut dan mit deinem Anhang....

Aber ich kann ja C++ net selbst in Delphi umwandeln....

Hat mir jemand Tipps oder so

Zacherl 15. Dez 2007 14:06

Re: MSN Messenger Exploit
 
Naja, wenn du sowas wie diesen Exploit findest, kannst du ihn auch einfach mit einem C Compiler kompilieren. Wenn du wirklich nur einzelne Code Teile nach Delphi portieren willst, musst du dich wohl oder übel mit C vertraut machen.

hedie 15. Dez 2007 14:07

Re: MSN Messenger Exploit
 
Den Exploit Compilieren geht mit Visual C++ Express net weil
die Datei windows.h fehlt und ich habe keinen Plan wo ich diese herbekommen könnte....

SubData 15. Dez 2007 14:08

Re: MSN Messenger Exploit
 
Und falls du nur wissen willst, ob der Code funktioniert: Ja tut er...

Luckie 15. Dez 2007 14:09

Re: MSN Messenger Exploit
 
Zitat:

Zitat von hedie
Ok gut dan mit deinem Anhang....

Vergiss es. Das war nur ein Scherz. Für einen Anfänger sollte das etwas zu schwer sein.

Grundsätzlich solltest du dich erstmal mit der Sprache auseinandersetzen, die du nicht kannst. Dann kann man sich daran machen etwas von einer Sprache in die andere zu übersetzen.

hedie 15. Dez 2007 14:10

Re: MSN Messenger Exploit
 
@ SubData

Sicher?
Woher weisst du da?

///////////////

@Luckie

Ja du hast recht :D

SubData 15. Dez 2007 14:11

Re: MSN Messenger Exploit
 
Getestet...

hedie 15. Dez 2007 14:13

Re: MSN Messenger Exploit
 
Cool :D

Wie kann man den eine DLL in einen Process Injecten

Das is nur ne Allgemeine Frage ich meine ich krieg ja nichtmal die DLL hin :D

Luckie 15. Dez 2007 14:17

Re: MSN Messenger Exploit
 
Zitat:

Zitat von hedie
Wie kann man den eine DLL in einen Process Injecten

Das is nur ne Allgemeine Frage ich meine ich krieg ja nichtmal die DLL hin :D

Dann solltest du dich erstmal mit DLLs beschäftigen: http://www.michael-puff.de/Developer...orte/Assarbad/

Und bitte benutzt die Forensuche und erstell für eine neue Frage einen neuen Thread.

PaddyL 15. Dez 2007 14:28

Re: MSN Messenger Exploit
 
Zitat:

Zitat von hedie
Cool :D

Wie kann man den eine DLL in einen Process Injecten

Das is nur ne Allgemeine Frage ich meine ich krieg ja nichtmal die DLL hin :D

Wieso immer gleich ne ganze DLL? Ich hab das mal aus Spaß per Thread gemacht:

InjectCode.pas
Delphi-Quellcode:
unit InjectCode;

interface

uses
  Windows, ShellAPI, Dialogs;

procedure Inject(ProcessHandle: longword; EntryPoint: pointer);
procedure FindAndInject(WindowTitle: PChar; EntryPoint: pointer);

implementation

procedure Inject(ProcessHandle: longword; EntryPoint: pointer);
var
  Module, NewModule: Pointer;
  Size, BytesWritten, TID: longword;
begin
  Module := Pointer(GetModuleHandle(nil));
  Size := PImageOptionalHeader(Pointer(integer(Module) + PImageDosHeader(Module)._lfanew + SizeOf(dword) +SizeOf(TImageFileHeader))).SizeOfImage;
  VirtualFreeEx(ProcessHandle, Module, 0, MEM_RELEASE);
  NewModule := VirtualAllocEx(ProcessHandle, Module, Size, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE);
  WriteProcessMemory(ProcessHandle, NewModule, Module, Size, BytesWritten);
  CreateRemoteThread(ProcessHandle, nil, 0, EntryPoint, Module, 0, TID);
end;

procedure FindAndInject(WindowTitle: PChar; EntryPoint: pointer);
var
  ProcessHandle, PID: longword;
  Active : Integer;
begin
  Active := FindWindow(nil, WindowTitle);
  if Active = 0 then
    Exit;
  GetWindowThreadProcessId(Active, @PID);
  ProcessHandle := OpenProcess(PROCESS_ALL_ACCESS, False, PID);
  Inject(ProcessHandle, EntryPoint);
  CloseHandle(ProcessHandle);
end;

end.
GTADelphi.dpr
Delphi-Quellcode:
program GTADelphi;

{$IMAGEBASE $13140000}

{$R 'GTADelphi.res' 'GTADelphi.rc'}

uses
  Windows, InjectCode;

{ This is the function which get's injected
  so add all your neat stuff here          }
function Main(EntryPoint: Pointer): LongWord; stdcall;
var
  ClearWantedLevel: procedure;
begin
  ClearWantedLevel := ptr($00438E40);
  ClearWantedLevel;
 
  Result := 0;
end;

begin
  // Inject Code
  FindAndInject('GTA: San Andreas', @Main);
  // Our Job is done
end.
Injected sich in San Andreas und ruft die Funktion zum reseten des Wanted Levels auf (sodas die Polizei einen nicht weiter sucht). Dannach beendet sich das ganze.

hedie 15. Dez 2007 14:30

Re: MSN Messenger Exploit
 
Coool Danke....

Hätt ich jetzt ne brauchbare zu Injectende DLL würd ich das glatt Testen

:D

PaddyL 15. Dez 2007 14:34

Re: MSN Messenger Exploit
 
Zitat:

Zitat von hedie
Coool Danke....

Hätt ich jetzt ne brauchbare zu Injectende DLL würd ich das glatt Testen

:D

Wie ich bereits sagte benutze ich keine DLL. Schreib deinen Code in die Main-Funktion. Sei allerdings gewarnt, dass 90% aller Delphi-Codes hier nicht gehen, da du hier im fremdem Addressraum arbeitest und nicht mal annähernd alles geladen ist was die VCL benötigt. Probiere ein paar einfache Win32-Calls wie CopyFile() und DeleteFile() oder such dir ein paar inGame oder inApp Addressen die du, wie ich im Beispiel, callen kannst um zu sehen ob es funktioniert hat.

Namenloser 15. Dez 2007 16:36

Re: MSN Messenger Exploit
 
Hallo, ich hab den Code mal mit Notepad testen wollen.
Leider funktioniert folgendes nicht:
Delphi-Quellcode:
program Project2;

{$IMAGEBASE $20000} //Imagebase mit HxD rausgekriegt

uses
  windows,
  InjectCode in 'InjectCode.pas';

function Main(EntryPoint: Pointer): LongWord; stdcall;
begin
  MessageBoxA(0,'Hallo Welt','meep',MB_OK);
  result := 0;
end;

begin
  FindAndInject('Unbenannt - Editor', @Main);
end.
Statt eine Messagebox anzuzeigen stürzt Notepad einfach ohne Fehlermeldung ab. Am Code in der function Main scheint es nicht zu liegen, weil Notepad sogar bei einer leheren Main-Funktion abstürzt.

Neotracer64 15. Dez 2007 17:04

Re: MSN Messenger Exploit
 
Ich weiss ja nicht genau, was PaddyL da genau machen wollte.
Zum Beispiel holt er sich die Base des eigenen MainModules und Freed diesen Addressbereich im fremden Prozess ohne zu wissen was sich dort befindet. Hää
Die Idee ist, die Funktion in den gleichen Addressbereich zu stopfen um nicht relocaten zu müssen.
Dass das funktionieren wird, ist aber sehr vage. Eigentlich muss man sogar viel Glück haben, dass es klappt.

http://msdn2.microsoft.com/en-us/library/aa366890.aspx
Zitat:

Zitat von MSDN
VirtualAllocEx Function
[...]
lpAddress

The pointer that specifies a desired starting address for the region of pages that you want to allocate.

If you are reserving memory, the function rounds this address down to the nearest multiple of the allocation granularity.

If you are committing memory that is already reserved, the function rounds this address down to the nearest page boundary.
[...]

Dann quetsch er dort das gesamte MainModule rein. Warum eigentlich?

Insgesamt also eigentlich eine sehr unsichere Methode.
Besser ist es, die beiden Addressen der Funktionen GetProcAddress und LoadLibraryA mit rüberzukopieren.
Dann ist man unabhängig. ;)
Natürlich darf man dann nicht auf globals zugreifen oder die RTL. Man beginnt in diesem Thread sozusagen von 0 mit GetProcAddres und LoadLibrary ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz