Модификация исполняемых PE файлов

mamura

Green Team
20.01.2023
17
1
BIT
0
Привет всем, может есть у кого статейки как можно модифицировать exe до "уникального кода" впрочем по другому сказать до существенных изменений в коде без потери работоспособности изначальной программы)
Знаю тут есть несколько статей по работе с PE но они все про написасание чего-то с 0 или внедоение своего исполняемого кода !ВО что-то!
Мне бы статеки про запутывание, уникализацию, смену точек взода в программу .и.тп
Есть спецы тут?
манула могу и купить )
 

B13

Заблокирован
01.01.2020
412
55
BIT
134
В гугл введите "обфурскация кода/обфурскация", статей на эту тему думаю будт не малое количество.
 
  • Нравится
Реакции: mamura

B13

Заблокирован
01.01.2020
412
55
BIT
134
Он бинарник хочет морфить, а не сорцы.

По теме - декомпилировать бинарь и морфить сорцы :)
Немного не понял. возможно я ошибаюсь, а если так, то поправьте.

разве .exe и .bin это не разные исполняемые файлы?

И при чем здесь сорцы?
 

Mark Klintov

Grey Team
23.07.2022
151
297
BIT
25
На каком языке написан твой PE-файл? Для C# используй NET Reactor и не придется заморачиваться. Прогу можешь найти в ресурсах. Если нужно что-то свое, то можно написать простой обфускатор. Ниже я оставил пример такого обфускатора на шарпе. Запускаешь программу через консоль и указываешь путь до файла после названия скрипта.

Пример: start build.exe C:\Users\Professional\Documents\primer_1.exe

C#:
using System;
using System.IO;
using System.Reflection;
using System.Text;

namespace Obfuscator
{
    class Program
    {
        static void Main(string[] args)
        {
            // Получаем путь до исполняемого файла
            string path = args[0];

            // Читаем содержимое файла
            byte[] bytes = File.ReadAllBytes(path);

            // Производим обфускацию
            bytes = Obfuscate(bytes);

            // Записываем измененный файл
            File.WriteAllBytes(path, bytes);
        }

        static byte[] Obfuscate(byte[] bytes)
        {
            // Производим замену названий переменных
            bytes = ReplaceVariables(bytes);

            // Добавляем "мусорный" код
            bytes = AddJunkCode(bytes);

            // Шифруем конфиденциальную информацию
            bytes = Encrypt(bytes);

            return bytes;
        }

        static byte[] ReplaceVariables(byte[] bytes)
        {
            // Здесь происходит замена названий переменных на более сложные и непонятные
            return bytes;
        }

        static byte[] AddJunkCode(byte[] bytes)
        {
            // Здесь добавляется "мусорный" код
            return bytes;
        }

        static byte[] Encrypt(byte[] bytes)
        {
            // Здесь происходит шифрование конфиденциальной информации
            return bytes;
        }
    }
}
 
Последнее редактирование:
  • Нравится
Реакции: mamura

mamura

Green Team
20.01.2023
17
1
BIT
0
На каком языке написан твой PE-файл? Для C# используй NET Reactor и не придется заморачиваться. Прогу можешь найти в ресурсах. Если нужно что-то свое, то можно написать простой обфускатор. Ниже я оставил пример такого обфускатора на шарпе. Запускаешь программу через консоль и указываешь путь до файла после названия скрипта.

Пример: start build.exe C:\Users\Professional\Documents\primer_1.exe

C#:
using System;
using System.IO;
using System.Reflection;
using System.Text;

namespace Obfuscator
{
    class Program
    {
        static void Main(string[] args)
        {
            // Получаем путь до исполняемого файла
            string path = args[0];

            // Читаем содержимое файла
            byte[] bytes = File.ReadAllBytes(path);

            // Производим обфускацию
            bytes = Obfuscate(bytes);

            // Записываем измененный файл
            File.WriteAllBytes(path, bytes);
        }

