Пример #1
0
    def parse(self, reader, pool):
        self.access_flags = reader.read_short()
        self.name_index = reader.read_short()
        self.name = pool.get_value(self.name_index)
        self.descriptor_index = reader.read_short()
        self.descriptor = pool.get_value(self.descriptor_index)

        for attr in Attribute.parse_attributes(reader, pool):
            self.attributes.append(attr)
Пример #2
0
    def parse_class(self):
        clazz = JavaClass()
        self.reader.load_class(self.file)

        if self.reader.read_int() != 0xCAFEBABE:
            raise Exception('Not a valid Java class file')

        clazz.version['minor'] = self.reader.read_short()
        clazz.version['major'] = self.reader.read_short()

        pool = self.parse_constant_pool(clazz)
        clazz.pool = pool
        clazz.access_flags = pool.get_value(self.reader.read_short())
        clazz.class_name = pool.get_value(self.reader.read_short())
        clazz.superclass_name = pool.get_value(self.reader.read_short())
        clazz.interfaces = self.parse_interface_table(clazz)
        clazz.fields = self.parse_fields(clazz, pool)
        clazz.methods = self.parse_methods(clazz, pool)
        clazz.attributes = Attribute.parse_attributes(self.reader, pool)

        return clazz