Вопрос Пытаюсь изменить хекс программы с помощью кода на c#

Начинающий
Статус
Оффлайн
Регистрация
29 Июл 2022
Сообщения
101
Реакции[?]
28
Поинты[?]
29K
Пытался реализовать программу которая меняет определённые байты как хекс-редакторы.


Код:
using System;

using System.Collections.Generic;

using System.Linq;

using System.Net.NetworkInformation;

using System.Text;

using System.Threading.Tasks;

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 = "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";



            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");

            }

Программа запускается и успешно изменяет байты - как я и планировал. Но после этой операции программа ломается и при попытке захода в exeшник выскакивает такое окно: Exception Precessing Message 0x0000005 - Unexpected parameters. Через обычный хекс-редактор такое не случается.
1685803977030.png
Буду рад помощи.
 
Последнее редактирование:
Забаненный
Статус
Оффлайн
Регистрация
6 Янв 2021
Сообщения
95
Реакции[?]
31
Поинты[?]
5K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Возможно ты изменяешь байты которые нельзя менять, или в программе стоят проверки на целостность программы.
 
Участник
Статус
Оффлайн
Регистрация
23 Апр 2022
Сообщения
695
Реакции[?]
328
Поинты[?]
12K
Пытался реализовать программу которая меняет определённые байты как хекс-редакторы.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.NetworkInformation;
using System.Text;
using System.Threading.Tasks;
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 = "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";

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");
}
}
}
}


Программа запускается и успешно изменяет байты - как я и планировал. Но после этой операции программа ломается и при попытке захода в exeшник выскакивает такое окно: Exception Precessing Message 0x0000005 - Unexpected parameters. Через обычный хекс-редактор такое не случается.
Посмотреть вложение 249557
Буду рад помощи.
Лень читать весь этот код, но зачем ты заменяешь на 0 а не на 0x90?Или ты не шелл заменяешь?
 
Начинающий
Статус
Оффлайн
Регистрация
29 Июл 2022
Сообщения
101
Реакции[?]
28
Поинты[?]
29K
Лень читать весь этот код, но зачем ты заменяешь на 0 а не на 0x90?Или ты не шелл заменяешь?
я заменял обычный хекс, который заменяют в хекс редакторах. Исё. Я решил проблему давно. Надо было паттен сократить
Возможно ты изменяешь байты которые нельзя менять, или в программе стоят проверки на целостность программы.
У меня слишком длинный паттерн был, и нулей на изменение было больше. Теперь всё норм
 
Пользователь
Статус
Оффлайн
Регистрация
18 Фев 2022
Сообщения
584
Реакции[?]
99
Поинты[?]
38K
Используй форматирование кода в теме, читать неудобно
Screenshot_20230606_234425_Samsung Internet.jpg
 
Сверху Снизу