Вопрос

У меня есть небольшая утилита, которая была изначально написана в VS2005.

Мне нужно сделать небольшое изменение, но исходный код для одной из библиотек был где-то потерян.

Существует ли бесплатный или недорогой инструмент для обратного инжиниринга DLL обратно в код C ++.

Это было полезно?

Решение

Декомпилятор Hex-Rays - отличный инструмент, но код будет довольно сложным читать, и вам придется потратить много времени, чтобы перепроектировать всю DLL.

Другие советы

Возможно, вы также захотите взглянуть на OllyDbg , представляющий собой 32-разрядный анализатор уровня отладки на ассемблере. Он используется для анализа двоичного кода в сценариях, где у вас нет исходного кода. Это легкий отладчик. OllyDbg является условно-бесплатным программным обеспечением, поэтому вы можете загрузить & amp; используйте это бесплатно .. !!

Посетите домашнюю страницу OllyDbg здесь

PS . В свое время взломщики использовали SoftICE из NuMega для отладки в исполняемый файл & amp; захватить снимок на значениях регистров. SoftICE был продвинутым отладчиком. Это был определенно любимый инструмент для взломщиков. Я не знаю о нынешнем статусе продукта. Сайт NuMega не имел информации об этом. Возможно, я упустил это, но не смог найти. Я рекомендую вам приобрести устаревшую версию (4.0x) SoftICE & amp; примените исправление WindowsXP для SoftICE. Работа с SoftICE - это что-то вроде «опыта».

Подробнее: Реверсирование: секреты обратного инжиниринга от Эльдад Эйлам

Я не знаю точную ситуацию, в которой вы находитесь, и какова функциональность DLL для вашего приложения. Но я бы сказал, что в большинстве случаев было бы лучше переписать отсутствующую DLL на основе известных функций.

Это особенно верно, если у вас есть некоторая документация для этого.

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

Если ваше небольшое изменение состоит в том, чтобы отредактировать некоторый текст или пропустить некоторые подпрограммы, вы можете использовать шестнадцатеричный редактор или дизассемблер, но вы не сможете увидеть исходный код C ++, и даже если вы найдете инструмент, который превращает DLL обратно в код, все имена переменных исчезнут, и это будет большой беспорядок.

Немного в зависимости от вашей ситуации, я бы оставил устаревшую / бинарную DLL как есть и написал бы DLL-оболочку, которая изменит и / или добавит любое дополнительное поведение.

Идея состоит в том, чтобы объединить старую функциональность в новую DLL, которая импортирует старую.

Вы должны сделать это так же, как взломщики игр и приложений: используйте дизассемблер и взломайте код ассемблера.

Вы не можете превратить мясо обратно в животное, и даже если бы вы могли, у вас было бы мертвое животное: P

Если это было сделано в .NET, то почему бы не использовать dotNet Reflector.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top