Use GEOS character set.

This commit is contained in:
2018-03-07 20:12:19 +00:00
parent 7f5c4f87c5
commit 8a67fffbd2
7 changed files with 33 additions and 28 deletions

View File

@@ -30,8 +30,8 @@
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x86</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Claunia.Encoding, Version=1.4.6634.5461, Culture=neutral, PublicKeyToken=null"> <Reference Include="Claunia.Encoding, Version=1.6.1.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\packages\Claunia.Encoding.1.5.0\lib\portable40-net40+sl5+win8+wp8\Claunia.Encoding.dll</HintPath> <HintPath>..\packages\Claunia.Encoding.1.6.1\lib\portable40-net40+sl5+win8+wp8\Claunia.Encoding.dll</HintPath>
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
</ItemGroup> </ItemGroup>

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="Claunia.Encoding" version="1.5.0" targetFramework="net461" /> <package id="Claunia.Encoding" version="1.6.1" targetFramework="net461" />
</packages> </packages>

View File

@@ -8,7 +8,7 @@
<Description>Description of exeinfogui</Description> <Description>Description of exeinfogui</Description>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Claunia.Encoding" Version="1.5.0" /> <PackageReference Include="Claunia.Encoding" Version="1.6.1" />
<PackageReference Include="Eto.Forms" Version="2.4.1" /> <PackageReference Include="Eto.Forms" Version="2.4.1" />
<PackageReference Include="Eto.Serialization.Xaml" Version="2.4.1" /> <PackageReference Include="Eto.Serialization.Xaml" Version="2.4.1" />
<PackageReference Include="System.ValueTuple" Version="4.4.0" /> <PackageReference Include="System.ValueTuple" Version="4.4.0" />

View File

