infoarena

Comunitate - feedback, proiecte si distractie => Off topic => Subiect creat de: Constantin-Cristian Balas din Noiembrie 20, 2008, 18:00:40



Titlul: "Interventie" intr-o aplicatie
Scris de: Constantin-Cristian Balas din Noiembrie 20, 2008, 18:00:40
Salut,
Am o aplicatie (closed source, pe windows), si as vrea ca atunci aplicatia apeleaza o functie dintr-un dll (care este in directorul aplicatiei), o alta aplicatie (creata de mine) sa fie notificata.
Are cineva vreo idee?


Titlul: Răspuns: "Interventie" intr-o aplicatie
Scris de: Valentin Stanciu din Noiembrie 21, 2008, 11:10:57
Daca stii semnatura functiei, poti sa inlocuiesti dll-ul programului cu unul facut de tine care te anunta cand se apeleaza functia si apoi ruleaza functia din dll-ul original. Practic faci un "wrapper" la acel dll

Daca nu stii semnatura functiei e mai complicat. Teoretic poti sa dezasamblezi programul si sa inlocuiesti toate apelurile catre acea functie din dll cu apel catre functia ta care te anunta si apeleaza functia originala. Aici nu mai trebuie sa stii semnatura functiei, doar muti cursorul de executie acolo unde e deja incarcata functia in memorie.


Sau poti incerca sa faci un program care monitorizeaza accesul la acel fisier. Cand se apeleaza functia din dll se citeste din fisier. Problema este ca s-ar putea sa mearga doar prima data cand acceseaza fisierul, in rest tinandu-l in memorie.

Dupa cum vezi, solutiile nu sunt tocmai simple :)


Titlul: Răspuns: "Interventie" intr-o aplicatie
Scris de: Constantin-Cristian Balas din Noiembrie 21, 2008, 17:22:25
Aham..
Eu ma gandeam sa fac daca pot ceva in mod dinamic, la incarcarea aplicatiei mele, fara sa modific aplicatia originala (dll injection? nu stiu prea multe despre..).. pt ca vreau sa distribui aplicatia mea mai multor persoane, si nu vreau sa le stric aplicatia originala din vreo greseala.

Oricum, daca e nasol asa, o sa incerc alta abordare..

Mersi!


Titlul: Răspuns: "Interventie" intr-o aplicatie
Scris de: Valentin Stanciu din Noiembrie 21, 2008, 20:38:54
La "solutiile" astea m-am gandit eu. Poate exista si altceva mai simplu.