IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

Cr�er une DLL en C++ pour l'utiliser dans un projet C#


Sujet :

Visual C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre � l'essai Avatar de Volviczox
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2016
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 27
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 4
    Par d�faut Cr�er une DLL en C++ pour l'utiliser dans un projet C#
    Bonsoir le forum C++,

    Je suis �tudiant en BTS SIO et nous travaillons en C# sur Visual Studio.
    Je me posais une petite question, j'ai dans mon projet c# une classe avec quelques fonctions, imaginons par exemple (pour simplifier tout �a) que ma classe contienne uniquement une fonction retournerVRAI qui fasse uniquement un return true;

    En fait j'aimerai cr�er une DLL en c++ que j�appellerai ensuite dans mon projet c# en faisant un DLLImport.
    J'ai suivi plusieurs tutoriels et autres topics en rapport mais je n'y arrive d�finitivement pas (je n'ai pas le niveau requis en anglais pour comprendre parfaitement ce qu'ils expliquent...)


    En fait j'aimerai savoir si quelqu'un aurait la gentillesse de me cr�er un projet C++ d'une DLL avec une fonction retournerVRAI, pour que dans mon code c# j'ai juste � faire :
    [DllImport("nomDeLaDLL")]
    public static extern bool retournerVRAI();

    Je pense que je pourrais ainsi comprendre comment cela fonctionne et donc avoir une base fonctionnelle sur laquelle travailler


    Merci d'avance,
    Volviczox.

  2. #2
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 504
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 504
    Par d�faut
    C'est quoi tes contraintes ?

    Parce que l�, c'est vraiment se faire chier pour pas grand-chose.

    Le plus simple pour appeler du code C++ depuis du .NET, c'est de faire une Dll en C++/CLI.
    Vous faites des classes manag�es en C++/CLI qui seront directement appelable depuis du code .NET.

    Si c'est pour faire mumuse avec "[DllImport(...)]", le plus simple c'est de faire du C et pas du C++, rapport au mangling de oufgueding du C++.
    Si tu ne sais pas d�sactiver le mangling C++, c'est qu'il te manque les bases du C++ pour faire le mariole avec l'interop�rabilit� .NET/natif (c'est pas les bases du C++ de base, mais les bases pour faire de l'interop�rabilit�).

    tu connais:
    extern "C"
    ?

  3. #3
    Membre � l'essai Avatar de Volviczox
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2016
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 27
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 4
    Par d�faut
    Merci de ta r�ponse

    Non je ne connais pas cela, mais en fait la contrainte c'est que j'ai une fonction qui "calcule" quelle sera le code permettent d'activer le logiciel sur un PC (le code sera diff�rent suivant chaque pc), je ne veux pas que quelqu'un puisse deviner le code qui permettra d'activer le logiciel en regardant comme �a fonctionne dans le code source..

    Et � ma connaissance il est tr�s compliqu� voir impossible de visualiser le code source d'une dll en C++ alors que meme avec une bonne obtucation il est toujours possible de r�cup�rer le code source d'une application c#...


    En gros la dll servirai juste � "cacher" une fonction

  4. #4
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 504
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 504
    Par d�faut
    Le C++ n'est pas d�essence magique, tout ce qui est faisable comme attaque sur du C# est faisable sur du C++.

    C'est franchement une protection contre les gamins de 12 ans. L'utilisation d'une fonction dans une Dll, �a se voit comme le nez au milieu de la figure et c'est contournable en quelques secondes.
    Et c'est bien plus facilement contournable en natif, qui ne dispose pas, de base, de la signature des modules ex�cutables, que les assemblies .NET qui l'ont avec une simple option et un fichier de cl� facilement g�n�rable.

    Ton syst�me de protection est contournable par le moins dou� des hackers.
    Il n'y absolument rien de cacher dans ta solution.

    Les outils d'administration de machine comme ProcessExplorer permettent de facilement voir les Dll charg�es dans un process.
    Les fonctions export�es par les Dll sont publiques, par d�finition de "exporter", et l'utilisation de Dependency walker permet de voir la liste.
    Avec du d�bugging classique, ultra facile en .NET si vous ne faite pas d'obfucation, il verra l'appel direct, sans m�me utiliser le moindre outil. => l'obfucation c'est pas que pour les cons !!!

    Apr�s, comme il n'y a pas de signature de la Dll, il n'a qu'� cr�er de toute pi�ce une Dll qui r�pond toujours OUI et faire en sorte qu'elle se charge � la place de la v�tre.

    Pour une personne entrain�e, c'est quelques minutes, maximum.

    Avant de mettre en place un syst�me de s�curit�, il faut d�terminer les menaces que votre syst�me doit contre-carr�.
    Il existe de nombreuses m�thodes d'�valuation des syst�mes de s�curit�, et un consultant en s�curit� informatique, c'est normalement, autre chose qu'un mec qui porte bien un costume sombre.

    L�, votre syst�me, il vise � contre-carr� les hackers pr�-pub�res. C'est peut-�tre votre cible, mais j'en doute.

  5. #5
    Membre � l'essai Avatar de Volviczox
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2016
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 27
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 4
    Par d�faut
    Citation Envoy� par bacelar Voir le message
    Le C++ n'est pas d�essence magique, tout ce qui est faisable comme attaque sur du C# est faisable sur du C++.

    C'est franchement une protection contre les gamins de 12 ans. L'utilisation d'une fonction dans une Dll, �a se voit comme le nez au milieu de la figure et c'est contournable en quelques secondes.
    Et c'est bien plus facilement contournable en natif, qui ne dispose pas, de base, de la signature des modules ex�cutables, que les assemblies .NET qui l'ont avec une simple option et un fichier de cl� facilement g�n�rable.

    Ton syst�me de protection est contournable par le moins dou� des hackers.
    Il n'y absolument rien de cacher dans ta solution.

    Les outils d'administration de machine comme ProcessExplorer permettent de facilement voir les Dll charg�es dans un process.
    Les fonctions export�es par les Dll sont publiques, par d�finition de "exporter", et l'utilisation de Dependency walker permet de voir la liste.
    Avec du d�bugging classique, ultra facile en .NET si vous ne faite pas d'obfucation, il verra l'appel direct, sans m�me utiliser le moindre outil. => l'obfucation c'est pas que pour les cons !!!

    Apr�s, comme il n'y a pas de signature de la Dll, il n'a qu'� cr�er de toute pi�ce une Dll qui r�pond toujours OUI et faire en sorte qu'elle se charge � la place de la v�tre.

    Pour une personne entrain�e, c'est quelques minutes, maximum.

    Avant de mettre en place un syst�me de s�curit�, il faut d�terminer les menaces que votre syst�me doit contre-carr�.
    Il existe de nombreuses m�thodes d'�valuation des syst�mes de s�curit�, et un consultant en s�curit� informatique, c'est normalement, autre chose qu'un mec qui porte bien un costume sombre.

    L�, votre syst�me, il vise � contre-carr� les hackers pr�-pub�res. C'est peut-�tre votre cible, mais j'en doute.
    Le programme n'a qu'un but �ducatif pour m'entrainer en fait, du coup j'aimerai quand m�me savoir comment faire par curiosit� svp (si quelqu'un a 5 min pour cr�er une dll et m'envoyer la source ce serait vraiment cool, merci)

    Par rapport � l'obfuscation � ma connaissance il n'y a rien de gratuit et de fiable, � moins que vous avez des trucs � me conseiller ? (En faisant des recherches � ce sujet j'ai m�me remarqu� que les obfus � plusieurs milliers d'euros se faisait cracker facilement...)


    Merci

  6. #6
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 504
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 504
    Par d�faut
    Le programme n'a qu'un but �ducatif pour m'entrainer en fait
    Alors commences par le plus simple, C++/CLI.

    du coup j'aimerai quand m�me savoir comment faire par curiosit� svp (si quelqu'un a 5 min pour cr�er une dll et m'envoyer la source ce serait vraiment cool, merci)
    Je viens de remarquer que le code de base g�n�r� par les templates de code des projets est l�g�rement diff�rent en fonction de la version de VS, donc pour quelle version de VS veux-tu ces sources ?

    apport � l'obfuscation � ma connaissance il n'y a rien de gratuit et de fiable,
    C'est exacte, mais si tu veux faire des trucs non open-source, c'est un peu normal de passer par le tiroir-caisse.

    (En faisant des recherches � ce sujet j'ai m�me remarqu� que les obfus � plusieurs milliers d'euros se faisait cracker facilement...)
    D'un point de vue s�curit�, le code qui tourne sur une machine cliente o� l'utilisateur � les droits administrateurs, c'est en zone de s�curit� MEGA-HOSTILE.
    Si votre code doit tourner sur ce type d'environnement, l'obfuscateur n'est qu'un ralentisseur, qui doit travailler avec d'autres syst�mes de protections, et le r�sultat ne sera jamais s�r � 100% dans une telle zone.
    L'obfuscateur, c'est pas une baguette magique, �a a ses limites, et faut pas l'utiliser comme un goret d�c�r�br�.

    Mais en gros, pour finir, renseignez-vous sur 'extern "C" ' pour facilement utiliser une fonction C/C++ d'une Dll sans pass� par le C++/CLI.

    P.S.: Dans une Dll C++/CLI vous pouvez tr�s bien n'avoir que du code natif.

Discussions similaires

  1. R�ponses: 7
    Dernier message: 05/08/2015, 18h55
  2. R�ponses: 6
    Dernier message: 29/03/2014, 16h59
  3. D�butant : cr�er une DLL en C# pour LabVIEW
    Par julienAu dans le forum C#
    R�ponses: 9
    Dernier message: 11/03/2011, 10h27
  4. cr�er une dll pour utiliser l'ASIO
    Par ccinfonews dans le forum Biblioth�ques, syst�mes et outils
    R�ponses: 2
    Dernier message: 22/09/2010, 11h50
  5. R�ponses: 7
    Dernier message: 05/12/2006, 08h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo