From 710c84d29124afc5b3ae93ed2c026bc9dcf236d1 Mon Sep 17 00:00:00 2001 From: moradek Date: Fri, 25 Aug 2017 13:02:25 +0300 Subject: [PATCH] initialization --- README.md | 14 ++- doc/jxe2jar.pdf | Bin 0 -> 182531 bytes src/Bytecode.py | 244 +++++++++++++++++++++++++++++++++++++++++ src/Common.py | 143 ++++++++++++++++++++++++ src/ConstPool.py | 106 ++++++++++++++++++ src/JXE.py | 279 +++++++++++++++++++++++++++++++++++++++++++++++ src/JXE2JAR.py | 130 ++++++++++++++++++++++ 7 files changed, 914 insertions(+), 2 deletions(-) create mode 100644 doc/jxe2jar.pdf create mode 100644 src/Bytecode.py create mode 100644 src/Common.py create mode 100644 src/ConstPool.py create mode 100644 src/JXE.py create mode 100644 src/JXE2JAR.py diff --git a/README.md b/README.md index 589db90..0421bd1 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,12 @@ -# jxe2jar -Reverse conversion from Intel JXE format to Oracle JAR +# JXE2JAR + +Tool for reverse conversion from Intel JXE format to Oracle JAR. +Detailed info in doc/jxe2jar.pdf. + +## Dependencies +bitstring + +## Using +python JXE2JAR.py input.jxe output.jar + +## Thanks to @Black2Fan diff --git a/doc/jxe2jar.pdf b/doc/jxe2jar.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b2f091a9470428cb81e1927d8f48404987a9060d GIT binary patch literal 182531 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 literal 0 HcmV?d00001 diff --git a/src/Bytecode.py b/src/Bytecode.py new file mode 100644 index 0000000..5d728af --- /dev/null +++ b/src/Bytecode.py @@ -0,0 +1,244 @@ +from Common import * + +import struct + +JBOpcode = enum( + JBnop=0x00, JBaconstnull=0x01, JBiconstm1=0x02, JBiconst0=0x03, JBiconst1=0x04, JBiconst2=0x05, + JBiconst3=0x06, JBiconst4=0x07, JBiconst5=0x08, JBlconst0=0x09, JBlconst1=0x0a, JBfconst0=0x0b, + JBfconst1=0x0c, JBfconst2=0x0d, JBdconst0=0x0e, JBdconst1=0x0f, JBbipush=0x10, JBsipush=0x11, + JBldc=0x12, JBldcw=0x13, JBldc2lw=0x14, JBiload=0x15, JBlload=0x16, JBfload=0x17, JBdload=0x18, + JBaload=0x19, JBiload0=0x1a, JBiload1=0x1b, JBiload2=0x1c, JBiload3=0x1d, JBlload0=0x1e, + JBlload1=0x1f, JBlload2=0x20, JBlload3=0x21, JBfload0=0x22, JBfload1=0x23, JBfload2=0x24, + JBfload3=0x25, JBdload0=0x26, JBdload1=0x27, JBdload2=0x28, JBdload3=0x29, JBaload0=0x2a, + JBaload1=0x2b, JBaload2=0x2c, JBaload3=0x2d, JBiaload=0x2e, JBlaload=0x2f, JBfaload=0x30, + JBdaload=0x31, JBaaload=0x32, JBbaload=0x33, JBcaload=0x34, JBsaload=0x35, JBistore=0x36, + JBlstore=0x37, JBfstore=0x38, JBdstore=0x39, JBastore=0x3a, JBistore0=0x3b, JBistore1=0x3c, + JBistore2=0x3d, JBistore3=0x3e, JBlstore0=0x3f, JBlstore1=0x40, JBlstore2=0x41, JBlstore3=0x42, + JBfstore0=0x43, JBfstore1=0x44, JBfstore2=0x45, JBfstore3=0x46, JBdstore0=0x47, JBdstore1=0x48, + JBdstore2=0x49, JBdstore3=0x4a, JBastore0=0x4b, JBastore1=0x4c, JBastore2=0x4d, JBastore3=0x4e, + JBiastore=0x4f, JBlastore=0x50, JBfastore=0x51, JBdastore=0x52, JBaastore=0x53, JBbastore=0x54, + JBcastore=0x55, JBsastore=0x56, JBpop=0x57, JBpop2=0x58, JBdup=0x59, JBdupx1=0x5a, JBdupx2=0x5b, + JBdup2=0x5c, JBdup2x1=0x5d, JBdup2x2=0x5e, JBswap=0x5f, JBiadd=0x60, JBladd=0x61, JBfadd=0x62, + JBdadd=0x63, JBisub=0x64, JBlsub=0x65, JBfsub=0x66, JBdsub=0x67, JBimul=0x68, JBlmul=0x69, + JBfmul=0x6a, JBdmul=0x6b, JBidiv=0x6c, JBldiv=0x6d, JBfdiv=0x6e, JBddiv=0x6f, JBirem=0x70, + JBlrem=0x71, JBfrem=0x72, JBdrem=0x73, JBineg=0x74, JBlneg=0x75, JBfneg=0x76, JBdneg=0x77, + JBishl=0x78, JBlshl=0x79, JBishr=0x7a, JBlshr=0x7b, JBiushr=0x7c, JBlushr=0x7d, JBiand=0x7e, + JBland=0x7f, JBior=0x80, JBlor=0x81, JBixor=0x82, JBlxor=0x83, JBiinc=0x84, JBi2l=0x85, + JBi2f=0x86, JBi2d=0x87, JBl2i=0x88, JBl2f=0x89, JBl2d=0x8a, JBf2i=0x8b, JBf2l=0x8c, JBf2d=0x8d, + JBd2i=0x8e, JBd2l=0x8f, JBd2f=0x90, JBi2b=0x91, JBi2c=0x92, JBi2s=0x93, JBlcmp=0x94, JBfcmpl=0x95, + JBfcmpg=0x96, JBdcmpl=0x97, JBdcmpg=0x98, JBifeq=0x99, JBifne=0x9a, JBiflt=0x9b, JBifge=0x9c, + JBifgt=0x9d, JBifle=0x9e, JBificmpeq=0x9f, JBificmpne=0xa0, JBificmplt=0xa1, JBificmpge=0xa2, + JBificmpgt=0xa3, JBificmple=0xa4, JBifacmpeq=0xa5, JBifacmpne=0xa6, JBgoto=0xa7, JBjsr=0xa8, JBret=0xa9, + JBtableswitch=0xaa, JBlookupswitch=0xab, JBreturn0=0xac, JBreturn1=0xad, JBreturn2=0xae, JBsyncReturn0=0xaf, + JBsyncReturn1=0xb0, JBsyncReturn2=0xb1, JBgetstatic=0xb2, JBputstatic=0xb3, JBgetfield=0xb4, JBputfield=0xb5, + JBinvokevirtual=0xb6, JBinvokespecial=0xb7, JBinvokestatic=0xb8, JBinvokeinterface=0xb9, JBnew=0xbb, + JBnewarray=0xbc, JBanewarray=0xbd, JBarraylength=0xbe, JBathrow=0xbf, JBcheckcast=0xc0, + JBinstanceof=0xc1, JBmonitorenter=0xc2, JBmonitorexit=0xc3, JBmultianewarray=0xc5, JBifnull=0xc6, + JBifnonnull=0xc7, JBgotow=0xc8, JBbreakpoint=0xca, JBiloadw=0xcb, JBlloadw=0xcc, JBfloadw=0xcd, + JBdloadw=0xce, JBaloadw=0xcf, JBistorew=0xd0, JBlstorew=0xd1, JBfstorew=0xd2, JBdstorew=0xd3, + JBastorew=0xd4, JBiincw=0xd5, JBaload0getfield=0xd7, JBreturnFromConstructor=0xe4, + JBgenericReturn=0xe5, JBinvokeinterface2=0xe7, JBreturnToMicroJIT=0xf3, JBretFromNative0=0xf4, + JBretFromNative1=0xf5, JBretFromNativeF=0xf6, JBretFromNativeD=0xf7, JBretFromNativeJ=0xf8, + JBldc2dw=0xf9, JBasyncCheck=0xfa, JBimpdep1=0xfe, JBimpdep2=0xff +) + +def transform_bytecode(bytecode, cp): + i = 0 + new_cp_transform = {} + new_bytecode = bytearray() + while i < len(bytecode): + opcode = bytecode[i] + if opcode in ( + JBOpcode.JBgetstatic, JBOpcode.JBputstatic, JBOpcode.JBgetfield, + JBOpcode.JBputfield, JBOpcode.JBinvokevirtual, JBOpcode.JBinvokespecial, + JBOpcode.JBinvokestatic, JBOpcode.JBnew, + JBOpcode.JBanewarray, JBOpcode.JBcheckcast, JBOpcode.JBinstanceof, + ): + new_bytecode.append(opcode) + index = struct.unpack('H', new_index + 1) + new_bytecode += tmp + i += 3 + elif opcode in (JBOpcode.JBldcw,): + new_bytecode.append(opcode) + index = struct.unpack('H', new_index + 1) + new_bytecode += tmp + i += 3 + elif opcode in (JBOpcode.JBldc2lw,): + index = struct.unpack('H', new_index + 1) + new_cp_transform[new_index]= '\x05' + new_bytecode += tmp + else: + new_bytecode.append(JBOpcode.JBldcw) + if cp.check_transform(index): + transform = cp.get_transform(index) + new_index = transform['new_index'] + else: + # TODO very dirty hack, because we incorrectly parse constant pool used in 1 case + new_index = 0 + tmp = struct.pack('>H', new_index + 1) + new_bytecode += tmp + i += 3 + elif opcode in (JBOpcode.JBldc2dw,): + new_bytecode.append(JBOpcode.JBldc2lw) + index = struct.unpack('H', new_index + 1) + new_cp_transform[new_index] = '\x06' + new_bytecode += tmp + i += 3 + elif opcode in ( + JBOpcode.JBiloadw, JBOpcode.JBlloadw, + JBOpcode.JBfloadw, JBOpcode.JBdloadw, JBOpcode.JBaloadw, JBOpcode.JBistorew, + JBOpcode.JBlstorew, JBOpcode.JBfstorew, JBOpcode.JBdstorew, JBOpcode.JBastorew, + JBOpcode.JBiincw, + ): + raise NotImplementedError(hex(opcode)) + elif opcode in ( + JBOpcode.JBsipush, JBOpcode.JBifeq, JBOpcode.JBifne, JBOpcode.JBiflt, JBOpcode.JBifge, + JBOpcode.JBifgt, JBOpcode.JBifle, JBOpcode.JBificmpeq, JBOpcode.JBificmpne, + JBOpcode.JBificmplt, JBOpcode.JBificmpge, JBOpcode.JBificmpgt, + JBOpcode.JBificmple, JBOpcode.JBifacmpeq, JBOpcode.JBifacmpne, JBOpcode.JBgoto, + JBOpcode.JBjsr, JBOpcode.JBifnull, JBOpcode.JBifnonnull, + ): + new_bytecode.append(opcode) + index = struct.unpack('H', index) + new_bytecode += tmp + i += 3 + elif opcode in (JBOpcode.JBaload0getfield,): + new_bytecode.append(JBOpcode.JBaload0) + i += 1 + elif opcode in ( + JBOpcode.JBreturn0, JBOpcode.JBsyncReturn0 + ): + # JBreturn0 -> return (0xb1) + # Used only if function return void + new_bytecode.append(0xb1) + i += 1 + elif opcode in (JBOpcode.JBreturn1, JBOpcode.JBsyncReturn1): + # JBreturn1 -> areturn (0xb0) + # Used only after push on stack + new_bytecode.append(0xb0) + i += 1 + elif opcode in (JBOpcode.JBinvokeinterface2,): + # JBinvokeinterface2 -> invokeinterface + # Usually placed as JBinvokeinterface2 JBnop JBinvokeinterface + # invokeinterface in Oracle get 4 bytes but j9 get 2 + # JBinvokeinterface2 JBnop correlate with this to fix this misalign + new_bytecode.append(JBOpcode.JBinvokeinterface) + index = struct.unpack('H', new_index + 1) + new_cp_transform[index] = '\x0b' + new_bytecode += tmp + new_bytecode.append(0) + new_bytecode.append(0) + i += 5 + elif opcode in (JBOpcode.JBinvokeinterface,): + raise NotImplementedError + elif opcode in (JBOpcode.JBldc,): + new_bytecode.append(opcode) + index = bytecode[i + 1] + transform = cp.get_transform(index) + new_index = transform['new_index'] + new_bytecode.append(new_index + 1) + i += 2 + elif opcode in ( + JBOpcode.JBbipush, JBOpcode.JBnewarray, + JBOpcode.JBiload, JBOpcode.JBlload, JBOpcode.JBfload, JBOpcode.JBdload, + JBOpcode.JBaload, JBOpcode.JBistore, JBOpcode.JBlstore, JBOpcode.JBfstore, + JBOpcode.JBdstore, JBOpcode.JBastore, JBOpcode.JBret + ): + new_bytecode.append(opcode) + new_bytecode.append(bytecode[i + 1]) + i += 2 + elif opcode in (JBOpcode.JBiinc,): + new_bytecode.append(opcode) + new_bytecode.append(bytecode[i + 1]) + new_bytecode.append(bytecode[i + 2]) + i += 3 + elif opcode in (JBOpcode.JBtableswitch,): + new_bytecode.append(opcode) + padding = ((i + 1) % 4) + padding = padding if padding == 0 else (4 - padding) + for j in xrange(padding): + new_bytecode.append(0x0) + i += padding + 1 + default = struct.unpack('I', default) + new_bytecode += tmp + i += 4 + low = struct.unpack('i', low) + new_bytecode += tmp + i += 4 + high = struct.unpack('i', high) + new_bytecode += tmp + try: + for j in xrange(high - low + 1): + i += 4 + left = struct.unpack('I', left) + new_bytecode += tmp + except OverflowError as err: + raise err + i += 4 + elif opcode in (JBOpcode.JBlookupswitch,): + new_bytecode.append(opcode) + padding = ((i + 1) % 4) + padding = padding if padding == 0 else (4 - padding) + for j in xrange(padding): + new_bytecode.append(0x0) + i += padding + 1 + default = struct.unpack('I', default) + new_bytecode += tmp + i += 4 + n = struct.unpack('I', n) + new_bytecode += tmp + for j in xrange(n): + i += 4 + left = struct.unpack('I', left) + new_bytecode += tmp + i += 4 + right = struct.unpack('I', right) + new_bytecode += tmp + i += 4 + elif opcode in (JBOpcode.JBmultianewarray,): + new_bytecode.append(opcode) + index = struct.unpack('H', new_index + 1) + new_bytecode += tmp + new_bytecode.append(bytecode[i + 3]) + i += 4 + elif opcode in (JBOpcode.JBgotow,): + new_bytecode.append(opcode) + value = struct.unpack('I', value) + new_bytecode += tmp + i += 5 + else: + new_bytecode.append(opcode) + i += 1 + for index in new_cp_transform: + cp.apply_transform(index, new_cp_transform[index]) + return new_bytecode \ No newline at end of file diff --git a/src/Common.py b/src/Common.py new file mode 100644 index 0000000..0aaf7b9 --- /dev/null +++ b/src/Common.py @@ -0,0 +1,143 @@ +import os +import os.path +import errno +import StringIO +import bitstring + +class StreamCursor(object): + def __init__(self, stream, pos): + self._stream_ = stream + self._new_pos_ = pos + self._old_pos_ = None + + def __enter__(self): + self._old_pos_ = self._stream_.get() + if self._new_pos_ < 0 or self._new_pos_ > self._stream_.len: + raise EOFError + self._stream_.set(self._new_pos_) + + def __exit__(self, exc_type, exc_val, exc_tb): + self._stream_.set(self._old_pos_) + +class ReaderStream(object): + def __init__(self, obj): + if isinstance(obj, file): + self._file_object_ = obj + self._bit_stream_ = bitstring.BitStream(self._file_object_) + elif isinstance(obj, bitstring.BitArray): + self._bit_stream_ = bitstring.BitStream() + self._bit_stream_._append(obj) + + def get(self): + return self._bit_stream_.bytepos + + def set(self, pos): + self._bit_stream_.bytepos = pos + + def read_bytes(self, length): + return self._bit_stream_.read('bytes:{0}'.format(length)) + + def read_u8(self): + return self._bit_stream_.read('uintle:8') + + def read_u16(self): + return self._bit_stream_.read('uintle:16') + + def read_u32(self): + return self._bit_stream_.read('uintle:32') + + def read_i8(self): + return self._bit_stream_.read('intle:8') + + def read_i16(self): + return self._bit_stream_.read('intle:16') + + def read_i32(self): + return self._bit_stream_.read('intle:32') + + def read_string(self): + length = self.read_u16() + return self.read_bytes(length) + + def read_relative(self): + base = self.get() + ptr = self.read_i32() + return base + ptr + + def read_string_ref(self): + ptr = self.read_relative() + pos = self.get() + self.set(ptr) + value = self.read_string() + self.set(pos) + return value + + @property + def bytes(self): + return self._bit_stream_.bytes + + @property + def len(self): + return self._bit_stream_.length / 8 + + @property + def file_object(self): + return self._file_object_ + + @staticmethod + def bytes_to_stream(bytes): + return ReaderStream(bitstring.BitArray(bytes=bytes)) + +class WriterStream(object): + def __init__(self, file_object): + self._file_object_ = file_object + self._bit_stream_ = bitstring.BitStream() + + def write(self): + self._bit_stream_.tofile(self._file_object_) + + def write_raw_bytes(self, data): + return self._bit_stream_._append( + bitstring.BitArray(bytes=data) + ) + + def write_u8(self, value): + return self._bit_stream_._append( + bitstring.pack('uintbe:8', value) + ) + + def write_u16(self, value): + return self._bit_stream_._append( + bitstring.pack('uintbe:16', value) + ) + + def write_u32(self, value): + return self._bit_stream_._append( + bitstring.pack('uintbe:32', value) + ) + + def write_i8(self, value): + return self._bit_stream_._append( + bitstring.pack('intbe:8', value) + ) + + def write_i16(self, value): + return self._bit_stream_._append( + bitstring.pack('intbe:16', value) + ) + + def write_i32(self, value): + return self._bit_stream_._append( + bitstring.pack('intbe:32', value) + ) + +def enum(**enums): + return type('Enum', (), enums) + +def create_file_path(filepath): + if not os.path.exists(os.path.dirname(filepath)): + try: + os.makedirs(os.path.dirname(filepath)) + except OSError as exc: # Guard against race condition + if exc.errno != errno.EEXIST: + raise \ No newline at end of file diff --git a/src/ConstPool.py b/src/ConstPool.py new file mode 100644 index 0000000..3e36147 --- /dev/null +++ b/src/ConstPool.py @@ -0,0 +1,106 @@ +import struct +from Common import * + +CONST = enum( + Class = '\x07', + FieldRef = '\x09', + MethodRef = '\x0a', + InterfaceMethodRef = '\x0b', + String = '\x08', + Integer = '\x03', + Float = '\x04', + Long = '\x05', + Double = '\x06', + NameAndType = '\x0c', + Utf8 = '\x01' +) + +J9CONST = enum( + INT = 0, + STRING = 1, + CLASS = 2, + LONG = 3, + REF = 4 +) + +class ConstPool(object): + def __init__(self, romclass): + self.pool = [] + self.transform = {} + stack = [] + # self.pool.append([-1, None]) + for i, constant in enumerate(romclass.constant_pool): + if constant.type == J9CONST.INT: + index = len(self.pool) + self.pool.append([CONST.Integer, constant.value]) + self.transform[i] = {'new_index': index, 'type': CONST.Integer} + elif constant.type == J9CONST.LONG: + index = len(self.pool) + self.pool.append([CONST.Double, constant.value[::-1]]) + self.pool.append([-1, None]) + self.transform[i] = {'new_index': index, 'type': CONST.Double} + elif constant.type == J9CONST.STRING: + index = len(self.pool) + self.pool.append([CONST.String, '']) + stack.append((index, CONST.Utf8, struct.pack('>H', len(constant.value)) + constant.value)) + self.transform[i] = {'new_index': index, 'type': CONST.String} + elif constant.type == J9CONST.CLASS: + index = len(self.pool) + self.pool.append([CONST.Class, '']) + stack.append((index, CONST.Utf8, struct.pack('>H', len(constant.value)) + constant.value)) + self.transform[i] = {'new_index': index, 'type': CONST.Class} + elif constant.type == J9CONST.REF: + index = len(self.pool) + const_type = CONST.MethodRef if constant.descriptor.find('(') >= 0 else CONST.FieldRef + self.pool.append([const_type, '', '']) + stack.append((index, CONST.Class, struct.pack('>H', len(constant._class)) + constant._class)) + stack.append((index, CONST.NameAndType, struct.pack('>H', len(constant.name)) + constant.name, + struct.pack('>H', len(constant.descriptor)) + constant.descriptor)) + self.transform[i] = {'new_index': index, 'type': const_type} + for elem in stack: + cp_id = len(self.pool) + if elem[1] == CONST.Utf8: + self.pool.append([elem[1], elem[2]]) + if self.pool[elem[0]][1]: + self.pool[elem[0]][2] = struct.pack('>H', cp_id + 1) + else: + self.pool[elem[0]][1] = struct.pack('>H', cp_id + 1) + elif elem[1] == CONST.Class: + self.pool.append([elem[1], '']) + stack.append((cp_id, CONST.Utf8, elem[2])) + self.pool[elem[0]][1] = struct.pack('>H', cp_id + 1) + elif elem[1] == CONST.NameAndType: + self.pool.append([elem[1], '', '']) + stack.append((cp_id, CONST.Utf8, elem[2])) + stack.append((cp_id, CONST.Utf8, elem[3])) + self.pool[elem[0]][2] = struct.pack('>H', cp_id + 1) + + def add(self, type, value): + if type == CONST.Class: + index = len(self.pool) + self.pool.append([CONST.Utf8, struct.pack('>H', len(value)) + bytearray(value, 'utf8')]) + self.pool.append([CONST.Class, struct.pack('>H', index + 1)]) + return index + 2 + elif type == CONST.Utf8: + index = len(self.pool) + self.pool.append([CONST.Utf8, struct.pack('>H', len(value)) + bytearray(value, 'utf8')]) + return index + 1 + + def apply_transform(self, index, type): + self.pool[index][0] = type + + def check_transform(self, index, type=None): + return index in self.transform and (type and self.transform[index]['type'] == '\x06') + + def get_transform(self, index): + return self.transform[index] + + def write(self, stream): + stream.write_u16(len(self.pool) + 1) + for elem in self.pool: + if elem[0] == -1: + continue + stream.write_raw_bytes(elem[0]) + stream.write_raw_bytes(elem[1]) + if len(elem) > 2: + stream.write_raw_bytes(elem[2]) diff --git a/src/JXE.py b/src/JXE.py new file mode 100644 index 0000000..1984f34 --- /dev/null +++ b/src/JXE.py @@ -0,0 +1,279 @@ +import struct +from zipfile import ZipFile +from Common import * + +class J9ROMField(object): + def __init__(self, name, signature, access_flag): + super(J9ROMField, self).__init__() + self.name = name + self.signature = signature + self.access_flag = access_flag + + @staticmethod + def read(stream): + name = stream.read_string_ref() + signature = stream.read_string_ref() + access_flags = stream.read_u32() + if access_flags & 0x400000: + unknown1 = stream.read_u32() + if access_flags & 0x40000: + unknown2 = stream.read_u32() + if access_flags & 0x40000000: + unknown3 = stream.read_u32() + return J9ROMField(name, signature, access_flags) + +class J9ROMCatchException(object): + def __init__(self, start, end, handler, catch_type): + super(J9ROMCatchException, self).__init__() + self.start = start + self.end = end + self.handler = handler + self.catch_type = catch_type + + @staticmethod + def read(stream): + start = stream.read_u32() + end = stream.read_u32() + handler = stream.read_u32() + catch_type = stream.read_u32() + return J9ROMCatchException(start, end, handler, catch_type) + +class J9ROMThrowException(object): + def __init__(self, throw_type): + super(J9ROMThrowException, self).__init__() + self.throw_type = throw_type + + @staticmethod + def read(stream): + return J9ROMThrowException(stream.read_string_ref()) + +class J9ROMMethod(object): + def __init__(self, name, signature, modifier, max_stack, arg_count, temp_count, bytecode, catch_exceptions, throw_exceptions): + super(J9ROMMethod, self).__init__() + self.name = name + self.signature = signature + self.modifier = modifier + self.max_stack = max_stack + self.arg_count = arg_count + self.temp_count = temp_count + self.bytecode = bytecode + self.catch_exceptions = catch_exceptions + self.throw_exceptions = throw_exceptions + + @staticmethod + def read(stream): + name = stream.read_string_ref() + signature = stream.read_string_ref() + modifier = stream.read_u32() + use_bytecodesize_high = modifier & 0x00008000 + add_four1 = modifier & 0x02000000 + has_bytecode_extra = modifier & 0x00020000 + add_four2 = modifier & 0x00400000 + max_stack = stream.read_u16() + if modifier & 0x100: + arg_count = stream.read_u8() + temp_count = stream.read_u8() + stream.read_u8() + native_arg_count = stream.read_u8() + caught_exceptions = [] + thrown_exceptions = [] + print "Native method" + else: + bytecode_size_low = stream.read_u16() + bytecode_size_high = stream.read_u8() + arg_count = stream.read_u8() + temp_count = stream.read_u16() + bytecode_size = bytecode_size_low + if use_bytecodesize_high: + bytecode_size += bytecode_size_high << 16 + bytecode_size *= 4 + if add_four1: + bytecode_size += 4 + bytecode = stream.read_bytes(bytecode_size) + if has_bytecode_extra: + caught_exception_count = stream.read_u16() + thrown_exception_count = stream.read_u16() + caught_exceptions = [J9ROMCatchException.read(stream) for i in xrange(caught_exception_count)] + thrown_exceptions = [J9ROMThrowException.read(stream) for i in xrange(thrown_exception_count)] + else: + caught_exceptions = [] + thrown_exceptions = [] + if add_four2: + aot_addr = stream.read_u32() + return J9ROMMethod(name, signature, modifier, max_stack, arg_count, temp_count, bytecode, caught_exceptions, thrown_exceptions) + +class J9ROMInterface(object): + def __init__(self, name): + super(J9ROMInterface, self).__init__() + self.name = name + + @staticmethod + def read(stream): + name = stream.read_string_ref() + return J9ROMInterface(name) + +ConstType = enum( + INT = 0, + STRING = 1, + CLASS = 2, + LONG = 3, + REF = 4 +) + +class J9ROMConstant(object): + def __init__(self, type, value=None, _class=None, name=None, descriptor=None): + super(J9ROMConstant, self).__init__() + self.type = type + if type in (ConstType.INT, ConstType.STRING, ConstType.LONG): + self.value = value + elif type == ConstType.CLASS: + self.value = value + elif type == ConstType.REF: + self._class = _class + self.name = name + self.descriptor = descriptor + + @staticmethod + def read(stream, base): + pos = stream.get() + value = stream.read_u32() + type = stream.read_u32() + if type in (1, 2): + value = struct.unpack(' 0 else 0) + for exception in method.catch_exceptions + ], + 'attributes_count': 0, + 'attributes': [] + } + ] + } + ) + cp.write(stream) + stream.write_u16(romclass.access_flags & 0xffff) + stream.write_u16(class_name_id) + stream.write_u16(superclass_name_id) + stream.write_u16(len(interface_id_list)) + for elem in interface_id_list: + stream.write_u16(elem) + stream.write_u16(len(field_info_list)) + for field_info in field_info_list: + stream.write_u16(field_info['access_flags'] & 0xffff) + stream.write_u16(field_info['name_index']) + stream.write_u16(field_info['descriptor_index']) + stream.write_u16(field_info['attributes_count']) + if field_info['attributes_count']: + raise NotImplementedError() + stream.write_u16(len(method_info_list)) + for method_info in method_info_list: + stream.write_u16(method_info['access_flags'] & 0xffff) + stream.write_u16(method_info['name_index']) + stream.write_u16(method_info['descriptor_index']) + stream.write_u16(method_info['attributes_count']) + attribute = method_info['attributes'][0] + stream.write_u16(attribute['attribute_name_index']) + stream.write_u32(attribute['attribute_length']) + if (romclass.major, romclass.minor) < (45, 3): + stream.write_u8(attribute['max_stack']) + stream.write_u8(attribute['max_locals']) + stream.write_u16(attribute['code_length']) + else: + stream.write_u16(attribute['max_stack']) + stream.write_u16(attribute['max_locals']) + stream.write_u32(attribute['code_length']) + stream.write_raw_bytes(attribute['code']) + stream.write_u16(attribute['exception_table_length']) + for exception in attribute['exception_table']: + stream.write_u16(exception[0]) + stream.write_u16(exception[1]) + stream.write_u16(exception[2]) + stream.write_u16(exception[3]) + stream.write_u16(attribute['attributes_count']) + if attribute['attributes_count']: + raise NotImplementedError() + stream.write_u16(0) + +def create_class(romclass, jarfile): + class_name = romclass.class_name # .replace('/', '.') + class_file = '{0}.class'.format(class_name) + f = StringIO.StringIO() + stream = WriterStream(f) + dump_romclass(stream, romclass) + stream.write() + jarfile.writestr(class_file, f.getvalue()) + +def create_jar(jar_name, jxe, decompilation_check=True): + jarfile = zipfile.ZipFile(jar_name, 'w') + for romclass in jxe.image.classes: + create_class(romclass, jarfile) + +def process(jxe_name, jar_name): + with open(jxe_name, 'rb') as f: + stream = ReaderStream(f) + jxe = JXE.read(stream) + create_jar(jar_name, jxe) + +def main(): + jxe_name = sys.argv[1] + jar_name = sys.argv[2] + process(jxe_name, jar_name) + +if __name__ == '__main__': + main()