Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi API-Funktion "hooken" direkt in Anwendung (https://www.delphipraxis.net/122409-api-funktion-hooken-direkt-anwendung.html)

chri_ri 15. Okt 2008 17:10


API-Funktion "hooken" direkt in Anwendung
 
Hallo,
erstmal sorry dass mein Thema nicht wirklich mit Delphi zu tun hat aber ich weiß nicht weiter.


Mein Problem:

Ich habe eine Anwendung, welche ich NICHT selbst programmiert habe und zu welcher ich KEINEN Quellcode habe. In welcher Programmiersprache diese programmiert wurde bin ich mir nicht sicher.

Die Anwendung legt ein paar Config-Dateien unter "C:\Dokumente und Einstellungen\<USERNAME>\Anwendungsdaten\<Programm name> an. Vermutlich verwendet Sie dabei die Systemvariable "%appdata%".

Ich möchte nun lediglich das erstellen dieser Config-Dateien verhindern. Eine Zugriffsüberwachung und Korrigierung (Löschung) der Config-Dateien wäre zwar wesentlich einfacher, jedoch möchte ich es so möglichst NICHT lösen.
Ich hatte daran gedacht per Assembler (OllyDbg) mir den Code anzuschaun und an der Entscheidenden Stelle den Aufruf der CreateFile-Funktion der Windows-API "blind" zu machen. Jedoch NUR für diese / in dieser einzigen Anwendung.


Ich scheitere leider kläglich.


Ich würde mich sehr über ein paar Tips freuen. Schonmal vielen Dank im Vorraus!



mfg. FRY82

jmd anders 15. Okt 2008 20:26

Re: API-Funktion "hooken" direkt in Anwendung
 
wie siehts damit aus einfach den ordner schreibgeschützt zu machen? was passiert dann?

zero_x 15. Okt 2008 20:27

Re: API-Funktion "hooken" direkt in Anwendung
 
Hallo chri_ri,

mit dieser Funktion sollte es eigentlich möglich sein: http://msdn.microsoft.com/en-us/library/aa365465(VS.85).aspx .

zero_x

Zacherl 15. Okt 2008 21:06

Re: API-Funktion "hooken" direkt in Anwendung
 
Ich glaube er will das Programm direkt patchen über OllyDbg und co.

Du müsstest rausfinden an welcher Stelle die Files geschrieben werden und dann den Codeverlauf mit gezielten JMPs umzubiegen.

brechi 16. Okt 2008 10:12

Re: API-Funktion "hooken" direkt in Anwendung
 
Willst du es durch patchen machen oder eventuell durch andere Methoden (hooking). Zweiteres ist jedenfalls eifnach indem du CreateFileA hooks und eben dann die Datei nicht öffnest, bzw auf eine TEMP Datei umleitest. Dies ist dann nötig wenn z.b. ein Fehler auftritt wenn die Datei nicht erstellt werden konnte.

Wenn du Glück hast, kannst du einen Hexeditor nehmen und dort nach der cfg Datei suchen (der name sollte da drin stehen). Dann machst du einfach ein #0 am Beginng des Namen (dadurch hast du Ihn sozusagen gelöscht) oder du nimmst Zeichen die von windows nicht erlaubt sind (z.B. <) und überschreibst da einen Buchstaben mit.

Im Normalfall wird dann CreateFileA mit einerm Ordner bzw. ungültigen Dateinamen aufgerufen und sollte fehlschlagen.

chri_ri 16. Okt 2008 16:42

Re: API-Funktion "hooken" direkt in Anwendung
 
Also ich möchte nicht überwachen, sondern das schreiben dieser config-dateien ganz verhindern.
Ein Sperren des Zielordner kommt nicht in Frage.
Eine Möglichkeit per Hook oder ähnlichem wäre zwar noch was, jedoch würde ich das patchen auf jeden Fall vorziehen.
Mal ganz davon abgesehn, dass diverse AntiVir-Programme wie z.B. Kaspersky bei nem Hook den unwissenden User verwirren könnten, falls ich das Prinzip auch mal bei nem Tool oder so anwende, welches ich weitergebe.
Weil hab schon öfters nach einer Lösung für ähnliche Probleme gesucht.

Achja und nach Dateipfaden habe ich schon gesucht und leider nix gefunden.



mfg. chri_ri

brechi 16. Okt 2008 22:00

Re: API-Funktion "hooken" direkt in Anwendung
 
du sollst ja auch den dateinamen abändern

chri_ri 17. Okt 2008 01:15

Re: API-Funktion "hooken" direkt in Anwendung
 
Danke für den tipp. Habe das auch schon richtig verstanden. Nur ich finde keine Dateinamen in der Anwendung. Sonst hätte ich das ja schon längst versucht. Nungut. Sorry habe echt immernoch keine Lösung :-(


mfg. chri_ri

brechi 17. Okt 2008 12:31

Re: API-Funktion "hooken" direkt in Anwendung
 
dann setz nen BP auf CreateFileA dort ist ja auch der parameter für die Datei angegeben. Dann steppst du soweit durch bis du zu einem aufruf kommst wo vorher der ordner+dateiname zusammengeügtwerden. dann nur noch da den aufruf noppen.

als alternative kannst du mir auch die datei schicken

chri_ri 17. Okt 2008 13:24

Re: API-Funktion "hooken" direkt in Anwendung
 
Liste der Anhänge anzeigen (Anzahl: 1)
hm also was du meinst kann ich mir in etwa vorstellen.

Nur ich komme trotzdem nicht zurecht.

Ich habe ja extra nach dem CreateFile gesucht. Ich bin was Assembler angeht nicht so ganz bewandert. Also habe ich angenommen, dass ich es vielleich in dem Code vor dem EP (EntryPoint) finde.
Habe dort oben auch irgendetwas gefunden, was nen Wert per MOV zu irgendeinem Offset schiebt. Und mein "OllyDbg" hat mir dahinter das Kernel32.CreateFile als Info angezeigt. Wollte das NOOPen, weil ich keine Ahnung hatte obs das is und es einfach testen wollte.

Schließlich als ich speichern wollte habe ich gesehn, dass mein OllyDbg zwar die Anwendung geöffnet hat, jedoch mir komischerweise immer beim speichern (nichtnur bei Änderungen über dem EP) sagt, ich wäre in der kernel32.dll (C:\WINDOWS\System32).

Also irgendwie kommt mir das ein wenig spanisch vor. Und durchsehen tu ich in dem Code irgendwie nicht ganz. Ich kenne zwar die Grund-Assembler-Befehle aber naja. Und ich denke, dass mir Ohne Durchblick einfach das setzen eines Breakpoints an irgendeinem vermeintlichem CreateFile und das damit verbundene Verhindern der Ausführung dieses Befehls nicht viel bringen wird :-(


Also ich hänge mal eine Beispel-Anwendung an, mit der ich das machen möchte, aber nicht zurecht komme.



mfg. chri_ri


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:48 Uhr.
Seite 1 von 2  1 2      

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