|
You last visited: Today at 23:26
Advertisement
DLL Injection oder einfach Opcodes reinknallen?
Discussion on DLL Injection oder einfach Opcodes reinknallen? within the General Coding forum part of the Coders Den category.
05/09/2008, 08:24
|
#1
|
elite*gold: 20
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 184
|
DLL Injection oder einfach Opcodes reinknallen?
Hi, ich habe vor im Adressbereich eines Programms von mir geschriebenen Code auszuführen, ich habe auch schon ne Ahnung wie ich das anstellen kann, zunächst muss mein Code natürlich in den Ziel Prozess und hier gibts nun zwei möglichkeiten:
A:
Ich schreibe meine Funktion als ASM-Opcodes an ne Speicher Stelle die ich mir in dem Zielprozess Aloziiert hab (oder wie man das schreibt ^^) und jetzt kann ich mit nem Aufruf von Create Remote Thread diesen Code ausführen lassen.
B:
Ich mache eine DLL mit allen Funktionen die ich im Adress bereich des Proggis ausführen will, und lad sie über nen LoadLibary call im Zielprozess rein, dann hab ich ein Problem, ich weiss nicht wie ich die Adressen meiner Funktionen im Zielspeicher bekomme um sie dann über nen Remote Thread auszuführen.
Jetzt will ich erstmal Wissen, welches die "bessere" Methode ist und wie eben Methode B dann Funktioniert. ^^
|
|
|
05/09/2008, 17:43
|
#2
|
elite*gold: 0
Join Date: May 2005
Posts: 232
Received Thanks: 52
|
du musst eh ne dll nutzen.
ka wenn ich funktionen von z.b. nem game replacen will such ich mir den function pointer im ds und ersetz ihn durch meine eigene funktion
nicht über die delphi syntax wundern, ich bin dank meiner arbeit dran gebunden :>
Code:
//funktionspointer im datensegment durch meine eigene funktion ersetzen:
// DLL_PROCESS_ATTACH:
lea eax, ModelCheck
mov [$61AF50], eax
//modelcheck sieht dann so aus:
procedure ModelCheck;
asm
//wenn die originale funktion nicht mehr aufgerufen werden soll brauchst die register
//nicht zwischenspeichern und den jmp kann man sich auch sparen
pushad
//do my stuff
popad
jmp OrgAddress
end;
wenn kein funktionspointer vorhanden ist wird der code halt soweit ersetzt, dass er zu meinem zeug springt...wenn ich irgendwas wichtiges überschreiben musste wird der originale code ersetzt und abschließend mein zeug ausgeführt
injectkram:
hierfür krieg ich kein credit, ist komplett aus der uallhook.pas der uallcollection kopiert
Code:
function InjectLibrary(dwProcessID: DWord; pLibraryName: PChar): Boolean; stdcall;
var
dwProcessID2 : DWord;
dwMemSize : DWord;
dwWritten : DWord;
dwThreadID : DWord;
pLLA : Pointer;
pTargetMemory: Pointer;
begin
Result := False;
dwProcessID2 := OpenProcess(PROCESS_ALL_ACCESS,false,dwProcessID);
if (dwProcessID2 <> 0) then
dwProcessID := dwProcessID2;
dwMemSize := Length(pLibraryName)+1;
pTargetMemory := VirtualAllocExX(dwProcessID,nil,dwMemSize, MEM_COMMIT or MEM_RESERVE,PAGE_EXECUTE_READWRITE);
pLLA := GetProcAddress(GetModuleHandleA('kernel32.dll'),'LoadLibraryA');
if (pLLA <> nil) and (pTargetMemory <> nil) and (pLibraryName <> nil) then
begin
if WriteProcessMemory(dwProcessID,pTargetMemory,pLibraryName,dwMemSize,dwWritten) and
(dwWritten = dwMemSize) then
Result := CreateRemoteThreadX(dwProcessID,nil,0,pLLA,pTargetMemory,0,dwThreadID) <> 0;
end;
if (dwProcessID2 <> 0) then
CloseHandle(dwProcessID2);
end;
wenn du eine dll function ersetzen willst google mal nach hook IAT
|
|
|
05/09/2008, 22:45
|
#3
|
elite*gold: 20
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 184
|
Ich glaube ich hatte bisher den Sinn einer dll Injection gründlich Missverstanden, ich dachte man könne eine dll in einen prozess schieben und von einem 3ten programm aus controlieren welche Functionen die DLL in dem Prozess ausführt, oder geht das doch irgendwie?
Denn so kann ich ja nur eine Funktion ersetzten bzw meine DLL muss entscheiden was sie tut und ich kann nicht von aussen über eine Externe gui Befehle in dem Ziel Process ausführen, oder?
|
|
|
05/10/2008, 00:43
|
#4
|
elite*gold: 0
Join Date: May 2005
Posts: 232
Received Thanks: 52
|
japs in der form kannst du die dll nicht von aussen ansprechen. da musst schon vorher wissen was du machen willst (=hf in olly:P) . wie du eine dll im fremden prozess ansprechen kannst, fällt mir so auf anhieb nicht ein, ka aber ist bestimmt möglich....wenns kein eleganten weg dafür geben sollte kann man es immer noch auf ne ghettovariante ala fileparsing umsetzen. btw so ne universall dll die du injectest und zackbäm sind alle funktionen gehooked gibts net. willst du importierte funktionen ersetzen hast du leichteres spiel...aber wenn du vor hast funktionen im codesegment zu ersetzen musst du für jeden mist alles 1000 debuggen bist du weißt was du eigentlich ersetzen musst. evtl denk ich auch einfach zu sehr ans funktionen ersetzen, weil ich sehr viel damit arbeite, ka... aber wenn ich irgendwas im zielprozess ausführen will, ist das mein erster gedanke
|
|
|
05/10/2008, 00:49
|
#5
|
elite*gold: 0
Join Date: May 2006
Posts: 162
Received Thanks: 44
|
Quote:
Originally Posted by emjay
japs in der form kannst du die dll nicht von aussen ansprechen. da musst schon vorher wissen was du machen willst (=hf in olly:P) . wie du eine dll im fremden prozess ansprechen kannst, fällt mir so auf anhieb nicht ein, ka aber ist bestimmt möglich....wenns kein eleganten weg dafür geben sollte kann man es immer noch auf ne ghettovariante ala fileparsing umsetzen.
|
Shared Memory, Mutex/Global Objects, SendMessage/Message Handle...
|
|
|
05/10/2008, 12:15
|
#6
|
elite*gold: 0
Join Date: Aug 2005
Posts: 896
Received Thanks: 334
|
Quote:
Originally Posted by Harko
Shared Memory, Mutex/Global Objects, SendMessage/Message Handle...
|
Named Pipes
|
|
|
05/10/2008, 12:37
|
#7
|
elite*gold: 20
Join Date: Jan 2006
Posts: 539
Received Thanks: 228
|
WriteProcessMemory, CreateRemoteThread, SetThreadContext, send, recv
|
|
|
05/11/2008, 12:23
|
#8
|
elite*gold: 20
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 184
|
Erstmal danke für die Antworten, ich denke ich werd mir mal das mit SendMessage näher anschauen, aber so wies aussieht mach ich das ganze wohl besser über ein ingame menue, ist sicher einfacher als die dll von aussen anzusprechen.
|
|
|
05/13/2008, 14:00
|
#9
|
elite*gold: 0
Join Date: May 2006
Posts: 162
Received Thanks: 44
|
Quote:
Originally Posted by Bot_interesierter
Erstmal danke für die Antworten, ich denke ich werd mir mal das mit SendMessage näher anschauen, aber so wies aussieht mach ich das ganze wohl besser über ein ingame menue, ist sicher einfacher als die dll von aussen anzusprechen.
|
ich würde shared memory nehmen. Ok ist Geschmacksache aber ich fand es in den Situation wo ich es brauchte am Sinnvollsten. Für die Kommunikation zwischen Host und Target recht praktisch weil Veränderungen an Variablen die in der Shared Section deklariert sind global zwischen beiden Prozessen passieren. Man kann also im Source Code ganz normal mit Variablen und Arrays arbeiten und im Host Process verändern. Diese Veränderungen werden dann direkt in den Target Process "übertragen".
|
|
|
 |
