Move readVariableLengthInteger() to DeobUtils

This commit is contained in:
de4dot 2012-02-05 18:46:14 +01:00
parent 0b43c77fdb
commit 029c049bf6
2 changed files with 15 additions and 15 deletions

View File

@ -189,10 +189,10 @@ namespace de4dot.code.deobfuscators.CodeVeil {
fileDataReader.BaseStream.Position = codeOffset;
if (fileDataReader.ReadByte() != 0x2A)
continue; // Not a RET
int methodsDataOffset = readVariableLengthInteger(fileDataReader);
int methodsDataOffset = DeobUtils.readVariableLengthInteger(fileDataReader);
methodsDataReader.BaseStream.Position = methodsDataOffset;
dm.mhCodeSize = (uint)readVariableLengthInteger(methodsDataReader);
dm.mhCodeSize = (uint)DeobUtils.readVariableLengthInteger(methodsDataReader);
dm.code = methodsDataReader.ReadBytes((int)dm.mhCodeSize);
if ((dm.mhFlags & 8) != 0)
dm.extraSections = readExtraSections(methodsDataReader);
@ -265,7 +265,7 @@ namespace de4dot.code.deobfuscators.CodeVeil {
continue;
reader.BaseStream.Position = section.pointerToRawData + relOffs;
int size = readVariableLengthInteger(reader);
int size = DeobUtils.readVariableLengthInteger(reader);
int endOffset = relOffs + size;
if (endOffset < relOffs || endOffset > section.sizeOfRawData)
continue;
@ -276,18 +276,6 @@ namespace de4dot.code.deobfuscators.CodeVeil {
return null;
}
static int readVariableLengthInteger(BinaryReader reader) {
byte b = reader.ReadByte();
if ((b & 0x80) == 0)
return b;
if ((b & 0x40) == 0)
return (((int)b & 0x3F) << 8) + reader.ReadByte();
return (((int)b & 0x3F) << 24) +
((int)reader.ReadByte() << 16) +
((int)reader.ReadByte() << 8) +
reader.ReadByte();
}
static int findSig(byte[] fileData, int offset, byte[] sig) {
for (int i = offset; i < fileData.Length - sig.Length + 1; i++) {
if (fileData[i] != sig[0])

View File

@ -129,5 +129,17 @@ namespace de4dot.code.deobfuscators {
}
return null;
}
public static int readVariableLengthInteger(BinaryReader reader) {
byte b = reader.ReadByte();
if ((b & 0x80) == 0)
return b;
if ((b & 0x40) == 0)
return (((int)b & 0x3F) << 8) + reader.ReadByte();
return (((int)b & 0x3F) << 24) +
((int)reader.ReadByte() << 16) +
((int)reader.ReadByte() << 8) +
reader.ReadByte();
}
}
}