@@ -28,6 +28,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Text;
namespace libexeinfo namespace libexeinfo
{ {
@@ -36,6 +37,7 @@ namespace libexeinfo
ApplicationHeader applicationHeader; ApplicationHeader applicationHeader;
ApplicationHeaderV2 applicationHeader2; ApplicationHeaderV2 applicationHeader2;
Export[] exports; Export[] exports;
Encoding geosEncoding = Claunia.Encoding.Encoding.GeosEncoding;
GeodeHeader header; GeodeHeader header;
GeodeHeaderV2 header2; GeodeHeaderV2 header2;
Import[] imports; Import[] imports;
@@ -82,7 +84,6 @@ namespace libexeinfo
public IEnumerable<string> Strings { get; private set; } public IEnumerable<string> Strings { get; private set; }
public IEnumerable<Segment> Segments { get; private set; } public IEnumerable<Segment> Segments { get; private set; }
// TODO: GEOS character set
void Initialize() void Initialize()
{ {
Recognized = false; Recognized = false;
@@ -104,9 +105,9 @@ namespace libexeinfo
List<string> strings = new List<string> List<string> strings = new List<string>
{ {
StringHandlers.CToString(isNewHeader ? header2.name : header.name), StringHandlers.CToString(isNewHeader ? header2.name : header.name, geosEncoding),
StringHandlers.CToString(isNewHeader ? header2.copyright : header.copyright), StringHandlers.CToString(isNewHeader ? header2.copyright : header.copyright, geosEncoding),
StringHandlers.CToString(isNewHeader ? header2.info : header.info) StringHandlers.CToString(isNewHeader ? header2.info : header.info, geosEncoding)
}; };
uint segmentBase = 0; uint segmentBase = 0;
@@ -121,7 +122,7 @@ namespace libexeinfo
imports = new Import[applicationHeader2.imports]; imports = new Import[applicationHeader2.imports];
exports = new Export[applicationHeader2.exports]; exports = new Export[applicationHeader2.exports];
segments = new SegmentDescriptor[applicationHeader2.segments]; segments = new SegmentDescriptor[applicationHeader2.segments];
strings.Add($"{StringHandlers.CToString(applicationHeader2.name).Trim()}.{StringHandlers.CToString(applicationHeader2.extension).Trim()}"); strings.Add($"{StringHandlers.CToString(applicationHeader2.name, geosEncoding).Trim()}.{StringHandlers.CToString(applicationHeader2.extension, geosEncoding).Trim()}");
} }
else else
{ {
@@ -132,7 +133,7 @@ namespace libexeinfo
imports = new Import[applicationHeader.imports]; imports = new Import[applicationHeader.imports];
exports = new Export[applicationHeader.exports]; exports = new Export[applicationHeader.exports];
segments = new SegmentDescriptor[applicationHeader.segments]; segments = new SegmentDescriptor[applicationHeader.segments];
strings.Add($"{StringHandlers.CToString(applicationHeader.name).Trim()}.{StringHandlers.CToString(applicationHeader.extension).Trim()}"); strings.Add($"{StringHandlers.CToString(applicationHeader.name, geosEncoding).Trim()}.{StringHandlers.CToString(applicationHeader.extension, geosEncoding).Trim()}");
} }
buffer = new byte[Marshal.SizeOf(typeof(Import))]; buffer = new byte[Marshal.SizeOf(typeof(Import))];
@@ -140,7 +141,7 @@ namespace libexeinfo
{ {
BaseStream.Read(buffer, 0, buffer.Length); BaseStream.Read(buffer, 0, buffer.Length);
imports[i] = BigEndianMarshal.ByteArrayToStructureLittleEndian<Import>(buffer); imports[i] = BigEndianMarshal.ByteArrayToStructureLittleEndian<Import>(buffer);
strings.Add(StringHandlers.CToString(imports[i].name).Trim()); strings.Add(StringHandlers.CToString(imports[i].name, geosEncoding).Trim());
} }
buffer = new byte[Marshal.SizeOf(typeof(Export))]; buffer = new byte[Marshal.SizeOf(typeof(Export))];

View File

@@ -43,39 +43,42 @@ namespace libexeinfo
sb.AppendFormat("\tAttributes: {0}", sb.AppendFormat("\tAttributes: {0}",
isNewHeader ? applicationHeader2.attributes : applicationHeader.attributes) isNewHeader ? applicationHeader2.attributes : applicationHeader.attributes)
.AppendLine(); .AppendLine();
sb.AppendFormat("\tName: {0}", StringHandlers.CToString(isNewHeader ? header2.name : header.name)) sb.AppendFormat("\tName: {0}",
StringHandlers.CToString(isNewHeader ? header2.name : header.name, geosEncoding))
.AppendLine(); .AppendLine();
sb.AppendFormat("\tInternal name: \"{0}.{1}\"", sb.AppendFormat("\tInternal name: \"{0}.{1}\"",
isNewHeader isNewHeader
? StringHandlers.CToString(applicationHeader2.name).Trim() ? StringHandlers.CToString(applicationHeader2.name, geosEncoding).Trim()
: StringHandlers.CToString(applicationHeader.name).Trim(), : StringHandlers.CToString(applicationHeader.name, geosEncoding).Trim(),
isNewHeader isNewHeader
? StringHandlers.CToString(applicationHeader2.extension).Trim() ? StringHandlers.CToString(applicationHeader2.extension, geosEncoding).Trim()
: StringHandlers.CToString(applicationHeader.extension).Trim()).AppendLine(); : StringHandlers.CToString(applicationHeader.extension, geosEncoding).Trim())
.AppendLine();
sb.AppendFormat("\tVersion: {0}", sb.AppendFormat("\tVersion: {0}",
isNewHeader isNewHeader
? $"{header2.release.major}.{header2.release.minor} {header2.release.change}-{header2.release.engineering}" ? $"{header2.release.major}.{header2.release.minor} {header2.release.change}-{header2.release.engineering}"
: $"{header.release.major}.{header.release.minor} {header.release.change}-{header.release.engineering}") : $"{header.release.major}.{header.release.minor} {header.release.change}-{header.release.engineering}")
.AppendLine(); .AppendLine();
sb.AppendFormat("\tCopyright string: {0}", sb.AppendFormat("\tCopyright string: {0}",
StringHandlers.CToString(isNewHeader ? header2.copyright : header.copyright)) StringHandlers.CToString(isNewHeader ? header2.copyright : header.copyright,
.AppendLine(); geosEncoding)).AppendLine();
sb.AppendFormat("\tInformational string: {0}", sb.AppendFormat("\tInformational string: {0}",
StringHandlers.CToString(isNewHeader ? header2.info : header.info)).AppendLine(); StringHandlers.CToString(isNewHeader ? header2.info : header.info, geosEncoding))
.AppendLine();
sb.AppendFormat("\tProtocol: {0}", sb.AppendFormat("\tProtocol: {0}",
isNewHeader isNewHeader
? $"{header2.protocol.major}.{header2.protocol.minor}" ? $"{header2.protocol.major}.{header2.protocol.minor}"
: $"{header.protocol.major}.{header.protocol.minor}").AppendLine(); : $"{header.protocol.major}.{header.protocol.minor}").AppendLine();
sb.AppendFormat("\tApplication token: \"{0}\" id {1}", sb.AppendFormat("\tApplication token: \"{0}\" id {1}",
isNewHeader isNewHeader
? StringHandlers.CToString(header2.application.str) ? StringHandlers.CToString(header2.application.str, geosEncoding)
: StringHandlers.CToString(header.creator.str), : StringHandlers.CToString(header.creator.str, geosEncoding),
isNewHeader ? header2.application.manufacturer : header.creator.manufacturer) isNewHeader ? header2.application.manufacturer : header.creator.manufacturer)
.AppendLine(); .AppendLine();
sb.AppendFormat("\tToken: \"{0}\" id {1}", sb.AppendFormat("\tToken: \"{0}\" id {1}",
isNewHeader isNewHeader
? StringHandlers.CToString(header2.token.str) ? StringHandlers.CToString(header2.token.str, geosEncoding)
: StringHandlers.CToString(header.token.str), : StringHandlers.CToString(header.token.str, geosEncoding),
isNewHeader ? header2.token.manufacturer : header.token.manufacturer).AppendLine(); isNewHeader ? header2.token.manufacturer : header.token.manufacturer).AppendLine();
sb.AppendFormat("\tSegments: {0}", sb.AppendFormat("\tSegments: {0}",
@@ -88,8 +91,9 @@ namespace libexeinfo
sb.AppendFormat("\t{0} imports:", imports.Length).AppendLine(); sb.AppendFormat("\t{0} imports:", imports.Length).AppendLine();
for(int i = 0; i < imports.Length; i++) for(int i = 0; i < imports.Length; i++)
sb.AppendFormat("\t\tImport \"{0}\", attributes {1}, protocol {2}.{3}", sb.AppendFormat("\t\tImport \"{0}\", attributes {1}, protocol {2}.{3}",
StringHandlers.CToString(imports[i].name).Trim(), imports[i].attributes, StringHandlers.CToString(imports[i].name, geosEncoding).Trim(),
imports[i].protocol.major, imports[i].protocol.minor).AppendLine(); imports[i].attributes, imports[i].protocol.major, imports[i].protocol.minor)
.AppendLine();
sb.AppendFormat("\t{0} exports:", exports.Length).AppendLine(); sb.AppendFormat("\t{0} exports:", exports.Length).AppendLine();
for(int i = 0; i < exports.Length; i++) for(int i = 0; i < exports.Length; i++)

View File

@@ -40,8 +40,8 @@
<ConsolePause>false</ConsolePause> <ConsolePause>false</ConsolePause>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Claunia.Encoding, Version=1.4.6634.5461, Culture=neutral, PublicKeyToken=null"> <Reference Include="Claunia.Encoding, Version=1.6.1.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\packages\Claunia.Encoding.1.5.0\lib\portable40-net40+sl5+win8+wp8\Claunia.Encoding.dll</HintPath> <HintPath>..\packages\Claunia.Encoding.1.6.1\lib\portable40-net40+sl5+win8+wp8\Claunia.Encoding.dll</HintPath>
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.ValueTuple, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51"> <Reference Include="System.ValueTuple, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51">

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="Claunia.Encoding" version="1.5.0" targetFramework="net46" /> <package id="Claunia.Encoding" version="1.6.1" targetFramework="net46" />
<package id="NuGet.Build.Packaging" version="0.1.276" targetFramework="net46" developmentDependency="true" /> <package id="NuGet.Build.Packaging" version="0.1.276" targetFramework="net46" developmentDependency="true" />
<package id="System.ValueTuple" version="4.4.0" targetFramework="net46" /> <package id="System.ValueTuple" version="4.4.0" targetFramework="net46" />
</packages> </packages>