Ошибка, которую вы описываете, может быть вызвана несколькими причинами. Одна из вероятных причин - неправильная замена байтов в файле. Пожалуйста, убедитесь, что переменные hexStringToReplace и hexStringReplacement имеют одинаковую длину в шестнадцатеричном формате. Они должны состоять из пар шестнадцатеричных символов.
В вашем коде я заметил, что hexStringToReplace имеет длину 308 символов, а hexStringReplacement имеет длину 512 символов. Обратите внимание, что замена должна иметь такую же длину, как и оригинальная строка.
Вот исправленный код, в котором оба значения имеют одинаковую длину:
csharp
using System;
using
System.IO ;
namespace CoolBSAdBlocker
{
internal class Inject
{
static void Main(string[] args)
{
string filePath = @"D:\BlueStacks\Client\Bluestacks.exe";
string hexStringToReplace = "1B300A009A00000080000011140A282F00000A72D52E0070188D140000012516286502000AA225177254560170A2289300000A286602000A0B0728A40D00060B0728C00D00060B0728A50D00061416282001000A16171616722D080070284504000A0C726A56017007289500000A286300000A728A56017008289500000A286300000A0828EF02000A0ADE180D72B4560170096F2A00000A289500000A281501000ADE00062A000001100000000002007E80001817000001";
string hexStringReplacement = "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
ReplaceHexStringInFile(filePath, hexStringToReplace, hexStringReplacement);
}
static void ReplaceHexStringInFile(string filePath, string hexStringToReplace, string hexStringReplacement)
{
byte[] fileBytes = File.ReadAllBytes(filePath);
string fileHex = BitConverter.ToString(fileBytes).Replace("-", "");
int index = fileHex.IndexOf(hexStringToReplace);
if (index != -1)
{
string newFileHex = fileHex.Substring(0, index) + hexStringReplacement + fileHex.Substring(index + hexStringToReplace.Length);
byte[] newFileBytes = new byte[newFileHex.Length / 2];
for (int i = 0; i < newFileHex.Length; i += 2)
{
newFileBytes[i / 2] = Convert.ToByte(newFileHex.Substring(i, 2), 16);
}
File.WriteAllBytes(filePath, newFileBytes);
Console.WriteLine("Реклама успешно вырезана!");
}
else
{
Console.WriteLine("Не найден файл - Bluestacks.exe");
}
}
}
}
Exception Precessing Message 0x0000005 - Unexpected parameters