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. ^^
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
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?
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
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.
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.
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".
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