J'ai une DLL C native qui exporte une fonction en plus de DllEntryPoint, FuncX. J'essaie de savoir comment FuncX communique avec son appelant, car il a un type de retour vide et aucun paramètre. Quand je l'appelle à partir d'un harnais C#, j'obtiens une exception AccessViolationException - Tentative de lecture ou d'écriture de la mémoire protégée.Tentative de lecture ou d'écriture de la mémoire protégée lors de l'appel de la DLL C native
J'ai l'intuition que son application client peut allouer un tampon pour envoyer ou recevoir des valeurs de la DLL. Est-ce une intuition valide?
Je ne parviens pas à déboguer l'application client car, pour une raison quelconque, elle ne s'exécute pas, donc je ne peux pas la démarrer et la connecter au processus. Je peux, cependant, le démonter dans IDA Pro, mais je ne sais pas comment, si je peux, essayer et déboguer là-dedans.
Je ne suis qu'à la page 20 d'un didacticiel de 300 pages sur IDA Pro et j'ai commandé un livre de 600 pages, mais pour l'instant, comment charger la DLL dans IDA Pro et l'appeler encore C#? Je vérifie le plug-in Decompiler, merci. – ProfK
Ouch, mes yeux ont vu le prix du décompilateur. Au taux de change actuel, c'est trois fois le paiement de ma maison! Probablement un investissement digne si j'obtiens plus de travail d'ingénierie inverse. – ProfK
Je ne sais pas, je n'ai jamais beaucoup IDA moi-même. Je l'ai seulement vu utilisé à mon ancien travail. Mais lorsque vous obtenez le crash, jetez un coup d'oeil dans le AccessViolationException et voyez si vous pouvez trouver une adresse de mémoire. Je sais que vous pouvez aller directement à une adresse mémoire et voir ce qu'il y a. Peut-être que ça va vous aider à démarrer. – zildjohn01