        static byte[] Obfuscate(byte[] bytes)
        {
            // Производим замену названий переменных
            bytes = ReplaceVariables(bytes);

            // Добавляем "мусорный" код
            bytes = AddJunkCode(bytes);

            // Шифруем конфиденциальную информацию
            bytes = Encrypt(bytes);

            return bytes;
        }

        static byte[] ReplaceVariables(byte[] bytes)
        {
            // Здесь происходит замена названий переменных на более сложные и непонятные
            return bytes;
        }

        static byte[] AddJunkCode(byte[] bytes)
        {
            // Здесь добавляется "мусорный" код
            return bytes;
        }

        static byte[] Encrypt(byte[] bytes)
        {
            // Здесь происходит шифрование конфиденциальной информации
            return bytes;
        }
    }
}
Да, на C# но абфускация кода это не серьезно)
Хотелось бы освоить виртуализацию кода или переустановки произвольно взятой команды JMP|CALL на тело кода, изменение точек входа да и вообще измнение поведения кода.
 

mamura

Green Team
20.01.2023
17
1
BIT
0
Вся сложность в том что статей по работе с PE (чужим софтом например) с гулькин нос, что куда и откуда.. и зачем )) ответов нет)
На угад тыкать как вы понимаете максимально не рационально ) какая-то больше, обратный инжиниринг.. все такое, придеться книги пендосовские покупать видимо
 

Mark Klintov

Grey Team
23.07.2022
151
297
BIT
25
Да, на C# но абфускация кода это не серьезно)
Ты либо не знаешь, что тебе нужно, либо не до конца освоил тему. Смотри, виртуализация кода это процесс трансформации исходного кода программы в другой код, который трудно понять или изменить. В этой виртуализации есть несколько методов (к примеру обфускация, шифрование и тд). Когда ты обфусцируешь код, то твоя EP (точка входа) меняется, и чтобы начать читать код, реверсеру следует отыскать OEP (оригинальная точка входа) и обфускаторы этот процесс затрудняют
 
  • Нравится
Реакции: mamura

Mark Klintov

Grey Team
23.07.2022
151
297
BIT
25
Привет всем, может есть у кого статейки как можно модифицировать exe до "уникального кода" впрочем по другому сказать до существенных изменений в коде без потери работоспособности изначальной программы)
Одной статьей здесь не обойтись, могу по рекомендовать книгу Ивана Склярова "Изучаем Ассемблер за 7 дней", без этого языка в реверс как в темный лес идти. Также с журнала Xakep можешь почитать курс
 

B13

Заблокирован
01.01.2020
412
55
BIT
134
Вся сложность в том что статей по работе с PE (чужим софтом например) с гулькин нос, что куда и откуда.. и зачем )) ответов нет)
На угад тыкать как вы понимаете максимально не рационально ) какая-то больше, обратный инжиниринг.. все такое, придеться книги пендосовские покупать видимо
ревес, говорите... Ну я на изучение ассемблера потратил больше года наверное, а сам реверс до сих пор изучаю, так что я соглашусь с коллегой, в том что вы видимо не понимаете, что вы сами хотите.
 
  • Нравится
Реакции: mamura и Mark Klintov

B13

Заблокирован
01.01.2020
412
55
BIT
134
Одной статьей здесь не обойтись, могу по рекомендовать книгу Ивана Склярова "Изучаем Ассемблер за 7 дней", без этого языка в реверс как в темный лес идти. Также с журнала Xakep можешь почитать курс
лучше тогда серию статей. Алмазный фонд хакер, там как раз по малвари полный сборник.
 
  • Нравится
Реакции: Mark Klintov

mamura

