亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? classread.cc

?? 功能較全面的反匯編器:反匯編器ht-2.0.15.tar.gz
?? CC
?? 第 1 頁 / 共 2 頁
字號:
/* *	HT Editor *	classread.cc * *	Copyright (C) 2001 Stanley Gambarin <stanleyg76@yahoo.com> *	Copyright (C) 2002 Sebastian Biallas (sb@biallas.net) * *	This program is free software; you can redistribute it and/or modify *	it under the terms of the GNU General Public License version 2 as *	published by the Free Software Foundation. * *	This program 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 this program; if not, write to the Free Software *	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */#include <stdlib.h>#include <string.h>#include "analy.h"#include "class.h"#include "strtools.h"#include "snprintf.h"#include "stream.h"static u1 inp[4];static u4 offset;#define cls_read(a, b, c, d) (((b) != ((d)->read((a), (b)*(c)))) \				? (0) : (offset+=(b), (b)))#define READ1() \  (((inp[0]=inp[1]=inp[2]=inp[3]=0),  \   (1 == cls_read (inp, 1, 1, htio))) \   ? (u1)(inp[0]) : 0)#define READ2() \  (((inp[0]=inp[1]=inp[2]=inp[3]=0),  \   (2 == cls_read (inp, 2, 1, htio))) \   ? ((((u2)inp[0])<<8)|inp[1]) : 0)#define READ4() \  (((inp[0]=inp[1]=inp[2]=inp[3]=0),  \   (4 == cls_read (inp, 4, 1, htio))) \   ? (((((((u4)inp[0]<<8)|inp[1])<<8)|inp[2])<<8)|inp[3]) : 0)#define READN(inb, n) cls_read (inb, n, 1, htio)#define SKIPN(n) {u1 b; for (u4 i=0; i<n; i++) {cls_read(&b, 1, 1, htio);}}ClassMethod::ClassMethod(char *n, char *d, ClassAddress s, uint l, int f,			int e_len, exception_info *e){	name = n;	start = s;	type = d;	length = l;	flags = f;	exctbl_len = e_len;	exctbl = e;}int ClassMethod::compareTo(const Object *obj) const{	ClassMethod *cm = (ClassMethod*)obj;	if ((start + length - 1) < cm->start) return -1;	if (start > (cm->start + cm->length - 1)) return 1;	return 0;}ClassField::ClassField(char *n, char *d, int f){	name = n;	type = d;	flags = f;}/* extract name from a utf8 constant pool entry */static char *get_string(Stream *htio, classfile *clazz, uint index){	return (index < clazz->cpool_count) ? clazz->cpool[index]->value.string : (char*)"?";}/* extract name from a utf8 constant pool class entry */static char *get_class_name(Stream *htio, classfile *clazz, uint index){	return (index < clazz->cpool_count) ? get_string(htio, clazz, clazz->cpool[index]->value.llval[0]): (char*)"?";}/* extract name from a utf8 constant pool class entry */static void get_name_and_type(Stream *htio, classfile *clazz, uint index, char *name, char *type){	strcpy(name, (index < clazz->cpool_count) ? get_string(htio, clazz, clazz->cpool[index]->value.llval[0]) : "?");	strcpy(type, (index < clazz->cpool_count) ? get_string(htio, clazz, clazz->cpool[index]->value.llval[1]) : "?");}/* read and return constant pool entry */static cp_info *read_cpool_entry(Stream *htio, classfile *clazz){	cp_info *cp;	u2 idx;	cp         = ht_malloc(sizeof (*cp));	cp->offset = offset;	cp->tag    = READ1();	switch (cp->tag) {	case CONSTANT_Utf8:		idx = READ2();		cp->value.string = ht_malloc(idx+1);		cls_read(cp->value.string, idx, 1, htio);		cp->value.string[idx] = 0;		break;	case CONSTANT_Integer:	case CONSTANT_Float:		cp->value.ival = READ4();		break;	case CONSTANT_Long:	case CONSTANT_Double:		cp->value.llval[0] = READ4();		cp->value.llval[1] = READ4();		break;	case CONSTANT_Class:	case CONSTANT_String:		cp->value.llval[0] = READ2();		break;	case CONSTANT_Fieldref:	case CONSTANT_Methodref:	case CONSTANT_InterfaceMethodref:	case CONSTANT_NameAndType:		cp->value.llval[0] = READ2();		cp->value.llval[1] = READ2();		break;	default:		return NULL;	}	return (cp);}/* read and return an attribute read */attrib_info *attribute_read(Stream *htio, classfile *clazz){	attrib_info *a;	u4 len;	char *aname;	a = ht_malloc(sizeof (*a));	if (!a) {		return NULL;	}	a->offset    = offset;	a->name      = READ2();	a->len = len = READ4();	aname = get_string(htio, clazz, a->name);	if (!strcmp (aname, "ConstantValue")) {		a->tag = ATTRIB_ConstantValue;	} else if (!strcmp(aname, "Code")) {		a->tag = ATTRIB_Code;		a->code.max_stack = READ2();		a->code.max_locals = READ2();		a->code.len = READ4();		a->code.start = offset;		len -= 2+2+4+a->code.len;		SKIPN(a->code.len);		a->code.exctbl_len = READ2();		if (a->code.exctbl_len) {			a->code.exctbl = ht_malloc(a->code.exctbl_len * sizeof(exception_info));			for (uint i=0; i < a->code.exctbl_len; i++) {				a->code.exctbl[i].start_pc = READ2();				a->code.exctbl[i].end_pc = READ2();				a->code.exctbl[i].handler_pc = READ2();				a->code.exctbl[i].catch_type = READ2();			}		}		len -= 2 + 8*a->code.exctbl_len;	} else if (!strcmp(aname, "Signature")) {		a->tag = ATTRIB_Signature;		a->signature = READ2();		len -= 2;	} else if (!strcmp(aname, "Exceptions")) {		a->tag = ATTRIB_Exceptions;	} else if (!strcmp(aname, "InnerClasses")) {		a->tag = ATTRIB_InnerClasses;	} else if (!strcmp(aname, "Synthetic")) {		a->tag = ATTRIB_Synthetic;	} else if (!strcmp(aname, "SourceFile")) {		a->tag = ATTRIB_SourceFile;	} else if (!strcmp(aname, "LineNumberTable")) {		a->tag = ATTRIB_LineNumberTable;	} else if (!strcmp(aname, "LocalVariableTable")) {		a->tag = ATTRIB_LocalVariableTable;	} else if (!strcmp(aname, "Deprecated")) {		a->tag = ATTRIB_Deprecated;	}	SKIPN(len);	return (a);}/* read and return method info */static mf_info *read_fieldmethod(Stream *htio, ht_class_shared_data *shared){	mf_info *m;	u2 idx;	classfile *clazz = shared->file;	m = (mf_info *)calloc(1, sizeof (*m));	if (!m) {		return NULL;	}	m->offset = offset;	m->flags = READ2();	m->name = get_string(htio, clazz, READ2());	m->desc = get_string(htio, clazz, READ2());	m->attribs_count = idx = READ2();	if (idx) {		m->attribs = ht_malloc(idx * sizeof (*(m->attribs)));		if (!m->attribs) {			return NULL;		}		for (int i=0; i < (int)idx; i++) {			m->attribs[i] = attribute_read(htio, clazz);		}	}	return m;}/* read and return classfile */ht_class_shared_data *class_read(File *htio){	ht_class_shared_data *shared;	classfile *clazz;	u2 count;	u2 cpcount, index;	clazz = ht_malloc(sizeof (*clazz));	if (!clazz) {		return NULL;	}	shared = ht_malloc(sizeof (ht_class_shared_data));	shared->file = clazz;	shared->methods = new AVLTree(true);	shared->fields = new Array(true);	shared->valid = new Area();	shared->valid->init();	shared->initialized = new Area();	shared->initialized->init();	clazz->offset = offset = 0;	clazz->magic  = READ4();	if (clazz->magic != 0xCAFEBABE) {		return NULL;	}	clazz->minor_version = READ2();	clazz->major_version = READ2();	count = clazz->cpool_count = READ2();	clazz->cpool = ht_malloc((count+1) * sizeof (*(clazz->cpool)));	if (!clazz->cpool) {		return NULL;	}	cpcount = clazz->cpool_count;	for (int i=1; i<(int)count; i++) {		clazz->cpool[i] = read_cpool_entry(htio, clazz);		if ((clazz->cpool[i]->tag == CONSTANT_Long) ||			(clazz->cpool[i]->tag == CONSTANT_Double)) {			i++;		}	}	clazz->coffset = offset;	clazz->access_flags = READ2();	shared->flags = clazz->access_flags;	index = READ2();	clazz->this_class = index;	index = READ2();	clazz->super_class = index;	count = clazz->interfaces_count = READ2();	shared->classinfo.interfaces = NULL;	shared->classinfo.thisclass = get_class_name(htio, clazz, clazz->this_class);	if (strcmp(shared->classinfo.thisclass, "?") == 0) return NULL;	shared->classinfo.superclass = get_class_name(htio, clazz, clazz->super_class);	if (strcmp(shared->classinfo.superclass, "?") == 0) return NULL;	if (count) {		clazz->interfaces = ht_malloc(count * sizeof (*(clazz->interfaces)));		if (!clazz->interfaces) return NULL;		shared->classinfo.interfaces = new Array(true);		for (int i=0; i < (int)count; i++) {			index = READ2();			clazz->interfaces[i] = index;			shared->classinfo.interfaces->insert(new String(get_class_name(htio, clazz, index)));		}	} else {		clazz->interfaces = 0;	}	clazz->foffset = offset;	count = clazz->fields_count = READ2();	if (count) {		clazz->fields = ht_malloc(count * sizeof (*(clazz->fields)));		if (!clazz->fields) {			return NULL;		}		for (int i=0; i < (int)count; i++) {			mf_info *m = read_fieldmethod(htio, shared);			clazz->fields[i] = m;			ClassField *cf = new ClassField(m->name, m->desc, m->flags);			int acount = m->attribs_count;			for (int j=0; j < acount; j++) {				attrib_info *ai = m->attribs[j];				if (ai->tag == ATTRIB_Signature) {					cf->addsig(get_string(htio, shared->file, ai->signature));				}			}			shared->fields->insert(cf);		}	} else {		clazz->fields = 0;	}	clazz->moffset = offset;	count = clazz->methods_count = READ2();	if (count) {		clazz->methods = ht_malloc(count * sizeof (*(clazz->methods)));		if (!clazz->methods) {			return NULL;		}		for (int i=0; i < (int)count; i++) {			mf_info *m = read_fieldmethod(htio, shared);			clazz->methods[i] = m;			int acount = m->attribs_count;			bool ok = false;			ClassMethod *cm = NULL;			for (int j=0; j < acount; j++) {				attrib_info *ai = m->attribs[j];				if (ai->tag == ATTRIB_Code) {					cm = new ClassMethod(m->name, m->desc, 						ai->code.start, ai->code.len, m->flags, 						ai->code.exctbl_len, ai->code.exctbl);					shared->methods->insert(cm);					AddressFlat32 a1(ai->code.start);					AddressFlat32 a2(ai->code.start+ai->code.len);					shared->initialized->add(&a1, &a2);					shared->valid->add(&a1, &a2);					ok = true;				} else if (ai->tag == ATTRIB_Signature && cm) {					cm->addsig(get_string(htio, shared->file, ai->signature));				}			}			if (!ok) {				// fake abstract method				ClassMethod *cm = new ClassMethod(m->name, m->desc, offset, 1, m->flags, 0, NULL);				shared->methods->insert(cm);				Address *a1 = new AddressFlat32(offset);				Address *a2 = new AddressFlat32(offset+1);				shared->valid->add(a1, a2);				delete a1;				delete a2;			}		}	} else {		clazz->methods = 0;	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜视频一区二区| 日日摸夜夜添夜夜添精品视频| 日韩亚洲欧美成人一区| 欧美三级电影一区| 色综合久久中文字幕| 99re视频精品| 91官网在线观看| 7777精品伊人久久久大香线蕉经典版下载 | 色8久久人人97超碰香蕉987| 一本色道久久加勒比精品| 色婷婷av一区二区三区软件| 在线免费观看日本一区| 欧美午夜精品免费| 精品久久一二三区| 久久精品人人做人人爽97| 日韩理论片在线| 亚洲一区二区3| 精品一区二区三区在线视频| 狠狠色伊人亚洲综合成人| 99久久免费精品| 色诱亚洲精品久久久久久| 91.成人天堂一区| 中文在线一区二区| 美女国产一区二区| 日本高清不卡一区| 国产三级精品三级| 人人爽香蕉精品| 在线欧美小视频| 久久精品一二三| 偷拍亚洲欧洲综合| 国产精品一区二区免费不卡| 在线国产亚洲欧美| 国产精品国产三级国产有无不卡| 亚洲一区二区av电影| 成人手机在线视频| 久久久久青草大香线综合精品| 香蕉av福利精品导航| 欧美亚洲日本一区| 亚洲男人的天堂av| 99re热视频精品| 久久久久久久综合狠狠综合| 日本亚洲免费观看| 欧美白人最猛性xxxxx69交| 亚洲韩国一区二区三区| 91丨国产丨九色丨pron| 国产亚洲一区字幕| 99在线热播精品免费| 中文字幕一区二区三区四区不卡| 国产一区二区三区蝌蚪| 国产欧美精品日韩区二区麻豆天美| 精品系列免费在线观看| 精品国产乱码久久久久久浪潮| 免费看欧美美女黄的网站| 久久人人97超碰com| 国产精品一区二区三区网站| 国产精品久久久久久久午夜片| 99久久99久久精品国产片果冻 | 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 精品无码三级在线观看视频| 久久嫩草精品久久久精品一| 99久久免费精品高清特色大片| 成人欧美一区二区三区在线播放| 91香蕉国产在线观看软件| 亚洲成人av免费| 久久婷婷国产综合国色天香 | 精品国产亚洲一区二区三区在线观看| 国产乱国产乱300精品| 亚洲精品乱码久久久久久黑人| 欧美日韩亚州综合| 国产一区二区三区精品视频| 夜夜揉揉日日人人青青一国产精品| 久久久无码精品亚洲日韩按摩| 日本久久电影网| 国产一区二区三区不卡在线观看| 亚洲精品免费在线| 亚洲三级电影网站| 久久久夜色精品亚洲| 精品视频免费在线| 91视频国产资源| 黄色日韩网站视频| 精品影视av免费| 免费在线看一区| 免费人成精品欧美精品| 亚洲伦在线观看| 中文av一区二区| 久久精品一区蜜桃臀影院| 精品国产免费视频| 欧美精品在欧美一区二区少妇| 成人精品小蝌蚪| 99久久精品国产一区二区三区| 国产99久久久国产精品潘金网站| 国产精品青草综合久久久久99| 91精品在线麻豆| 欧美va天堂va视频va在线| 欧美一级一区二区| 亚洲国产高清aⅴ视频| 国产日韩精品一区二区三区| 亚洲人成人一区二区在线观看| 国产精品久久久久婷婷二区次| 亚洲欧美另类久久久精品2019| 亚洲免费在线播放| 日本va欧美va瓶| 国产高清无密码一区二区三区| thepron国产精品| 欧美亚洲禁片免费| 国产蜜臀97一区二区三区| 亚洲成人免费在线观看| 成人aaaa免费全部观看| av电影一区二区| 波波电影院一区二区三区| 成人激情av网| 欧美一区二区成人| 亚洲精品中文在线| 蜜桃91丨九色丨蝌蚪91桃色| 成人黄色在线网站| 亚洲精品一区二区三区四区高清| 中文字幕av一区二区三区免费看 | 制服视频三区第一页精品| 久久蜜桃av一区精品变态类天堂| 亚洲久本草在线中文字幕| 国产精品一线二线三线精华| 一本大道综合伊人精品热热| 日韩视频一区在线观看| 亚洲第一综合色| 91在线视频在线| 一区二区三区中文在线| av中文字幕在线不卡| 久久久久88色偷偷免费| 国产一区欧美二区| 久久综合一区二区| 另类综合日韩欧美亚洲| 成人不卡免费av| 国产精品欧美综合在线| 成人手机电影网| 一区二区三区日韩精品| 欧美日韩一区二区电影| 亚洲综合图片区| 在线综合+亚洲+欧美中文字幕| 天堂一区二区在线免费观看| 欧美吻胸吃奶大尺度电影| 亚洲香肠在线观看| 欧美三级电影网站| 国产成人在线视频网站| 亚洲少妇30p| 欧美亚洲国产一卡| 麻豆精品国产91久久久久久| 国产欧美综合在线观看第十页 | 欧美日韩国产美| 久久精品国产**网站演员| 国产精品成人免费在线| 欧美亚洲尤物久久| 麻豆精品在线观看| 欧美激情在线观看视频免费| 制服丝袜av成人在线看| av电影在线观看完整版一区二区| 一区二区在线观看视频| 欧美一区二区在线免费播放| 国产91色综合久久免费分享| 日本成人在线电影网| 国产精品人妖ts系列视频| 日韩欧美自拍偷拍| 欧美日韩视频在线一区二区| 91视频免费观看| 丁香啪啪综合成人亚洲小说| 欧美a一区二区| 亚洲成人午夜电影| 亚洲国产精品久久不卡毛片 | 另类的小说在线视频另类成人小视频在线 | 成人深夜视频在线观看| 蓝色福利精品导航| 免费观看在线色综合| 国产成人午夜99999| 国产九色精品成人porny| 日本免费新一区视频| 日韩影院在线观看| 一区二区三区四区av| 亚洲一区视频在线| 亚洲成a人在线观看| 亚洲免费伊人电影| 舔着乳尖日韩一区| 极品少妇一区二区三区精品视频| 日本成人超碰在线观看| 久久国内精品自在自线400部| 国产综合色精品一区二区三区| 国产又黄又大久久| 国产在线一区观看| 国产不卡一区视频| 欧美色视频在线| 欧美zozo另类异族| 国产清纯白嫩初高生在线观看91| 国产精品日韩成人| 亚洲午夜av在线| 狠狠色综合日日| 99re视频这里只有精品| 日韩欧美一级片| 亚洲精品精品亚洲| 国产精品综合久久| 欧美中文一区二区三区| 国产日韩av一区二区| 五月综合激情网|