AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) IAT von kernel32.dll zur Laufzeit patchen
Thema durchsuchen
Ansicht
Themen-Optionen

IAT von kernel32.dll zur Laufzeit patchen

Ein Thema von Assarbad · begonnen am 27. Nov 2016 · letzter Beitrag vom 4. Dez 2016
Antwort Antwort
Benutzerbild von NicoDE
NicoDE

Registriert seit: 16. Jul 2012
Ort: Darmstadt
26 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: IAT von kernel32.dll zur Laufzeit patchen

  Alt 28. Nov 2016, 09:31
Und nun wird's seltsam.
Im Moment habe ich leider keine Zeit, mir das genauer anzusehen.
Aber da die Systembibliotheken in neueren Windows-Versionen reloziert werden können, würde ich mir den Unterschied zwischen ursprünglicher und tatsächlicher Basisadresse ansehen...
Nico Bendlin
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#2

AW: IAT von kernel32.dll zur Laufzeit patchen

  Alt 28. Nov 2016, 09:46
Das ist ein guter Ansatz. Gucke ich direkt mal nach.

Allerdings würde ich ja dennoch erwarten in der IAT die echten Adressen zu sehen. Ich glaub ich muß da nochmal mit IDA ran.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#3

AW: IAT von kernel32.dll zur Laufzeit patchen

  Alt 3. Dez 2016, 20:34
Moin, also das mit dem Offset schien nicht hinzukommen, oder ich hab's falsch gemacht.

Einerlei, ich hab jetzt ne alte Methode benutzt. Und da ich das nur für Versionen vor Vista brauche, klappt diese meine alte Methode noch. Dabei ermittle ich über MSDN-Library durchsuchenGetProcAddress die Adresse der Funktion LdrFindResource_U und suche die dann in der FirstThunk-Liste. Muß das noch auf Windows 2000 und x64-Versionen testen und dann ist es auch schon reif für den nächsten Release.

Code und Programme findet ihr hier: ntobjx.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: IAT von kernel32.dll zur Laufzeit patchen

  Alt 3. Dez 2016, 23:06
Der Link zur Dokumentation auf der Seite geht nicht: 404.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#5

AW: IAT von kernel32.dll zur Laufzeit patchen

  Alt 4. Dez 2016, 00:48
Der Link zur Dokumentation auf der Seite geht nicht: 404.
Dank dir. Hab das direkt mal behoben. Bitbucket mag wohl keine absoluten URIs im reStructuredText, also bin ich wieder auf absolute URLs ausgewichen.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#6

AW: IAT von kernel32.dll zur Laufzeit patchen

  Alt 4. Dez 2016, 10:46
Mal ein Schuss ins Blaue: sind die Adressen (aus IAT) und die virtuellen Adresse mit denen du die vergleichst alle aus dem gleichen Prozess? Wenn man nicht daran denkt, kann Adressraum-Randomisierung für Verwirrung sorgen ... ich weiß aber nicht wie die in Windows umgesetzt ist.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#7

AW: IAT von kernel32.dll zur Laufzeit patchen

  Alt 4. Dez 2016, 18:02
Warum soll die nicht im gleichen Prozeß sein? Ich parse ja schließlich die IAT der kernel32.dll in genau dem Prozeß in dem ich die Funktion hooken will.

Das Problem ist ja auch weniger ASLR, denn wenn ich auf die Adressen zugreife, müßten sie ja zugreifbar sein. Letzten Endes müssen Funktionsaufrufe innerhalb kernel32.dll exakt den gleichen Weg nehmen. Also selbst wenn es ein Resultat von ASLR wäre, sollten die Adressen ja zugreifbar sein. Sonst macht auch ASLR keinen Sinn, sondern nur Abstürze
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 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