Auslesen eines VB Array's mit Assembler DLL



  • Guten Abend zusammen,

    Ich möchte in VB mehrere Strings mit XOR verschlüsseln. Dafür habe ich mir eine DLL in Assembler erstellt was auch funktioniert.

    Jedoch bei Strings im Array komme ich nicht weiter. Ich finde die einzelnen Strings nicht im Speicher.
    (Habe auch schon mehrere Versuche unternommen)

    Bei "normalen" Strings erhalte ich z.B. einen Pointer auf das erste Zeichen des Strings. Damit kann ich arbeiten.

    Weiß jemand was ich bekomme wenn ich von VB nach Assembler ein Array übergebe?
    Ein Pointer ist es ja in jedem Fall aber ich weiß nicht wie ich damit den Text finden kann.

    Gruß und Danke

    Nicky





  • Zusätzlich musst Du entscheiden, wie Du mit Hilfe des Zeigers auf die Daten zugreifst - die CPU unterstützt zig Adressierungsarten. Dann ist zu entscheiden, in welchen Portionen Du auf die Daten zugreift - "byteweise", "wortweise", "doppelwortweise", "quadwortweise", "128-Bit wortweise" usw.
    Kriegst Du es hin 😕
    Ferner: Was erhoffst Du Dir davon 😕



  • Hallo,

    ich möchte natürlich byteweise auf die Daten zugreifen.

    Wenn ich den Pointer auf das erste Elment habe, bekomme ich es schon hin. Bei normalen Strings funktioniert das ganze ja tadellos.

    Ich vermute ja das ein Array folgendermaßen im Speicher liegt.
    Eine Folge von 32bit Werten die die Adressen der erstem Speicherstelle der einzelnen Strings enthalten, abgeschlossen mit einem NULL Byte.

    Der Link von Dr. Google ist ja ganz gut jedoch hab ich mit Strings keine Problem, nur mit Array's.

    Was ich mir erhoffe?
    Ich möchte einzelne Teile eines Textes verschlüsseln (mit XOR) und dazu den Text in seine Teile (Kopf, Haupttext, Parameter) aufteilen und somit nur den Haupttext verschlüsseln.

    Gruß, Nicky



  • Und wo ist jetzt genau der Unterschied zwischen einen String und einem Array?

    Wenn ich mir ein leeres kariertes Blatt Papier vor der Nase vorstelle, dann sehe ich irgendwie immer nur leere kleine Kästchen, die mit Zahlen oder so Zeugs beschrieben werden wollen...

    Und wieso byteweise? Wozu gibt es SSE Register?



  • Das hättest man auch mal selber recherchieren können: VB übergibt Arrays als OLE-SaveArrays: SAFEARRAY structure

    SEE macht nur bei entsprechende algiment Sinn – und das nicht nur aus Performance Gründen (Seitenfehler und Zugriffsverletzung).



  • Hallo MASM,

    also bekomme ich einen Pointer auf eine SAFEARRAY-Structur übergeben?

    @nachtfeuer:
    byteweise deshalb, da ich nicht weiß wie lang der String ist. Somit lasse ich die Schleife laufen bis das Null-Byte erreicht ist.

    Gruß, Nicky


Anmelden zum Antworten