This program reads a .class file & display its contents.
How to go ahead
Contents Overview
//Source Code
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<alloc.h>
#include<stdlib.h>
#include<ctype.h>
struct file_attr
{
  int name;
  int len;
  };
struct file
{
  char magic[10];
  int verno1;
  int verno2;
  int cp_c;
  int a_flags;
  int this_cl;
  int super_cl;
  int inter_c;
  int field_c;
  int meth_c;
  int attr_c;
  file_attr *fiattr;
  int f_name;
	};
struct field  //field_info
{
  int a_flag;
  int name;
  int dindex; //descriptor index
  int attr_c;
  void *attr_i; //only attr -> ConstantValue_attr(struct cvattr)
};
struct cvattr  //ConstantValue_attribute
{
  int name; //attribute name
  int len;  //attr length
  int cvindex; //valid index into the constant_pool table
};
struct meth_attr
{
  int name;
  int len;
  };
struct meth
{
  int a_flag;
  int name;
  int sign;
  int attr_c;
  meth_attr *mthattr;  //code_info
  };
struct guid
{
 unsigned char x1[4];
 unsigned char x2[2];
 unsigned char x3[2];
 unsigned char x4[8];
 };
int small( char *ss )
{
	return ss[0]*256+ss[1];
}
struct aaa
{
  int x1, x2;
};
struct bbb
{
  int x;
  char *ss;
};
struct ccc
{
	long x1,x2;
};
struct pool_info
{
  int tag;
  void *info;
  };
void abc( char *ss )
{
  static int k=0;
  FILE *fpo= fopen("z.txt", "a");
  fprintf(fpo, "%d=%s\n", k, ss);
  k++;
  fclose(fpo);
  }