Similar Threads
|
Sx.yt2sf down oder einfach nur laggy?
08/22/2009 - Metin2 Private Server - 2 Replies
Hey Leuts ich wollte mich mal vergewissern wegen dem P-Server sx.yt2sf , da es persönlich mein Lieblingsserver ist. Also es ist so ich und mein Freund können za. seid einer Woche dort nicht mehr spielen da man entweder jede 2 Minuten einen Kick bekommt oder es so dermaßen laggt das man sich selber lieber kickt :D . Jetzt wollt ich mal fragen ob es bei euch auch so ist oder ob man das irgendwie umgehen kann vlt. mit einer Proxy oder Sonstigem, falls nicht nehme ich gerne Beischläge an auf...
|
ein neuer hack oder einfach nur ein bug?
07/03/2009 - Metin2 - 18 Replies
hallo liebe com
mein freund wurde heute von einem typ angehandelt und der typ hat 3,2kk ins handelsfenster getan und angenommen.
mein kumpel, der so geldgeil ist, hat einfach auch auf annehmen gedrückt und wie aus zauberhand sind aus seinem inventar breiti+9 schlachti+8 usw rausgefallen einfach alles was er anhatte
ich wollte wissen ist so etwas üüberhaupt möglich(ja habs ja selber gesehen) aber wie?????????
|
[HELP] Bug oder einfach Pech gehabt?!?
06/10/2009 - Metin2 Private Server - 20 Replies
Hi,
also ich bin seit um 14.34 ca. am Mb lesen,
Hab bis jetzt 200+ Hinterhalt MB's gelesen mit konz. lesen und exxo
das gleiche bei Degenwirbel nur das es hier ca. 60 waren.
Ich hänge bei Hinterhalt auf m4 und degenwirbel auf m1 fest, das kann doch nicht sein oder?
Alle sagen mit konz. Lesen klappts immer wieso bei mir nicht ist es bug oder einfach pech?!:(
|
BUG,oder,einfach,nur,Geil???
05/14/2008 - Metin2 - 8 Replies
Also wie oben genannt ich habe Metin gestartet
da gabs n Bug oder so:
Ich hatte als ich auf Stat erhöhen geklicht hab ertstmal alle auf 999.
Das hat sich aber nichtnur Clientside ausgewirkt:
Ich habe Viecher wie Klauenspinne,mit meinem 27er locker mit einem Schlag gekillt.
Weiterhin habe ich ein Duell mit einen schlag gewonnen.
Das genze hat sich aber nach 10min wieder "behoben".
|
ChinaFarmer ärgern erpressen oder einfach nur FUN
08/23/2006 - WoW Guides & Templates - 21 Replies
Hi ho,
also ich weiß nicht wie ihr dazu steht aber mir gehen die china farmer auf die eier.
Gm juckt die einfach nicht.
Wie kann man die Ärgern oder vielleicht doch noch ein wenig gold bekommen.
wie ihr die china farmer findet ist? ist eigendlich ganz leicht sucht nach 60 jägern
in tanaris sili maraoudon azshara. wenn sie gildenlos sind seid ihr auf dem richtigen weg aber es gibt auch viele die in einer gilde sind aber nachts um 4 sind 90% der jäger auf 60 China farmer.
1. Vorschlag
|
All times are GMT +1. The time now is 23:26.
|
|