1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

En cours Comment accéder au code source d'un module ?

Discussion dans 'Support des modules AMX Mod X ou Metamod indépendants de la base' démarrée par Neg, 18 Avril 2013.

  1. Neg

    Neg Le Lama

    Salut tout le monde,

    Je cherche à désassembler / décompiler ( je ne connais pas la différence entre ces deux termes ) engine_amx.dll ou autre module pour voir simplement le code source via un éditeur de texte basique. Toutefois, je ne sais pas quel logiciel installé. J'ai regardé sur le net mais je ne sais pas lequel serait le plus fiable selon vous ? J'ai seulement trouvé logiciel ne marchant pas voir virus donc bon ...

    Merci d'avance pour vos réponses. :D 
     
    Tags:
  2. Arkshine

    Arkshine Le Docteur

    Tu parles du moteur (engine) ou des modules AMXX ? Parce si modules AMXX, tu peux récupérer le code source ici AMX Mod X - Half-Life Scripting for Pros!. Je te rappèle que AMXX est un projet open-source.

    Pour les autres binaires dont tu n'as pas le code source, tu peux tenter avec IDA pro 6.1. Suffit de chercher, tu trouveras.
    Par contre, si tu crois que ça va te sortir miraculeusement le code source réel, tu te fourres le doigt dans l'oeil hein.

    Désassembler va te sortir le code en assembleur, sous la forme d'opcodes. Exemple :
    Code (ASM):
    .text:000F6B90                  ; int __cdecl CBasePlayer__Observer_SetMode(CBasePlayer *this, int)
    .text:000F6B90                           public _ZN11CBasePlayer16Observer_SetModeEi
    .text:000F6B90                   _ZN11CBasePlayer16Observer_SetModeEi proc near
    .text:000F6B90                                                                    ; CODE XREF: ClientCommand(edict_s *)+13CDp
    .text:000F6B90                                                                    ; CHalfLifeMultiplay::ClientDisconnected(edict_s *)+2E5p ...
    .text:000F6B90
    .text:000F6B90                   this           = dword ptr  4
    .text:000F6B90                   arg_4        = dword ptr  8
    .text:000F6B90
    .text:000F6B90 8B 44 24 04       mov     eax, [esp+this]
    .text:000F6B94 8B 54 24 08       mov     edx, [esp+arg_4]
    .text:000F6B98 8B 48 04         mov  ecx, [eax+4]
    .text:000F6B9B 39 91 44 02 00 00   cmp   [ecx+580], edx
    .text:000F6BA1 74 0D               jz     short locret_F6BB0
    .text:000F6BA3 E9 F8 F1 FF FF     jmp    _ZN11CBasePlayer16Observer_SetModeEi_part_5
    Décompiler va traduire le truc ci-dessus en pseudo-code en C.
    Du genre :
    Code (C):
    int __cdecl CBasePlayer::Observer_SetMode(int this, int a2)
    {
      int result; // eax@1
     
      result = this;
      if ( *(*(this + 4) + 580) != a2 )
        CBasePlayer::Observer_SetMode(this, a2);
      return result;
    }
    Après faut pas te leurrer, selon les fonctions, windows/linux, même avec le code décompilé, c'est pas facile de comprendre. Surtout windows, vu que tu n'as pas de symbole inclus.
     
  3. Neg

    Neg Le Lama

    Je parlais bien de modules AMXX. C'est parfait j'ai tout sur mon bureau. Je te remercie beaucoup.

    Une dernière question tant qu'à faire : lorsque j'ouvre les .CPP avec notepad++ l'indentation est bonne mais si j'ouvre avec le bloc note c'est tout compacte. Savez-vous pourquoi ? Je vais faire mesrecherches à côté en attendant vos réponses et si je trouve je posterais la solution.

    Merci bien Arkshine.
     
  4. Arkshine

    Arkshine Le Docteur

    Si tu as Np++ , pourquoi tu perds ton temps avec le bloc note ??!
     
  5. Neg

    Neg Le Lama

    C'était par simple curiosité. Tu as raison. Merci encore
     
  6. Arkshine

    Arkshine Le Docteur

    Oulala, mais concentres-toi sur l'essentiel. Bloc note, et bien.. c'est un bloc note, ça n'est pas fait pour afficher du code, la réponse est logique/évidente. J'comprends pas comment tu peux te poser ce genre de questions, qui ne va jamais te servir, sachant que tu ne vas pas l'utiliser. :ROFLMAO: 
     

Partager cette page

Chargement...
Chargement...