Hi,
ich versuche schon seit einiger Zeit eine Dll mit ollydbg so umzuändern, dass sie in einer bestimmten Stelle die WinAPI-Funktion Sleep aufruft.
Bei einer Exe wäre das ja nicht so schwer. Da hätte ich einfach die Adresse aus den Imports ausgelesen, weil die ja für gewöhnlich immer in die virtuelle Adresse 0x00400000 geladen werden. Bei der Dll ist nun das Problem, dass die mal hierhin und mal dorthin geladen wird, sodass die Imports dementsprechend auch keine feste Adresse besitzen.
Ich habe das bis jetzt so gelöst, dass ich ein kleines Codecave geschrieben habe. Das Programm habe ich dann das Codecave callen lassen. Im Codecave wird die Return-Value mit einer bestimmten Zahl subtrahiert, sodass ich dann das Offset von dem gewünschten Import habe. Dann wird nur noch der Parameter gepusht und die WinAPI-Funktion gecallt.
Am Ende hat das ganze sogar geklappt. Aber da das ziemlich aufwendig ist, wollte ich fragen, wie noch ich das gewünschte Ergebnis erzielen kann. Ich habe mir überlegt, dass man ja dieses "Relocation Table" um einen Eintrag erweitern kann damit der WinAPI-Call immer auf den Imports-Eintrag zeigt. Jedoch habe ich kein Tool gefunden, dass das kann und mit dem Hex-Editor will das auch nicht so recht klappen.
ich versuche schon seit einiger Zeit eine Dll mit ollydbg so umzuändern, dass sie in einer bestimmten Stelle die WinAPI-Funktion Sleep aufruft.
Bei einer Exe wäre das ja nicht so schwer. Da hätte ich einfach die Adresse aus den Imports ausgelesen, weil die ja für gewöhnlich immer in die virtuelle Adresse 0x00400000 geladen werden. Bei der Dll ist nun das Problem, dass die mal hierhin und mal dorthin geladen wird, sodass die Imports dementsprechend auch keine feste Adresse besitzen.
Ich habe das bis jetzt so gelöst, dass ich ein kleines Codecave geschrieben habe. Das Programm habe ich dann das Codecave callen lassen. Im Codecave wird die Return-Value mit einer bestimmten Zahl subtrahiert, sodass ich dann das Offset von dem gewünschten Import habe. Dann wird nur noch der Parameter gepusht und die WinAPI-Funktion gecallt.
Am Ende hat das ganze sogar geklappt. Aber da das ziemlich aufwendig ist, wollte ich fragen, wie noch ich das gewünschte Ergebnis erzielen kann. Ich habe mir überlegt, dass man ja dieses "Relocation Table" um einen Eintrag erweitern kann damit der WinAPI-Call immer auf den Imports-Eintrag zeigt. Jedoch habe ich kein Tool gefunden, dass das kann und mit dem Hex-Editor will das auch nicht so recht klappen.