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 Assarbad
Assarbad

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

AW: IAT von kernel32.dll zur Laufzeit patchen

  Alt 28. Nov 2016, 07:51
Ich vermute mal, dass er einen IAT Hook basteln will, um alle Aurufe einer bestimmten API aus der kernel32.dll heraus auf einen eigenen Callback umzulenken
Jenau! Schrieb ich ja auch schon. Und zwar geht es um die äußerst unzuverlässigen Funktionen um verschiedene Ressourcentypen zu laden, bzw. die Funktion aus ntdll.dll welche als Unterbau benutzt wird. Damit will ich die Auswahl der richtigen Sprache in einem Modul gewährleisten. Microsoft hat nämlich leider alles rund um Sprachauswahl bis Windows Vista (exklusive) verbockt. Daher auch immer deren Empfehlung die einzelnen Sprachen in separate DLLs mit jeweils nur einer Sprache auszulagern. Das Problem wurde nämlich erst mit Windows Vista zuverlässig gelöst.

Klingt für mich eigentlich korrekt was du machst Hier mal ein Auszug aus einem C-Programm von mir, was über die Imports iteriert und beim Fund einer übergebenen Adresse den Namen ausgibt
Danke, bis auf die Tatsache, daß ich bei den Thunks die RVAs aus der Liste einzeln in VAs übersetze, ist mein Code funktionell identisch. Vermutlich sind die Linker so vernünftig die IMAGE_THUNK_DATA-Records direkt als lückenlose Liste hinzupappen, weshalb es auch geht nur die RVA zum ersten zu übersetzen und beim Rest halt jeweils sizeof(IMAGE_THUNK_DATA) dazu.

Ach ja, ich sollte noch erwähnen, daß ich halt RtlImageRvaToVa benutze, aber auch geprüft habe, daß die Rückgabewerte Modul+RVA entsprechen (du machst die Berechnung ja inline).

Und das Wunder der DP hat mal wieder zugeschlagen.
Das ist aber ein nettes Kompliment an Zacherl. Und in der Tat bin ich auch immer wieder von seinen fundierten Antworten begeistert. Die machen Freude.

Also vielen Dank Zacherl, dann nehme ich an daß es u.U. an Windows 7 liegt. Ich werde mir das nochmal auf früheren Versionen zu Gemüte führen, schließlich existiert das zu lösende Problem nur auf Windowsversionen vor Vista.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)

Geändert von Assarbad (28. Nov 2016 um 08:00 Uhr)
  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 06:20 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