diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2010-04-24 10:16:17 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2010-04-24 10:16:17 (GMT) |
commit | e56b4db3aae87f0458319019635dea4968a5c529 (patch) | |
tree | bbbbbca3921dca2add25f74d73096900254fe301 /src/format/java/java-int.c | |
parent | fb12cfc1727ba949b70a48ee042a2aec9ebbb407 (diff) |
Updated a little bit the Java part (welcome back).
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@154 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/format/java/java-int.c')
-rw-r--r-- | src/format/java/java-int.c | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/src/format/java/java-int.c b/src/format/java/java-int.c new file mode 100644 index 0000000..b742744 --- /dev/null +++ b/src/format/java/java-int.c @@ -0,0 +1,90 @@ + +/* OpenIDA - Outil d'analyse de fichiers binaires + * java-int.c - structures internes du format Java + * + * Copyright (C) 2010 Cyrille Bagard + * + * This file is part of OpenIDA. + * + * OpenIDA is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * OpenIDA is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Foobar. If not, see <http://www.gnu.org/licenses/>. + */ + + +#include "java-int.h" + + +#include "pool.h" +#include "../../common/endianness.h" + + + +/****************************************************************************** +* * +* Paramètres : format = informations chargées à consulter. * +* pos = position de début de lecture. [OUT] * +* header = structure lue à retourner. [OUT] * +* * +* Description : Procède à la lecture d'une en-tête de programme Java. * +* * +* Retour : Bilan de l'opération. * +* * +* Remarques : - * +* * +******************************************************************************/ + +bool read_java_header(const GJavaFormat *format, off_t *pos, java_header *header) +{ + bool result; /* Bilan à retourner */ + const bin_t *content; /* Contenu binaire à lire */ + off_t length; /* Taille totale du contenu */ + uint32_t magic; /* Identifiant Java */ + size_t i; /* Boucle de parcours */ + + content = G_BIN_FORMAT(format)->content; + length = G_BIN_FORMAT(format)->length; + + result &= read_u32(&magic, content, pos, length, SRE_BIG); + printf("magic :: 0x%08x\n", magic); + result &= read_u16(&header->minor_version, content, pos, length, SRE_BIG); + result &= read_u16(&header->major_version, content, pos, length, SRE_BIG); + + printf("avant :: %d\n", result); + + result &= load_java_pool(format, pos); + + printf("après :: %d\n", result); + + result &= read_u16((uint16_t *)&header->access, content, pos, length, SRE_BIG); + result &= read_u16(&header->this_class, content, pos, length, SRE_BIG); + result &= read_u16(&header->super_class, content, pos, length, SRE_BIG); + result &= read_u16(&header->interfaces_count, content, pos, length, SRE_BIG); + +/* for (i = 0; i < header->interfaces_count; i++) */ +/* result &= read_u16(&header->interfaces[i], content, pos, length, SRE_BIG)) */ +/* goto ldj_error; */ + +/* result &= load_java_fields(result, pos); */ + +/* result &= load_java_methods(result, pos); */ + +/* result &= load_java_attributes(result, pos, &header->attributes, &header->attributes_count); */ + + return result; + +} + + + + + |