pool_info *p;
char *get( int x, int y=1 )
{
 int jj;
 switch(p[x].tag)
 {
  case 7:
  case 8:
	 jj = ((aaa *)p[x].info)->x1;
	 return get ( jj );
  case 9:
  case 10:
  case 12:
	  if( y==1 )
		 {
			jj = ((aaa *)p[x].info)->x1;
			return get ( jj );
			}
	  else
		 {
			jj = ((aaa *)p[x].info)->x2;
			return get ( jj );
			}
  default :
	 return ((bbb *)p[x].info)->ss;
  }
}
char* signat(char **);
char* rtype( char **);
int main(int argc, char *argv[])
{
int debuginfo=0;
int ActiveXflag=0;
FILE *fp;
int offset[9];
int counter=0;
file fi;
int *iface;
fp = fopen(argv[1],"r+b");
if(fp==NULL)
 {
	printf("File not found\n");
	exit(0);
	}
char *aa=new char[100];
char *bb=new char[100];
offset[0]=0;
fread(aa,4,1,fp);  //Skip CAFEBABE
counter=4; aa[4]='\0';
strcpy( fi.magic, aa);
fread(aa,2,1,fp);    //Version Nos.
counter+=2;
fi.verno1=small(aa);
fread(aa,2,1,fp);    //Version Nos.
counter+=2;
fi.verno2=small(aa);
fread(aa,2,1,fp); //Constant pool size
counter+=2;
fi.cp_c=small(aa);
sprintf(bb, "Constant Pool Size=%d\n", fi.cp_c);
abc(bb);
p = new pool_info[fi.cp_c];
offset[1]=counter;
int k;int i;
for ( int j=1; j<fi.cp_c; j++)
{
	 i = fgetc(fp);
	 counter++;
 switch(i)
 {
  case 1:
	 bbb *s = new bbb;
	 fread(aa,2,1,fp); counter+=2;
	 s->x=small(aa);
	 fread(aa, s->x, 1, fp);  counter+=s->x;
	 aa[s->x]='\0';
	 s->ss = new char[s->x+1];
	 strcpy(s->ss, aa);
	 p[j].tag=1;
	 p[j].info = (void *)s;
	 sprintf(bb, "%s(%d)", ((bbb *)p[j].info)->ss, p[j].tag);
	 abc(bb);
	 break;
  case 3:
  case 4:
	 ccc *tem=new ccc;
	 fread(aa,4,1,fp); counter+=4;
	 tem->x1 = aa[2]*256+aa[3];
	 if(i==3)
		 p[j].tag=3;
	 else
		 p[j].tag=4;
	 p[j].info=(void *)tem;
	 sprintf(bb, "%ld(%d)", ((ccc *)p[j].info)->x1,p[j].tag);
	 abc(bb);
	 break;
  case 5 :
  case 6 :
	 ccc *tem2=new ccc;
	 fread(aa,4,1,fp); counter+=4;
	 tem2->x1 = aa[2]*256+aa[3];
	 fread(aa,4,1,fp); counter+=4;
	 tem2->x2 = aa[2]*256+aa[3];
	 if(i==5)
		 p[j].tag=5;
	 else
		 p[j].tag=6;
	 p[j].info=(void *)tem2;
	 sprintf(bb, "%ld..%ld(%d)", ((ccc *)p[j].info)->x1,((ccc *)p[j].info)->x2,p[j].tag);
	 abc(bb);
	 break;
  case 7:
  case 8:
	 aaa *temp;
	 temp=new aaa;
	 fread(aa,2,1,fp);
	 counter+=2;
	 temp->x1 = small(aa);
	 if(i==7)
		 p[j].tag=7;
	 else
		 p[j].tag=8;
	 p[j].info=(void *)temp;
	 sprintf(bb, "%d(%d)", ((aaa *)p[j].info)->x1,p[j].tag);
	 abc(bb);
	 break;
  case 9 :
  case 11:
  case 10:
  case 12:
	 aaa *temp1;
	 temp1 = new aaa;
	 fread(aa,2,1,fp);
	 counter+=2;
	 temp1->x1=small(aa);
	 fread(aa,2,1,fp);
	 counter+=2;
	 temp1->x2=small(aa);
	 if(i==9)  p[j].tag=9;
	 else if (i==10) p[j].tag=10;
	 else if (i==11) p[j].tag=11;
	 else p[j].tag=12;
	 p[j].info = (void *)temp1;
	 sprintf(bb,"%d..%d(%d)", ((aaa *)p[j].info)->x1, ((aaa *)p[j].info)->x2, p[j].tag);
	 abc(bb);
	 break;
  }
}
offset[2]=counter;
fread(aa, 2, 1, fp);   //Flags
counter+=2;
fi.a_flags = small(aa);
fread(aa, 2, 1, fp);   //this_class
counter+=2;
fi.this_cl=small(aa);
fread(aa, 2, 1, fp);   //super_class
counter+=2;
fi.super_cl=small(aa);
offset[3]=counter;
fread(aa, 2, 1, fp);   //interface
counter+=2;
fi.inter_c=small(aa);
if(fi.inter_c != 0)
 {
	iface = new int[fi.inter_c];
	for(i=0; i<fi.inter_c; i++)
	 {
		fread(aa,2,1,fp);
		iface[i] = small(aa);
		counter+=2;
		}
  }
offset[4]=counter;
fread(aa, 2, 1, fp);   //fields
counter+=2;
fi.field_c=small(aa);
field *fld=new field[fi.field_c];
for(i=0; i<fi.field_c; i++)
{
 fread ( aa, 2, 1, fp);
 counter+=2;
 fld[i].a_flag=small(aa);
 fread(aa, 2, 1, fp);
 counter+=2;
 fld[i].name=small(aa);
 fread(aa, 2, 1, fp);
 counter+=2;
 fld[i].dindex=small(aa);
 fread(aa, 2, 1, fp);
 counter+=2;
 fld[i].attr_c=small(aa);  //only attr is ConstantValur_attr
 if (fld[i].attr_c !=0)
 {
  cvattr *cva;
  fread(aa, 2, 1, fp);
  counter+=2;
  cva->name=small(aa);
  fread(aa, 4, 1, fp);
  counter+=4;
  cva->len=aa[2]*256+aa[3];
  fread(aa, 2, 1, fp);
  counter+=2;
  cva->cvindex = small(aa);
  fld[i].attr_i=(void *)cva;
  }
}
offset[5]=counter;
fread(aa, 2, 1, fp);   //methods
counter+=2;
fi.meth_c=small(aa);
meth *mth=new meth[fi.meth_c];
int jj;
for( j=0; j<fi.meth_c; j++ )  //fi.meth_c
{
 fread ( aa, 2, 1, fp);
 counter+=2;
 mth[j].a_flag=small(aa);
 fread(aa, 2, 1, fp);
 counter+=2;
 mth[j].name=small(aa);
 fread(aa, 2, 1, fp);
 counter+=2;
 mth[j].sign=small(aa);
 fread(aa, 2, 1, fp);
 counter+=2;
 mth[j].attr_c=small(aa);
 int name;
 mth[j].mthattr=new meth_attr[mth[j].attr_c];
for(int ii=0; ii<mth[j].attr_c; ii++)
{
 fread(aa, 2, 1, fp);
 counter+=2;
 name=small(aa);
 if(!strcmp("COM_ProxiesTo",get(name)))
 {
	mth[j].mthattr[ii].name=name;
	ActiveXflag=1;
	fread(aa, 4, 1, fp);
	counter+=4;
	mth[j].mthattr[ii].len=aa[2]*256+aa[3];
	for(i=0; i<mth[j].mthattr[ii].len; i++)
	  { fgetc(fp);	counter++; }
  }
 else
 {
	mth[j].mthattr[ii].name=name;
	fread(aa, 4, 1, fp);
	counter+=4;
	mth[j].mthattr[ii].len=aa[2]*256+aa[3];
	for(i=0; i<mth[j].mthattr[ii].len; i++)
	  {
		fgetc(fp);
		counter++;
		}
  }
}
}
offset[6]=counter;
fread(aa, 2, 1, fp);
counter+=2;
fi.attr_c=small(aa);
fi.fiattr=new file_attr[fi.attr_c];
int no_guid;
guid *gguid;
for(i=0; i<fi.attr_c; i++)
{
	fread(aa, 2, 1, fp);
	int name=small(aa);
	counter+=2;
	if(strcmp(get(name), "SourceFile")==0)
	{
	 fi.fiattr[i].name=name;
	 fread(aa, 4, 1, fp);  counter+=4;
	 fi.fiattr[i].len=aa[2]*256+aa[3];
	 fread(aa, 2, 1, fp); counter+=2;
	 fi.f_name = small(aa);
	}
	else if(strcmp(get(name), "COM_GuidPool")==0)
	{
	 fi.fiattr[i].name=name;
	 fread(aa, 4, 1, fp); counter+=4;
	 fi.fiattr[i].len=aa[2]*256+aa[3];
	 fread(aa, 2, 1, fp); counter+=2; //no. of guid
	 no_guid=small(aa);
	 gguid=new guid[no_guid];
	 for(j=0; j<no_guid; j++)
	 {
	  guid *gg;
	  fread(gg, 16, 1, fp);  counter+=16;
	  gguid[j]=*gg;
	 }
	}
	else
	{
	 fi.fiattr[i].name=name;
	 fread(aa, 4, 1, fp); counter+=4;
	 fi.fiattr[i].len=aa[2]*256+aa[3];
	 for(j=0; j<fi.fiattr[i].len; j++)
		{
		  fgetc(fp); counter++;
		}
	 }
}
fclose(fp);
//******************* Output data ***********************
char *d1[] = {
				  "Class Name       ",
				  "Size             ",
				  "Version          ",
				  "Access F\lags     ",
				  "Super Class Name ",
				  "Interface(s)     ",
				  "Source Filename  ",
				  "Debug Information",
				  "ActiveX Controls "
				  };
printf("\n*** jvm7 D1 Class/Interface Overview ***\n\n");
printf("Variable Name\t\tValue Reported\n");
printf("~~~~~~~~~~~~~~\t\t~~~~~~~~~~~~~~~\n");
printf("%s\t%s\n", d1[0], get( fi.this_cl));
printf("%s\t%d\n", d1[1], counter);
printf("%s\t%d.0%d\n", d1[2], fi.verno2, fi.verno1);
printf("%s\n", d1[3]);
printf("%s\t%s\n", d1[4], get( fi.super_cl));
if( !fi.inter_c )
	 printf("%s\t* None Defined *\n", d1[5]);
else
  {
	 printf("%s\t", d1[5]);
	 for(i=0; i<fi.inter_c; i++)
		printf("%s,",get(iface[i]));
	 }
printf("\n%s\t%s\n", d1[6], get(fi.f_name));
if(debuginfo==1)
	printf("%s\tYES\n", d1[7]);
else
	printf("%s\tNO\n", d1[7]);
if(ActiveXflag==1)
	printf("%s\tYES\n", d1[8]);
else
	printf("%s\tNO\n", d1[8]);
printf("\n*** jvm7 D2 Class/Interface Methods, Fields, & Classes ***\n\n");
printf("Methods (Invoked)\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
for(i=1; i<fi.cp_c; i++)
{
  if(p[i].tag == 10)
  {
	char *sign = new char[100];
	sign=get(((aaa *)p[i].info)->x2, 2);
	strcpy(bb,signat(&sign));
	sign++;
	strcpy(aa, rtype(&sign));
	printf("%s ",aa);
	printf("%s.%s%s\n",get(((aaa *)p[i].info)->x1),
			  get(((aaa *)p[i].info)->x2),bb);
	}
 }
printf("\nMethods (Interfaced)\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("* NA *\n\n");
printf("Fields (Accessed and/or Modified)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
for(i=0; i<fi.field_c; i++)
 {
	strcpy(aa, get(fld[i].dindex));
	strcpy(bb, rtype(&aa));
	printf("%s %s\n", bb,get(fld[i].name));
 }
printf("\n\nMethods (Explicitely Declared by this Class/Interface)\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
for(i=0; i<fi.meth_c; i++)
  {
	char *sign = new char[100];
	sign=get(mth[i].sign);
	printf("Method[%04X]\t", i);
	strcpy(bb,signat(&sign));
	sign++;
	strcpy(aa, rtype(&sign));
	printf("%s ",aa);
	strcpy(aa, get(mth[i].name));
	printf("%s%s\n",aa, bb);
	}
printf("\n\n");
printf("Fields (Explicitely Declared by this Class/Interface)\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("* NA *\n\n");
printf("Classes (Accessed by this Class/Interface)\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
for(i=1; i<fi.cp_c+1; i++)
{
	if(p[i].tag == 7)
	  printf("%s\n", get( i ));
}
printf("\n\n");
printf("COM_Guid's (Explicitly Declared by this Class/Interface)\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
for(j=0; j<no_guid; j++)
	 {
	  for(int k=3; k>=0; k--)
		  printf("%X", gguid[j].x1[k]);
	  printf("-");
	  for(k=1; k>=0; k--)
		  printf("%X", gguid[j].x2[k]);
	  printf("-");
	  for(k=1; k>=0; k--)
		  printf("%X", gguid[j].x3[k]);
	  printf("-");
	  for(k=0; k<8; k++)
		  printf("%X", gguid[j].x4[k]);
	  printf("\n");
	 }
printf("\n");
char *d3[] = {
			"ClassFile.magic              ",
			"ClassFile.minor_version      ",
			"ClassFile.major_version      ",
			"ClassFile.constant_pool_count",
			"ClassFile.Constant_pool      ",
			"ClassFile.access_flags       ",
			"ClassFile.this_class         ",
			"ClassFile.super_class        ",
			"ClassFile.interfaces_count   ",
			"ClassFile.interfaces",
			"ClassFile.fields_count       ",
			"ClassFile.fields",
			"ClassFile.methods_count      ",
			"ClassFile.methods            ",
			"ClassFile.attributes_count   ",
			"ClassFile.attributes         "
			};
printf("*** jvm7 D3 Class/Interface Root Data Structures ***\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("offset     Bytes    Field Name                      Meaning\n");
printf("~~~~~~~   ~~~~~~~~ ~~~~~~~~~~~~~~                 ~~~~~~~~~~~\n");
int zz=offset[0];
printf("%06X   CAFEBABE  %s\n", zz, d3[0]);
printf("%06X   %04X   \t%s\tDecimal (%d)\n",zz+=4, fi.verno1, d3[1], fi.verno1);
printf("%06X   %04X   \t%s\tDecimal (%d)\n",zz+=2, fi.verno2, d3[2], fi.verno2);
printf("%06X   %04X   \t%s\tDecimal (%d)\n",zz+=2, fi.cp_c, d3[3], fi.cp_c);
printf("%06X      \t\t%s\tcp\n", zz+=2, d3[4]);
printf("%06X   %04X   \t%s\n", zz=offset[2], fi.a_flags, d3[5]);
printf("%06X   %04X   \t%s\t%s\n", zz+=2, fi.this_cl, d3[6], get(fi.this_cl));
printf("%06X   %04X   \t%s\t%s\n", zz+=2, fi.super_cl, d3[7], get( fi.super_cl));
printf("%06X   %04X   \t%s\tDecimal (%d)\n", zz=offset[3], fi.inter_c, d3[8], fi.inter_c);
printf("%06X      \t\t%s\t\t\t   interfaces\n", zz+=2, d3[9]);
printf("%06X   %04X   \t%s\tDecimal (%d)\n", zz=offset[4], fi.field_c, d3[10], fi.field_c);
printf("%06X      \t\t%s\t\t\t      fields\n", zz+=2, d3[11]);
printf("%06X   %04X   \t%s\tDecimal (%d)\n", zz=offset[5], fi.meth_c, d3[11], fi.meth_c);
printf("%06X      \t\t%s\t\t\t      Methods\n", zz+=2, d3[11]);
printf("%06X   %04X   \t%s\tDecimal (%d)\n", zz=offset[6], fi.attr_c, d3[12], fi.attr_c);
printf("%06X      \t\t%s\tattributes\n\n", zz+=2, d3[13]);
printf("*** jvm7 D3 Class/Interface Root Data Structures ***\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("offset     Bytes    Field Name                      Meaning\n");
printf("~~~~~~~   ~~~~~~~~ ~~~~~~~~~~~~~~                 ~~~~~~~~~~~\n");
zz=offset[1]; char cc[20];
for(i=1; i<fi.cp_c; i++)
{
 switch(p[i].tag)
 {
  case 1 :
	  printf("%06X\t%02X\t\tcp[%04X].tag\t\tCONSTANT_Utf8\n", zz, 1, i);
	  zz++;  j=((bbb *)p[i].info)->x;
	  printf("%06X\t%04X\t\tcp[%04X].length\n", zz, j, i);  zz+=2;
	  printf("%06X\t\t\tcp[%04X].bytes\t\t%s\n\n", zz, i, ((bbb *)p[i].info)->ss);
	  zz+=j;
	  break;
  case 3 :
  case 4 :
	  if(p[i].tag==3)
			printf("%06X\t%02X\t\tcp[%04X].tag\t\tCONSTANT_integer\n", zz, 3, i);
	  else
			printf("%06X\t%02X\t\tcp[%04X].tag\t\tCONSTANT_float\n", zz, 4, i);
	  zz++; j=((ccc *)p[i].info)->x1;
	  printf("%06X\t%04X\t\tcp[%04X].bytes\n\n", zz, j, i);
	  zz+=4;
	  break;
  case 5 :
  case 6 :
	  if(p[i].tag==5)
		  printf("%06X\t%02X\t\tcp[%04X].tag\t\tCONSTANT_long\n", zz, 5, i);
	  else
		  printf("%06X\t%02X\t\tcp[%04X].tag\t\tCONSTANT_long\n", zz, 6, i);
		zz++; j=((ccc *)p[i].info)->x1;
	  printf("%06X\t%04X\t\tcp[%04X].high_bytes\n\n", zz, j, i);
	  zz+=4; j=((ccc *)p[i].info)->x1;
	  printf("%06X\t%04X\t\tcp[%04X].low_bytes\n\n", zz, j, i);
	  zz+=4;
	  break;
  case 7 :
	  printf("%06X\t%02X\t\tcp[%04X].tag\t\tCONSTANT_Class\n", zz, 7, i);
	  zz++; j=((aaa *)p[i].info)->x1;
	  printf("%06X\t%04X\t\tcp[%04X].name_index\t%s\n\n", zz, j, i, get(j));
	  zz+=2;
	  break;
  case 8 :
	  printf("%06X\t%02X\t\tcp[%04X].tag\t\tCONSTANT_Class\n", zz, 8, i);
	  zz++; j=((aaa *)p[i].info)->x1;
	  printf("%06X\t%04X\t\tcp[%04X].string_index\t%s\n\n", zz, j, i, get(j));
	  zz+=2;
	  break;
  case 9 :
  case 10:
  case 11:
	  if(p[i].tag==9)
		  printf("%06X\t%02X\t\tcp[%04X].tag\t\tCONSTANT_Fieldref\n", zz, 9, i);
	  else if(p[i].tag==10)
		  printf("%06X\t%02X\t\tcp[%04X].tag\t\tCONSTANT_Methodref\n", zz, 10, i);
	  else
		  printf("%06X\t%02X\t\tcp[%04X].tag\t\tCONSTANT_InterfaceMethodref\n", zz, 11, i);
	  zz++;  j=((aaa *)p[i].info)->x1;
	  printf("%06X\t%04X\t\tcp[%04X].class_index\t%s\n", zz, j, i, get(j));
	  zz+=2; j=((aaa *)p[i].info)->x2;
	  printf("%06X\t%04X\t\tcp[%04X].name_&_type_index\t%s,%s\n\n", zz, j, i,
				 get( j), get( j, 2));
	  zz+=2;
	  break;
  case 12:
	  printf("%06X\t%02X\tcp[%04X].tag\t\tCONSTANT_NameAndType\n", zz, 12, i);
	  zz++; j=((aaa *)p[i].info)->x1;
	  printf("%06X\t%04X\tcp[%04X].name_index\t%s\n", zz, j, i, get(j));
	  zz+=2; j=((aaa *)p[i].info)->x2;
	  printf("%06X\t%04X\tcp[%04X].descriptor_index\t%s\n\n", zz, j, i, get(j));
	  zz+=2;
	  break;
  }
}
printf("*** jvm7 D5 Class/Interface Fields Pool ***\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
zz=offset[4]+2;
for(i=0; i<fi.field_c; i++)
 {
  strcpy(aa, get(fld[i].dindex));
  strcpy(bb, rtype(&aa));
  printf("%s %s\n", bb,get(fld[i].name));
  printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
  printf("offset\tBytes\tMethod[%06X]\t\tMeaning\n", i);
  printf("~~~~~~~\t~~~~~~\t~~~~~~~~~~~~~~~~~\t~~~~~~~~~~~~~~\n");
  printf("%06X\t%04X\taccess_flags\n", zz, fld[i].a_flag);
  printf("%06X\t%04X\tname_index\t\t%s\n", zz+=2, fld[i].name,get(fld[i].name));
  printf("%06X\t%04X\tdescriptor_index\t%s\n", zz+=2, fld[i].dindex, get(fld[i].dindex));
  printf("%06X\t%04X\tattribute_count\n\n", zz+=2, fld[i].attr_c);
  zz+=((cvattr *)fld[i].attr_i)->len+8;
 }
printf("*** jvm7 D6 Class/Interface Methods Pool ***\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
zz=offset[5]+2;
for(i=0; i<fi.meth_c; i++)
{
	char *sign = new char[100];
	sign=get(mth[i].sign);
	strcpy(bb,signat(&sign));
	sign++;
	strcpy(aa, rtype(&sign));
	printf("%s ",aa);
	strcpy(aa, get(mth[i].name));
	printf("%s%s\n",aa, bb);
  printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
  printf("offset\tBytes\tMethod[%06X]\t\tMeaning\n", i);
  printf("~~~~~~~\t~~~~~~\t~~~~~~~~~~~~~~~~~\t~~~~~~~~~~~~~~\n");
  printf("%06X\t%04X\taccess_flags\n", zz, mth[i].a_flag);
  printf("%06X\t%04X\tname_index\t\t%s\n", zz+=2, mth[i].name,get(mth[i].name));
  printf("%06X\t%04X\tdescriptor_index\t%s\n", zz+=2, mth[i].sign, get(mth[i].sign));
  printf("%06X\t%04X\tattribute_count\n", zz+=2, mth[i].attr_c);
  for(j=0; j<mth[i].attr_c; j++)
  {
	 printf("%06X\t%04X\tattribute_name_index     %s\n", zz+=2, mth[i].mthattr[j].name,get(mth[i].mthattr[j].name));
	 printf("%06X\t%06X\tattribute_length\n\n", zz+=2, mth[i].mthattr[j].len);
	 zz+=mth[i].mthattr[j].len+4;
  }
}
printf("*** jvm7 D7 Class/Interface Attributes Pool ***\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
zz=offset[6]+2;
for(i=0; i<fi.attr_c; i++)
{
 printf("offset\tBytes\tAttributes[%04X]\tMeaning\n", i);
 printf("~~~~~~~\t~~~~~~\t~~~~~~~~~~~~~~~~~\t~~~~~~~~~~~~~~\n");
 printf("%06X\t%04X\tATTRIBUTE_name_index    %s\n",zz, fi.fiattr[i].name, get(fi.fiattr[i].name));
 printf("%06X\t%06X\tattribute_length\n\n", zz+=2, fi.fiattr[i].len);
 zz+=fi.fiattr[i].len+4;
}
return 0;
}
char* signat(char **ss)
{
  char *sign=new char[150];
  strcpy(sign,"(");
  *ss = *ss+1;
  while(**ss != ')')
  {
	  strcat(sign, rtype(ss));
	  *ss = *ss+1;
	  if( **ss != ')')
		 strcat(sign, ",");
  }
  strcat(sign, ")");
  return sign;
}
char* rtype( char **ss )    //Return type & arg
{
	char *aa=new char[20];  int i;
	switch(**ss)
	  {
		 case 'I' :  strcpy(aa, "int");    break;
		 case 'V' :  strcpy(aa, "void");   break;
		 case 'D' :  strcpy(aa, "double"); break;
		 case 'L' :
					  *ss = *ss+1; i=0;
					  while(**ss != ';')
					  { if(**ss == '/') i=0;
						 else { aa[i]=**ss; i++; }
						 *ss = *ss+1;
						}
					 aa[i]='\0';
					 break;
		case 'S' :  strcpy(aa, "short");  break;
		case 'B' :  strcpy(aa, "byte");   break;
		case 'F' :  strcpy(aa, "float");  break;
	  }
	  return aa;
}
clvue.exe
//Examples
//Created by Microsoft SDK
Êþº¾  - ' Code 
SourceFile 
ConstantValue 
Exceptions COM_Class_Type COM_ExposedAs_Group 
COM_ProxiesTo 
COM_MapsTo COM_GuidPool COM_MethodPool CPlotter  java/lang/Object 
 com/ms/com/_Guid ïú!â (ISSBBBBBBBB)V <init>  
   Lcom/ms/com/_Guid; clsid  	   ()V  
   com/ms/com/IUnknown  com/ms/com/NoAutoScripting  IPlotter ! 
CPlotter.java DrawLine #(Ljava/awt/Point;Ljava/awt/Point;)V <clinit>        "        $ %       ÿÿ  &      - 
     !» Yi(пüª<ýü· ³ ±                 *· ±          #          	    â!úï(iпü ª <ýü
Created by Microsoft SDK
Êþº¾  - # Code 
SourceFile 
ConstantValue 
Exceptions COM_Class_Type COM_ExposedAs_Group 
COM_ProxiesTo 
COM_MapsTo COM_GuidPool COM_MethodPool IPlotter  java/lang/Object 
 PointMarshaler  com/ms/com/_Guid ïú!á (ISSBBBBBBBB)V <init>  
   Lcom/ms/com/_Guid; iid  	   com/ms/com/IUnknown  
IPlotter.java DrawLine #(Ljava/awt/Point;Ljava/awt/Point;)V <clinit> ()V                                    ! "     - 
     !» Yi(пüª<ýü· ³ ±           	    á!úï(iпü ª <ýü 
          ÿÿ      
//Output generated by Microsoft Classvue package
//output directed from the console in this files
*** ClassVue D1 Class/Interface Overview *** Variable Name Value Reported ~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Class Name CPlotter Size 640 bytes Version 45.03 Access Flags public final Super Class Name java.lang.Object Interface(s) com.ms.com.IUnknown, com.ms.com.NoAutoScripting, IPlotter Source Filename CPlotter.java Debug Information NO ActiveX Controls YES *** ClassVue D2 Class/Interface Methods, Fields, and Classes *** Methods (Invoked) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void com.ms.com._Guid.<init>(int,short,short,byte,byte,byte,byte,byte,byte,byte,byte) void java.lang.Object.<init>() Methods (Interfaced) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * None Interfaced in this Class/Interface * Fields (Accessed and/or Modified) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ _Guid CPlotter.clsid Methods (Explicitly Declared by this Class/Interface) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Method[0001] static void <clinit>() Method[0002] public void <init>() Method[0000] public native void DrawLine(Point,Point) Fields (Explicitly Declared by this Class/Interface) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Field[0000] public static final _Guid clsid Classes (Accessed by this Class/Interface) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CPlotter IPlotter com.ms.com.IUnknown com.ms.com.NoAutoScripting java.lang.Object com.ms.com._Guid COM_Guid's (Explicitly Declared by this Class/Interface) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ EFFA21E2-6928-11D0-BFFC-00AA003CFDFC COM_Methods (Explicitly Declared by this Class/Interface) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *** ClassVue D3 Class/Interface Root Data Structures *** Offset Bytes Field Name Meaning ~~~~~~ ~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ 000000 CAFEBABE ClassFile.magic 000004 0003 ClassFile.minor_version Decimal (3) 000006 002D ClassFile.major_version Decimal (45) 000008 0027 ClassFile.constant_pool_count Decimal (39) 00000A ClassFile.constant_pool cp (see D4) 0001CC 0011 ClassFile.access_flags "public final" 0001CE 000C ClassFile.this_class "CPlotter" 0001D0 000E ClassFile.super_class "java.lang.Object" 0001D2 0003 ClassFile.interfaces_count Decimal (3) 0001D4 ClassFile.interfaces interfaces 0001DA 0001 ClassFile.fields_count Decimal (1) 0001DC ClassFile.fields fields (see D5) 0001E4 0003 ClassFile.methods_count Decimal (3) 0001E6 ClassFile.methods methods (see D6) 000252 0003 ClassFile.attributes_count Decimal (3) 000254 ClassFile.attributes attributes (see D7) *** ClassVue D4 - Class/Interface Constant Pool *** Offset Bytes Field Name Meaning ~~~~~~ ~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ 00000A 01 cp[0001].tag CONSTANT_Utf8 00000B 0004 cp[0001].length 00000D cp[0001].bytes "Code" 000011 01 cp[0002].tag CONSTANT_Utf8 000012 000A cp[0002].length 000014 cp[0002].bytes "SourceFile" 00001E 01 cp[0003].tag CONSTANT_Utf8 00001F 000D cp[0003].length 000021 cp[0003].bytes "ConstantValue" 00002E 01 cp[0004].tag CONSTANT_Utf8 00002F 000A cp[0004].length 000031 cp[0004].bytes "Exceptions" 00003B 01 cp[0005].tag CONSTANT_Utf8 00003C 000E cp[0005].length 00003E cp[0005].bytes "COM_Class_Type" 00004C 01 cp[0006].tag CONSTANT_Utf8 00004D 0013 cp[0006].length 00004F cp[0006].bytes "COM_ExposedAs_Group" 000062 01 cp[0007].tag CONSTANT_Utf8 000063 000D cp[0007].length 000065 cp[0007].bytes "COM_ProxiesTo" 000072 01 cp[0008].tag CONSTANT_Utf8 000073 000A cp[0008].length 000075 cp[0008].bytes "COM_MapsTo" 00007F 01 cp[0009].tag CONSTANT_Utf8 000080 000C cp[0009].length 000082 cp[0009].bytes "COM_GuidPool" 00008E 01 cp[000A].tag CONSTANT_Utf8 00008F 000E cp[000A].length 000091 cp[000A].bytes "COM_MethodPool" 00009F 01 cp[000B].tag CONSTANT_Utf8 0000A0 0008 cp[000B].length 0000A2 cp[000B].bytes "CPlotter" 0000AA 07 cp[000C].tag CONSTANT_Class 0000AB 000B cp[000C].name_index "CPlotter" 0000AD 01 cp[000D].tag CONSTANT_Utf8 0000AE 0010 cp[000D].length 0000B0 cp[000D].bytes "java/lang/Object" 0000C0 07 cp[000E].tag CONSTANT_Class 0000C1 000D cp[000E].name_index "java.lang.Object" 0000C3 01 cp[000F].tag CONSTANT_Utf8 0000C4 0010 cp[000F].length 0000C6 cp[000F].bytes "com/ms/com/_Guid" 0000D6 07 cp[0010].tag CONSTANT_Class 0000D7 000F cp[0010].name_index "com.ms.com._Guid" 0000D9 03 cp[0011].tag CONSTANT_Integer 0000DA EFFA21E2 cp[0011].bytes "-268819998" 0000DE 01 cp[0012].tag CONSTANT_Utf8 0000DF 000E cp[0012].length 0000E1 cp[0012].bytes "(ISSBBBBBBBB)V" 0000EF 01 cp[0013].tag CONSTANT_Utf8 0000F0 0006 cp[0013].length 0000F2 cp[0013].bytes "<init>" 0000F8 0C cp[0014].tag CONSTANT_NameAndType 0000F9 0013 cp[0014].name_index "<init>" 0000FB 0012 cp[0014].descriptor_index "(ISSBBBBBBBB)V" 0000FD 0A cp[0015].tag CONSTANT_Methodref 0000FE 0010 cp[0015].class_index "com.ms.com._Guid" 000100 0014 cp[0015].name_and_type_index "<init>","(ISSBBBBBBBB)V" 000102 01 cp[0016].tag CONSTANT_Utf8 000103 0012 cp[0016].length 000105 cp[0016].bytes "Lcom/ms/com/_Guid;" 000117 01 cp[0017].tag CONSTANT_Utf8 000118 0005 cp[0017].length 00011A cp[0017].bytes "clsid" 00011F 0C cp[0018].tag CONSTANT_NameAndType 000120 0017 cp[0018].name_index "clsid" 000122 0016 cp[0018].descriptor_index "Lcom.ms.com._Guid;" 000124 09 cp[0019].tag CONSTANT_Fieldref 000125 000C cp[0019].class_index "CPlotter" 000127 0018 cp[0019].name_and_type_index "clsid","Lcom.ms.com._Guid;" 000129 01 cp[001A].tag CONSTANT_Utf8 00012A 0003 cp[001A].length 00012C cp[001A].bytes "()V" 00012F 0C cp[001B].tag CONSTANT_NameAndType 000130 0013 cp[001B].name_index "<init>" 000132 001A cp[001B].descriptor_index "()V" 000134 0A cp[001C].tag CONSTANT_Methodref 000135 000E cp[001C].class_index "java.lang.Object" 000137 001B cp[001C].name_and_type_index "<init>","()V" 000139 01 cp[001D].tag CONSTANT_Utf8 00013A 0013 cp[001D].length 00013C cp[001D].bytes "com/ms/com/IUnknown" 00014F 07 cp[001E].tag CONSTANT_Class 000150 001D cp[001E].name_index "com.ms.com.IUnknown" 000152 01 cp[001F].tag CONSTANT_Utf8 000153 001A cp[001F].length 000155 cp[001F].bytes "com/ms/com/NoAutoScripting" 00016F 07 cp[0020].tag CONSTANT_Class 000170 001F cp[0020].name_index "com.ms.com.NoAutoScripting" 000172 01 cp[0021].tag CONSTANT_Utf8 000173 0008 cp[0021].length 000175 cp[0021].bytes "IPlotter" 00017D 07 cp[0022].tag CONSTANT_Class 00017E 0021 cp[0022].name_index "IPlotter" 000180 01 cp[0023].tag CONSTANT_Utf8 000181 000D cp[0023].length 000183 cp[0023].bytes "CPlotter.java" 000190 01 cp[0024].tag CONSTANT_Utf8 000191 0008 cp[0024].length 000193 cp[0024].bytes "DrawLine" 00019B 01 cp[0025].tag CONSTANT_Utf8 00019C 0023 cp[0025].length 00019E cp[0025].bytes "(Ljava/awt/Point;Ljava/awt/Point;)V" 0001C1 01 cp[0026].tag CONSTANT_Utf8 0001C2 0008 cp[0026].length 0001C4 cp[0026].bytes "<clinit>" *** ClassVue D5 - Class/Interface Fields Pool *** public static final _Guid clsid ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Offset Bytes Field[0000] Meaning ~~~~~~ ~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ 0001DC 0019 access_flags "public static final" 0001DE 0017 name_index "clsid" 0001E0 0016 descriptor_index "Lcom.ms.com._Guid;" 0001E2 0000 attributes_count *** ClassVue D6 - Class/Interface Methods Pool *** public native void DrawLine(Point,Point) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Offset Bytes Method[0000] Meaning ~~~~~~ ~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ 0001E6 0101 access_flags "public native" 0001E8 0024 name_index "DrawLine" 0001EA 0025 descriptor_index "(Ljava.awt.Point;Ljava.awt.Point;)V" 0001EC 0001 attributes_count 0001EE 0007 ATTRIBUTE_name_index ________ "COM_ProxiesTo" 0001F0 00000004 attribute_length static void <clinit>() ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Offset Bytes Method[0001] Meaning ~~~~~~ ~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ 0001F8 0008 access_flags "static" 0001FA 0026 name_index "<clinit>" 0001FC 001A descriptor_index "()V" 0001FE 0001 attributes_count 000200 0001 ATTRIBUTE_name_index ________ "Code" 000202 0000002D attribute_length 000231 0000 attributes_count public void <init>() ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Offset Bytes Method[0002] Meaning ~~~~~~ ~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ 000233 0001 access_flags "public" 000235 0013 name_index "<init>" 000237 001A descriptor_index "()V" 000239 0001 attributes_count 00023B 0001 ATTRIBUTE_name_index ________ "Code" 00023D 00000011 attribute_length 000250 0000 attributes_count *** ClassVue D7 - Class/Interface Attributes Pool *** Offset Bytes Attribute[0000] Meaning ~~~~~~ ~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ 000254 0002 ATTRIBUTE_name_index ________ "SourceFile" 000256 00000002 attribute_length Offset Bytes Attribute[0001] Meaning ~~~~~~ ~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ 00025C 0005 ATTRIBUTE_name_index ________ "COM_Class_Type" 00025E 00000006 attribute_length Offset Bytes Attribute[0002] Meaning ~~~~~~ ~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ 000268 0009 ATTRIBUTE_name_index ________ "COM_GuidPool" 00026A 00000012 attribute_length
*** ClassVue D1 Class/Interface Overview *** Variable Name Value Reported ~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Class Name IPlotter Size 601 bytes Version 45.03 Access Flags public interface Super Class Name java.lang.Object Interface(s) com.ms.com.IUnknown Source Filename IPlotter.java Debug Information NO ActiveX Controls YES *** ClassVue D2 Class/Interface Methods, Fields, and Classes *** Methods (Invoked) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void com.ms.com._Guid.<init>(int,short,short,byte,byte,byte,byte,byte,byte,byte,byte) Methods (Interfaced) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * None Interfaced in this Class/Interface * Fields (Accessed and/or Modified) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ _Guid IPlotter.iid Methods (Explicitly Declared by this Class/Interface) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Method[0001] static void <clinit>() Method[0000] public abstract void DrawLine(Point,Point) Fields (Explicitly Declared by this Class/Interface) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Field[0000] public static final _Guid iid Classes (Accessed by this Class/Interface) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ IPlotter com.ms.com.IUnknown java.lang.Object PointMarshaler com.ms.com._Guid COM_Guid's (Explicitly Declared by this Class/Interface) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ EFFA21E1-6928-11D0-BFFC-00AA003CFDFC COM_Methods (Explicitly Declared by this Class/Interface) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ java.lang.ArrayIndexOutOfBoundsException: 17
*** jvm7 D1 Class/Interface Overview *** Variable Name Value Reported ~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~ Class Name IPlotter Size 601 Version 45.03 Access Flags Super Class Name java/lang/Object Interface(s) com/ms/com/IUnknown, Source Filename IPlotter.java Debug Information NO ActiveX Controls YES *** jvm7 D2 Class/Interface Methods, Fields, & Classes *** Methods (Invoked) ~~~~~~~~~~~~~~~~~~~~~~~~~~ void com/ms/com/_Guid.<init>(int,short,short,byte,byte,byte,byte,byte,byte,byte,byte) Methods (Interfaced) ~~~~~~~~~~~~~~~~~~~~~~~~~~ * NA * Fields (Accessed and/or Modified) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ _Guid iid Methods (Explicitely Declared by this Class/Interface) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Method[0000] void DrawLine(Point,Point) Method[0001] void <clinit>() Fields (Explicitely Declared by this Class/Interface) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * NA * Classes (Accessed by this Class/Interface) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ IPlotter java/lang/Object PointMarshaler com/ms/com/_Guid com/ms/com/IUnknown COM_Guid's (Explicitly Declared by this Class/Interface) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ EFFA21E1-6928-11D0-BFFC0AA03CFDFC *** jvm7 D3 Class/Interface Root Data Structures *** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ offset Bytes Field Name Meaning ~~~~~~~ ~~~~~~~~ ~~~~~~~~~~~~~~ ~~~~~~~~~~~ 000000 CAFEBABE ClassFile.magic 000004 0003 ClassFile.minor_version Decimal (3) 000006 002D ClassFile.major_version Decimal (45) 000008 0023 ClassFile.constant_pool_count Decimal (35) 00000A ClassFile.Constant_pool cp 0001A6 0201 ClassFile.access_flags 0001A8 000C ClassFile.this_class IPlotter 0001AA 000E ClassFile.super_class java/lang/Object 0001AC 0001 ClassFile.interfaces_count Decimal (1) 0001AE ClassFile.interfaces interfaces 0001B0 0001 ClassFile.fields_count Decimal (1) 0001B2 ClassFile.fields fields 0001BA 0002 ClassFile.fields Decimal (2) 0001BC ClassFile.fields Methods 000217 0003 ClassFile.methods_count Decimal (3) 000219 ClassFile.methods attributes *** jvm7 D3 Class/Interface Root Data Structures *** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ offset Bytes Field Name Meaning ~~~~~~~ ~~~~~~~~ ~~~~~~~~~~~~~~ ~~~~~~~~~~~ 00000A 01 cp[0001].tag CONSTANT_Utf8 00000B 0004 cp[0001].length 00000D cp[0001].bytes Code 000011 01 cp[0002].tag CONSTANT_Utf8 000012 000A cp[0002].length 000014 cp[0002].bytes SourceFile 00001E 01 cp[0003].tag CONSTANT_Utf8 00001F 000D cp[0003].length 000021 cp[0003].bytes ConstantValue 00002E 01 cp[0004].tag CONSTANT_Utf8 00002F 000A cp[0004].length 000031 cp[0004].bytes Exceptions 00003B 01 cp[0005].tag CONSTANT_Utf8 00003C 000E cp[0005].length 00003E cp[0005].bytes COM_Class_Type 00004C 01 cp[0006].tag CONSTANT_Utf8 00004D 0013 cp[0006].length 00004F cp[0006].bytes COM_ExposedAs_Group 000062 01 cp[0007].tag CONSTANT_Utf8 000063 000D cp[0007].length 000065 cp[0007].bytes COM_ProxiesTo 000072 01 cp[0008].tag CONSTANT_Utf8 000073 000A cp[0008].length 000075 cp[0008].bytes COM_MapsTo 00007F 01 cp[0009].tag CONSTANT_Utf8 000080 000C cp[0009].length 000082 cp[0009].bytes COM_GuidPool 00008E 01 cp[000A].tag CONSTANT_Utf8 00008F 000E cp[000A].length 000091 cp[000A].bytes COM_MethodPool 00009F 01 cp[000B].tag CONSTANT_Utf8 0000A0 0008 cp[000B].length 0000A2 cp[000B].bytes IPlotter 0000AA 07 cp[000C].tag CONSTANT_Class 0000AB 000B cp[000C].name_index IPlotter 0000AD 01 cp[000D].tag CONSTANT_Utf8 0000AE 0010 cp[000D].length 0000B0 cp[000D].bytes java/lang/Object 0000C0 07 cp[000E].tag CONSTANT_Class 0000C1 000D cp[000E].name_index java/lang/Object 0000C3 01 cp[000F].tag CONSTANT_Utf8 0000C4 000E cp[000F].length 0000C6 cp[000F].bytes PointMarshaler 0000D4 07 cp[0010].tag CONSTANT_Class 0000D5 000F cp[0010].name_index PointMarshaler 0000D7 01 cp[0011].tag CONSTANT_Utf8 0000D8 0010 cp[0011].length 0000DA cp[0011].bytes com/ms/com/_Guid 0000EA 07 cp[0012].tag CONSTANT_Class 0000EB 0011 cp[0012].name_index com/ms/com/_Guid 0000ED 03 cp[0013].tag CONSTANT_integer 0000EE 20E1 cp[0013].bytes 0000F2 01 cp[0014].tag CONSTANT_Utf8 0000F3 000E cp[0014].length 0000F5 cp[0014].bytes (ISSBBBBBBBB)V 000103 01 cp[0015].tag CONSTANT_Utf8 000104 0006 cp[0015].length 000106 cp[0015].bytes <init> 00010C 0C cp[0016].tag CONSTANT_NameAndType 00010D 0015 cp[0016].name_index <init> 00010F 0014 cp[0016].descriptor_index (ISSBBBBBBBB)V 000111 0A cp[0017].tag CONSTANT_Methodref 000112 0012 cp[0017].class_index com/ms/com/_Guid 000114 0016 cp[0017].name_&_type_index <init>,(ISSBBBBBBBB)V 000116 01 cp[0018].tag CONSTANT_Utf8 000117 0012 cp[0018].length 000119 cp[0018].bytes Lcom/ms/com/_Guid; 00012B 01 cp[0019].tag CONSTANT_Utf8 00012C 0003 cp[0019].length 00012E cp[0019].bytes iid 000131 0C cp[001A].tag CONSTANT_NameAndType 000132 0019 cp[001A].name_index iid 000134 0018 cp[001A].descriptor_index Lcom/ms/com/_Guid; 000136 09 cp[001B].tag CONSTANT_Fieldref 000137 000C cp[001B].class_index IPlotter 000139 001A cp[001B].name_&_type_index iid,Lcom/ms/com/_Guid; 00013B 01 cp[001C].tag CONSTANT_Utf8 00013C 0013 cp[001C].length 00013E cp[001C].bytes com/ms/com/IUnknown 000151 07 cp[001D].tag CONSTANT_Class 000152 001C cp[001D].name_index com/ms/com/IUnknown 000154 01 cp[001E].tag CONSTANT_Utf8 000155 000D cp[001E].length 000157 cp[001E].bytes IPlotter.java 000164 01 cp[001F].tag CONSTANT_Utf8 000165 0008 cp[001F].length 000167 cp[001F].bytes DrawLine 00016F 01 cp[0020].tag CONSTANT_Utf8 000170 0023 cp[0020].length 000172 cp[0020].bytes (Ljava/awt/Point;Ljava/awt/Point;)V 000195 01 cp[0021].tag CONSTANT_Utf8 000196 0008 cp[0021].length 000198 cp[0021].bytes <clinit> 0001A0 01 cp[0022].tag CONSTANT_Utf8 0001A1 0003 cp[0022].length 0001A3 cp[0022].bytes ()V *** jvm7 D5 Class/Interface Fields Pool *** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ _Guid iid ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ offset Bytes Method[000000] Meaning ~~~~~~~ ~~~~~~ ~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~ 0001B2 0019 access_flags 0001B4 0019 name_index iid 0001B6 0018 descriptor_index Lcom/ms/com/_Guid; 0001B8 0000 attribute_count *** jvm7 D6 Class/Interface Methods Pool *** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void DrawLine(Point,Point) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ offset Bytes Method[000000] Meaning ~~~~~~~ ~~~~~~ ~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~ 0001BC 0401 access_flags 0001BE 001F name_index DrawLine 0001C0 0020 descriptor_index (Ljava/awt/Point;Ljava/awt/Point;)V 0001C2 0002 attribute_count 0001C4 0007 attribute_name_index COM_ProxiesTo 0001C6 000004 attribute_length 0001D0 0006 attribute_name_index COM_ExposedAs_Group 0001D2 000008 attribute_length void <clinit>() ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ offset Bytes Method[000001] Meaning ~~~~~~~ ~~~~~~ ~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~ 0001DE 0008 access_flags 0001E0 0021 name_index <clinit> 0001E2 0022 descriptor_index ()V 0001E4 0001 attribute_count 0001E6 0001 attribute_name_index Code 0001E8 00002D attribute_length *** jvm7 D7 Class/Interface Attributes Pool *** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ offset Bytes Attributes[0000] Meaning ~~~~~~~ ~~~~~~ ~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~ 000219 0002 ATTRIBUTE_name_index SourceFile 00021B 000002 attribute_length offset Bytes Attributes[0001] Meaning ~~~~~~~ ~~~~~~ ~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~ 000221 0009 ATTRIBUTE_name_index COM_GuidPool 000223 000012 attribute_length offset Bytes Attributes[0002] Meaning ~~~~~~~ ~~~~~~ ~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~ 000239 000A ATTRIBUTE_name_index COM_MethodPool 00023B 00001A attribute_length
//Entry in the constant pool
0=Constant Pool Size=39 1=Code(1) 2=SourceFile(1) 3=ConstantValue(1) 4=Exceptions(1) 5=COM_Class_Type(1) 6=COM_ExposedAs_Group(1) 7=COM_ProxiesTo(1) 8=COM_MapsTo(1) 9=COM_GuidPool(1) 10=COM_MethodPool(1) 11=CPlotter(1) 12=11(7) 13=java/lang/Object(1) 14=13(7) 15=com/ms/com/_Guid(1) 16=15(7) 17=8418(3) 18=(ISSBBBBBBBB)V(1) 19=<init>(1) 20=19..18(12) 21=16..20(10) 22=Lcom/ms/com/_Guid;(1) 23=clsid(1) 24=23..22(12) 25=12..24(9) 26=()V(1) 27=19..26(12) 28=14..27(10) 29=com/ms/com/IUnknown(1) 30=29(7) 31=com/ms/com/NoAutoScripting(1) 32=31(7) 33=IPlotter(1) 34=33(7) 35=CPlotter.java(1) 36=DrawLine(1) 37=(Ljava/awt/Point;Ljava/awt/Point;)V(1) 38=<clinit>(1)
Vijay Mukhi's Computer
Institute
VMCI, B-13, Everest Building, Tardeo, Mumbai 400 034, India
Tel : 91-22-496 4335 /6/7/8/9    
Fax : 91-22-307 28 59 
e-mail : vmukhi@giasbm01.vsnl.net.in
http://www.vijaymukhi.com