![]() |
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 |
Re: API-Funktion "hooken" direkt in Anwendung
wie siehts damit aus einfach den ordner schreibgeschützt zu machen? was passiert dann?
|
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 |
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. |
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. |
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 |
Re: API-Funktion "hooken" direkt in Anwendung
du sollst ja auch den dateinamen abändern
|
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 |
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 |
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. |
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