[Firm] Probleme mit cparser

Moritz Kroll Moritz.Kroll at avira.com
Mon Feb 2 11:02:00 CET 2015


Hi Matthias,

zu Problem 3 noch eine Verständnisfrage:
Warum ist das hier nicht erlaubt (MS- bzw. C++-Modus, auch bei MSVC nicht):

typedef struct {
    int dwMajorVersion;
    int dwMinorVersion;
} HTTP_VERSION_INFO;

typedef struct {
    int dwMajorVersion;
    int dwMinorVersion;
} HTTP_VERSION_INFO;

Gleicher als Copy&Paste geht nicht.

Schöne Grüße
Moritz


On 01.02.2015 00:59, Matthias Braun wrote:
> Hey Moritz,
>
> Ja wrappergen/write_jna hört sich gut an für so einen Einsatzzweck. Ich hab keine Ahnung warum das clonen bei dir nicht funktioniert hat, hab es grade bei mir versucht und da lief es. Aber  github ist auch okay, das wird täglich aktualisiert.
>
> Punkt 1-3 sollten jetzt gefixt sein, hab deinen Patch für Punkt 2 übernommen.
>
> Gruß
>       Matthias
>
>> On Jan 30, 2015, at 4:33 PM, Moritz Kroll <Moritz.Kroll at avira.com> wrote:
>>
>> Hallo zusammen,
>>
>> ich probiere nach einiger Zeit mal wieder cparser in einer aktuellen
>> Version zu kompilieren, um aus Windows-Headers automatisch Informationen
>> über API-Funktionen zu extrahieren (Namen, Parameternamen und -typen,
>> Rückgabetyp, calling convention). Die Informationen verwende ich bei der
>> Stack-Analyse von Funktionen in einem Disassembler. Ich verwende dazu
>> ein eigenes "wrappergen"-Modul auf Basis von write_jna.
>>
>> Zuerst einmal bekomme ich bei eurer Anleitung
>> (http://pp.ipd.kit.edu/firm/Download) diese Fehler:
>>
>> -------
>> $ git clone http://pp.ipd.kit.edu/git/cparser.git
>> Cloning into 'cparser'...
>> remote: Counting objects: 14860, done.
>> remote: Compressing objects: 100% (4436/4436), done.
>> remote: Total 14860 (delta 10738), reused 14343 (delta 10343)
>> Receiving objects: 100% (14860/14860), 2.83 MiB, done.
>> Resolving deltas: 100% (10738/10738), done.
>>
>> $ cd cparser
>> $ git submodule update --init
>> Submodule 'libfirm' (http://pp.info.uni-karlsruhe.de/git/libfirm.git/)
>> registere
>> d for path 'libfirm'
>> Cloning into 'libfirm'...
>> fatal: The remote end hung up unexpectedly
>> fatal: protocol error: bad pack header
>> Clone of 'http://pp.info.uni-karlsruhe.de/git/libfirm.git/' into
>> submodule path
>> 'libfirm' failed
>> -------
>>
>> Nachdem ich eine Weile daran verzweifelt war, hatte ich dann das Github
>> Repository genommen.
>>
>> Dabei bin ich bei Git-Referenz c89dd8e auf ein paar Probleme gestoßen:
>>
>> 1. Die Option "--ms" hat keine Auswirkungen, da init_tokens aufgerufen
>> wird, bevor das entsprechende "dialect" Flag in init_c_dialect gesetzt wird.
>>
>> 2. Bei der Deklaration von Funktionszeigertypen werden im MS-Modus keine
>> calling convention modifier erlaubt (siehe
>> https://msdn.microsoft.com/en-us/library/zxk0tw93.aspx und angehängter
>> Testkäse (Hi Christoph ^_^) stdcall-func-typedef.c). Ich hab dazu einen
>> Patch angehängt.
>>
>> 3. Im C++-Modus wird bei
>>
>> typedef long NTSTATUS;
>> typedef NTSTATUS *PNTSTATUS;
>> typedef long *PNTSTATUS;
>>
>> die zweite Definition von "PNTSTATUS" als unerlaubte Redefinition
>> aufgefasst (siehe multi-typedef.cpp). An der entsprechenden Stelle in
>> record_entity sollten aber eigentlich bereits alle typedefs übersprungen
>> werden. Scheint ihm aber trotzdem nicht gleich genug zu sein. Vielleicht
>> wegen den Zeigern?
>>
>> Wäre schön, wenn ihr meinen Patch einbauen könntet und ein paar aktive
>> Blicke auf die beiden anderen Probleme werfen könntet ;)
>>
>> Schöne Grüße
>> Moritz
>>
>> --
>> Moritz Kroll
>> Software Developer & Researcher
>> Advanced Threat Research And Protection Systems
>> Email: moritz.kroll at avira.com
>>
>> --
>> Avira Operations GmbH & Co. KG
>> Kaplaneiweg 1 | 88069 Tettnang | Deutschland / Germany
>> Telefon / Telephone: +49 7542-500 0
>> Telefax / Facsimile: +49 7542-500 3000
>>
>> Registergericht: Amtsgericht Ulm, HRA 722586 | USt.-IdNr.: DE 815289569 | Pers. haftende Gesellschafterin: Avira OP GmbH | Firmensitz: Tettnang | Registergericht: Amtsgericht Ulm, HRB 726712 | Geschäftsführer: Travis Witteveen
>>
>> Commercial Register: Amtsgericht Ulm, HRA 722586 | VAT-ID: DE 815289569 | Personally Liable Partner: Avira OP GmbH | Headquarters: Tettnang | Commercial Register: Amtsgericht Ulm, HRB 726712 | Chief Executive Officer (CEO): Travis Witteveen
>> <ms-funcdecl.patch><stdcall-func-typedef.c><multi-typedef.cpp>_______________________________________________
>> Firm mailing list
>> Firm at ira.uni-karlsruhe.de
>> https://lists.ira.uni-karlsruhe.de/mailman/listinfo/firm
>
>
> .
>

--
Moritz Kroll
Software Developer & Researcher
Advanced Threat Research And Protection Systems
Email: moritz.kroll at avira.com

--
Avira Operations GmbH & Co. KG
Kaplaneiweg 1 | 88069 Tettnang | Deutschland / Germany
Telefon / Telephone: +49 7542-500 0
Telefax / Facsimile: +49 7542-500 3000

Registergericht: Amtsgericht Ulm, HRA 722586 | USt.-IdNr.: DE 815289569 | Pers. haftende Gesellschafterin: Avira OP GmbH | Firmensitz: Tettnang | Registergericht: Amtsgericht Ulm, HRB 726712 | Geschäftsführer: Travis Witteveen

Commercial Register: Amtsgericht Ulm, HRA 722586 | VAT-ID: DE 815289569 | Personally Liable Partner: Avira OP GmbH | Headquarters: Tettnang | Commercial Register: Amtsgericht Ulm, HRB 726712 | Chief Executive Officer (CEO): Travis Witteveen



More information about the Firm mailing list