public async Task ScanFile(string name, string saveToFolder)
{
if (File.Exists(name))
{
FileName = name;
if (GetDetails())
{
if (RelocPos != 0 && RelocSize != 0)
{
if (Verbose > 1)
WriteLine($"processing [{name}]");
var sb = new StringBuilder(Path.GetFileName(name));
sb.Append("-");
sb.Append(ImageBase.ToString("X"));
sb.Append("-");
sb.Append(TimeStamp.ToString("X"));
sb.Append(".reloc");
var outFile = Path.Combine(saveToFolder, sb.ToString());
if (File.Exists(outFile) && !OverWrite)
{
if (Verbose > 0)
{
WriteLine($"{outFile} exists, skipping due to no over write setting.");
return;
}
}
//var readBuffer = GetBuffAsync().Result;
using (FileStream stream = new FileStream(outFile,
FileMode.CreateNew, FileAccess.Write, FileShare.None, (int)RelocSize, true))
await stream.WriteAsync(GetBuffAsync().Result, 0, (int)RelocSize);
NewCnt++;
if (Verbose > 0)
WriteLine($"extracted {name} relocation data into {outFile} size {RelocSize}");
return;
}
}
else
Debug.WriteLine($"Unable to find file: {FileName}");
}
return;
}