Green Team
20.01.2023
17
1
BIT
0
Ты либо не знаешь, что тебе нужно, либо не до конца освоил тему. Смотри, виртуализация кода это процесс трансформации исходного кода программы в другой код, который трудно понять или изменить. В этой виртуализации есть несколько методов (к примеру обфускация, шифрование и тд). Когда ты обфусцируешь код, то твоя EP (точка входа) меняется, и чтобы начать читать код, реверсеру следует отыскать OEP (оригинальная точка входа) и обфускаторы этот процесс затрудняют
На сколько я понял из книг то виртуализация это файл который работает внутри виртуальной среды, преобразование происходит внутри исполняемого файла.
а обфускация и шифрование это отдельные методы которые не связаны с виртуализции как таковой (возможно я не понимаю самого метода виртуализации из нутри так сказать)
+ речь шла о работе с уже готовым exe без знаний исходников.
И да, у меня есть цель но нет понимания точного в какую сторону рыть) а задача это уникализировать код, как можно сильнее и сложнее.
 

mamura

Green Team
20.01.2023
17
1
BIT
0
ревес, говорите... Ну я на изучение ассемблера потратил больше года наверное, а сам реверс до сих пор изучаю, так что я соглашусь с коллегой, в том что вы видимо не понимаете, что вы сами хотите.
Скореее всего) так много информации и так много разных подходов... а какой наиболее подходящий это вопрос)
 

mamura

Green Team
20.01.2023
17
1
BIT
0
Можно и так, главное знать где искать
Из того что я понял для моей ситуации подойдут такие методы как: Hex редактирование/Редактирование ресурсов/Обфускация кода/Упаковка или сжатие/Перезапись двоичный файлов/Виртуализация...
что думаешь? верное напрвление или вообще не туда я рою? с исходниками то попроще будет.... но.
 
  • Нравится
Реакции: Mark Klintov

B13

Заблокирован
01.01.2020
412
55
BIT
134
Из того что я понял для моей ситуации подойдут такие методы как: Hex редактирование/Редактирование ресурсов/Обфускация кода/Упаковка или сжатие/Перезапись двоичный файлов/Виртуализация...
что думаешь? верное напрвление или вообще не туда я рою? с исходниками то попроще будет.... но.
редактирование ресурсов, что вы понимаете под этими словами?

Обфурскация кода - изменение самого кода без затрагивания работоспособности самого кода программы.
Упаковка или сжатие - уменьшение "веса программы".

Это мне все понятно, не понятно зачем вам перезапись двоичных файлов и снова вопрос, что вы под этим подразумеваете?

Как по мне самый просто путь во названию вашего запроса это все таки обфкрскация кода + упаковка (если же она критична).
 

mamura

Green Team
20.01.2023
17
1
BIT
0
редактирование ресурсов, что вы понимаете под этими словами?

Обфурскация кода - изменение самого кода без затрагивания работоспособности самого кода программы.
Упаковка или сжатие - уменьшение "веса программы".

Это мне все понятно, не понятно зачем вам перезапись двоичных файлов и снова вопрос, что вы под этим подразумеваете?

Как по мне самый просто путь во названию вашего запроса это все таки обфкрскация кода + упаковка (если же она критична).
Редактирование ресурсов это значки, изображения, строки встроенные в исполняемый файл.
Перезапись двоичных файлов это это такие задачи как инстументирование кода, оптимизация и преобразование.
вообще я еще знаю наверное с пяток решений, но врятле о них кто-то тут знает на форуме)
 

B13

Заблокирован
01.01.2020
412
55
BIT
134
Редактирование ресурсов это значки, изображения, строки встроенные в исполняемый файл.
Перезапись двоичных файлов это это такие задачи как инстументирование кода, оптимизация и преобразование.
вообще я еще знаю наверное с пяток решений, но врятле о них кто-то тут знает на форуме)
я вам про Фаму, вы мне про Ерему. Ну да ладно.

Ну так если вы такой знающий, что знаете с пяток вариантов, которые на всем форуме ни кто не знает, та зачем задавать вопрос на таком фореме? (Вопрс риторический).
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!