Bitte um Erklärung des Code Schnippsel



  • Hallo zusammen,
    ich versuche schon was länger mit Delphi eine Dll aufzurufen.
    Scheiter dabei aber an dem richtigen Aufruf der Funktion W2P.
    Ich kann leider kein C++ und versteh nicht wirklich was da genau steht.

    Dachte nun ich frag mal C++ Programmierer um Rat 🙂
    Könnt ihr mir bitte helfen zu verstehen wie die Funktion angesteuert wird ?

    Hab diese leider nur decompiliert vorliegen:

    int __cdecl W2P(int numberGreaterEqualThree, char **fromTo)
    {
      return W2P_0(numberGreaterEqualThree, fromTo);
    }
    
    int __cdecl W2P_0(int numberGreaterEqualThree, char **stringTable)
    {
      int result; // eax@4
      int v3; // [sp+0h] [bp-1Ch]@1
      int *v4; // [sp+Ch] [bp-10h]@1
      int v5; // [sp+18h] [bp-4h]@5
    
      v4 = &v3;
      if ( numberGreaterEqualThree >= 3 && **(stringTable + 1) && **(stringTable + 2) )
      {
        printf("PXD2Wav Konvertierung: %s -> %s", *(stringTable + 1), *(stringTable + 2));
        v5 = 0;
        strcpy(globalStringArray, *(stringTable + 1));
        strcpyOffset260(globalStringArray, *(stringTable + 2));
        result = convertPxdToWave_1000F8C5(globalStringArray);
      }
      else
      {
        result = printf("PXD2Wav Konvertierung: pxd -> wav");
      }
      return result;
    }
    
    int __cdecl W2P(int numberGreaterEqualThree, char **fromTo)
    

    kommt hier schon eine stringtable an ?

    oder wird diese erst hier erstellt:

    int __cdecl W2P_0(int numberGreaterEqualThree, char **stringTable)
    {
      int result; // eax@4
      int v3; // [sp+0h] [bp-1Ch]@1
      int *v4; // [sp+Ch] [bp-10h]@1
      int v5; // [sp+18h] [bp-4h]@5
    
      v4 = &v3;
    

    so wie ich das verstanden hatte, rufe ich die funktion so auf:
    sende nummer 3 und string für "input.file output.file"

    hab zuerst versucht ein array mit input.file/output.file zu schicken.
    da kommt dann aber vermutlich nur 1 wert in der funktion an.

    versuche nun eine stringtable an die funktion zu schicken.
    dabei stürzt das programm dann ab.

    blickt da jemand durch und kann mir sagen wie ich die funktion richtig aufrufe das ausser der zahl auch "input.file output.file" ankommt ?

    Nächtliche Grüße CPraktikant



  • Ahhh ja, IDA und HexRays ^^

    Jop, der zweite Parameter ist ein C-String Array.
    Da musst du auch eines übergeben, sonst crasht es logischweise da ansonsten ein Zeichen als Zeiger dereferenziert wird, was logischerweise einen Fehler gibt.


Anmelden zum Antworten