Ik wil graag in een niet-door-mij-geschreven executable een beetje "debuggen", ik wil namelijk 2 functie-calls hooken:
door de executable de de-assemblen vindt ik een 2tal adressen die ik nodig heb, de functie zelf en (het unieke) aanroepende adres.
Voorbeeldje:
nu inject ik mijn eigen code, aangepast aan voorbeeld hierboven:
Probleem is, functie 1 werkt naar behoren (wordt aangeroepen, en returnt de juiste waarde), maar zodra ik f2original aanroep (regel 16) krijg ik een mooie access violation.
Nu denk ik dat het probleem met f2_hooked is dat het iets niet goed opruimt, of dat p niet goed doorkomt, maar ik zou niet weten hoe ik dit zou kunnen verbeteren...
Alle hints/tips/ervaringen zijn zeer welkom!
code:
1
2
| functie 1: obj *func1(void) -> allocate 1 en ander functie 2: void func2(obj *) -> deallocate geheel |
door de executable de de-assemblen vindt ik een 2tal adressen die ik nodig heb, de functie zelf en (het unieke) aanroepende adres.
Voorbeeldje:
GAS:
1
2
3
4
5
6
7
8
9
10
11
12
13
| ... 0x10 call 0x20 <- aanroepende adres functie 1 ... 0x15 call 0x40 <- aanroepende adres functie 2 ... 0x20 <- functie 1 ... (functie) 0x30 ret ... 0x40 <- functie 2 ... (functie) 0x50 ret ... |
nu inject ik mijn eigen code, aangepast aan voorbeeld hierboven:
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| typedef obj * __cdecl f1proto(void); typedef void __cdecl f2proto(obj *); f1proto *f1original = (f1proto *)0x20; f2proto *f2original = (f2proto *)0x40; obj *adres; extern "C" { obj *f1_hooked(void) { adres = f1original(); return adres; } void f2_hooked(obj *p) { f2original(p); } } void hook() { /* schrijf naar 0x10 instructie call <f1_hooked> schrijf naar 0x15 instructie call <f2_hooked> */ } |
Probleem is, functie 1 werkt naar behoren (wordt aangeroepen, en returnt de juiste waarde), maar zodra ik f2original aanroep (regel 16) krijg ik een mooie access violation.
Nu denk ik dat het probleem met f2_hooked is dat het iets niet goed opruimt, of dat p niet goed doorkomt, maar ik zou niet weten hoe ik dit zou kunnen verbeteren...
Alle hints/tips/ervaringen zijn zeer welkom!
[ Voor 3% gewijzigd door MLM op 20-06-2005 14:25 . Reden: layout ]
-niks-