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 WriteProcessMemory wenn dll bereits injected (https://www.delphipraxis.net/103685-writeprocessmemory-wenn-dll-bereits-injected.html)

flash2008 20. Nov 2007 01:44


WriteProcessMemory wenn dll bereits injected
 
Hi Leute ,
ich spiel momentan noch immer mit dll injecten rum und hab überlegt in dem Programm in das ich injected habe,
Programmcode zu verändern (vergleichbar mit dem was man in olly machen kann (NOP setzen usw..)
normalerweise könnte ich sowas ja extern machen über openProcess.. WriteProcessMemory
Da die dll nun im Programm schon drinsteckt und ausgeführt wird,
dachte ich mir ich müsste doch auch so was verändern können z.B.: mit mov
dadurch könnte man zb extern nicht mitlesen (API hook auf WriteProcessMemory)

hab mal als Beispiel ne Reihe aus TS genommen

Delphi-Quellcode:
005181EC    C1E1 02             SHL ECX,2
005181EF    8BC6                MOV EAX,ESI
005181F1     E8 02ABEEFF        CALL TeamSpea.00402CF8           << hier würd ich um den call zu verhindern zb NOPs setzen
005181F6     8B85 F0FBFFFF      MOV EAX,DWORD PTR SS:[EBP-410]
so sieht das in olly aus

Delphi-Quellcode:
005181EC    C1E1 02             SHL ECX,2
005181EF    8BC6                MOV EAX,ESI
005181F1     90                  NOP
005181F2     90                  NOP
005181F3     90                  NOP
005181F4     90                  NOP
005181F5     90                  NOP
005181F6     8B85 F0FBFFFF      MOV EAX,DWORD PTR SS:[EBP-410]
wenn ich jetzt sowas mache
Delphi-Quellcode:
begin
  asm
    mov [005181F1],$90
    mov [005181F2],$90
    mov [005181F3],$90
    mov [005181F4],$90
    mov [005181F5],$90
  end;
end;
Gibts nur ne tolle fehlermeldung von Windows das es ne Speicherzugriffsverletzung gab.
Leider hat auch google keine hilfreichen ergebnisse dazu ausgespuckt.

gruß flash

Coly 20. Nov 2007 02:00

Re: WriteProcessMemory wenn dll bereits injected
 
005181EF 8BC6 MOV EAX,ESI ^^ das könnteste dann auch mit nem NOP versehen da es die zu übergebenden Variable ist die du ja net mehr brauchst, ich könnte wetten Aufrufe danach verweisen auf den Call inhalt bzw. den rückgabewert und auch
da machts Bums ^^..
Die meisten nutzen halt den weg über austauschen von Functionen (Sprung Adressen) Biegen sie halt auf ihre eigene Funktion und Safen die alte und rufen sie auf nach änderung der dinge.
Ansich ist nen Directer Code change in Programmen möglich , halt bei geschützten bereichen knallt es. Must schauen ob der Bereich den du da Manipulierst auch Schreibrechte hat und nicht nur Leserechte.

flash2008 20. Nov 2007 02:11

Re: WriteProcessMemory wenn dll bereits injected
 
hey cool so schnell ne antwort und dann noch so spät :thumb:
Wo und was ich reinschreibe war jetzt nicht so wichtig war jetzt nurn Beispiel für den Vorgang.
Was ich mir Bastel ist ne Art CodeCave allerdings will ich da daten abfangen,verändern und dann zurückspringen.
Leider bringen mich so sachen wie uallhook/madhook nur bedingt weiter,obwohl das ja super gemacht ist.

Aber wie find ich raus ob ich reinschreiben darf ?
und wie schreib ich dann rein ? geht das per mov befehl?

Basilikum 20. Nov 2007 06:42

Re: WriteProcessMemory wenn dll bereits injected
 
Memory-Bereiche, in denen ausführbarer Code liegt, werden von Windows üblicherweise auf ReadOnly+Executable gesetzt... mit MSDN-Library durchsuchenVirtualProtect lässt sich dies aber ändern...

k4ni 21. Nov 2007 11:37

Re: WriteProcessMemory wenn dll bereits injected
 
Hey,

Ich hab auch ein problem in diesem bereich und will keinen neuen thread öffnen.
Ich will irgendwie, ob mit WPM oder dll-inject. Auf diese adresse schreiben: "00488C02"
Auf dieser adresse steht das hier: "jne 00488b74"
Ollydbg ss:
http://download.lima-city.de/crackcheck/olly_del.JPG

Und will ganz einfach das N zu einem b ändern, also ""jbe 00488b74"
Wie sollt ich das am besten machen?
Hab schon ein TUT gemacht, aber das hat nicht funktioniert.
Was würdet ihr mir empfehlen ?
THX

flash2008 21. Dez 2007 02:32

Re: WriteProcessMemory wenn dll bereits injected
 
Ist zwar schon ne Weile her aber ich schreib mal wie ichs machen würde,
und zwar erst mit olly gucken wie sich die Adresse verändert wenn du den jne auf jbe änders,
mir das merken und dann per write process memory an der stelle den veränderten wert reinschreiben ;) .


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:37 Uhr.

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