Показать исходный код Delphi и C ++ - PullRequest
0 голосов
/ 15 июля 2010

Как посмотреть исходный код исполняемого файла, скомпилированного в Delphi или C ++?

Пожалуйста, помогите мне.

После редактирования:

У меня есть программа.Когда я запускаю эту программу, она показывает диалоговое окно и запрашивает пароль.Этот пароль сохраняется в исходном коде.Я хочу взять этот пароль быстро и легко.

Ответы [ 6 ]

12 голосов
/ 15 июля 2010

Вы не можете.

Огромное количество информации выбрасывается, когда компилятор сокращает читаемый человеком исходный текст до машинно-исполняемого кода.Локальные переменные не нуждаются в именах в машинном коде, например, они просто регистрируют биты в коде операции инструкции.

Именно поэтому отладка скомпилированного исполняемого файла для поэтапного прохода через исходные исходные файлы может только построчносделать это, если у вас есть символы отладки компилятора, которые идут вместе с исполняемым файлом.

Существуют утилиты, которые пытаются преобразовать машинный код в исходный код, но результат менее читабелен для людей, чем исходный машинный код, вмое мнение.Сгенерированные машиной имена функций, сгенерированные машиной локальные переменные и аргументы, и много раз утилита должна угадать точные типы данных аргументов и локальных переменных.(является ли это arg со знаком int или без знака int? Трудно сказать, когда это просто слот стека или машинный регистр)

Компиляция в промежуточное представление, как это делается в Java и .NET, обеспечивает гораздо большеобратимость, потому что типы и имена символов большей части исходного кода сохраняются.Например, Reflector может генерировать исходный код C #, который очень близок к исходному написанному человеком исходному коду.

2 голосов
/ 15 июля 2010

Вы не можете.Компилятор берет исходный код и превращает его в машинные инструкции, не оставляя «следа» исходного исходного кода.

Есть программы, называемые декомпиляторами, но они просто автоматизируют обратное проектирование, они могут 'на самом деле нет доступа к исходному коду, потому что его давно нет.

1 голос
/ 15 июля 2010

Как посмотреть исходный код исполнительного файла, скомпилированного с помощью Delphi или C ++?

Вы не можете этого сделать, поскольку исходный код не существует в скомпилированной программе Delphi / C ++.

У меня есть программа. Когда я запускаю эту программу, показываю диалог и спрашиваю пароль. Этот пароль сохранен в исходном коде. Я хочу быстро и легко принять этот пароль.

Пытается что-то взломать, да?
Вполне возможно, что пароль не сохраняется в исходном коде. Функция хеширования может использоваться для пароля, чтобы проверить, действителен ли он без сохранения пароля в исходном коде.Даже если вы найдете хеш, получить пароль будет нелегко.

Вы можете получить список ассемблера из программы, используя дизассемблер (Ida Pro, OllyDBG или аналогичный инструмент).И вы можете отлаживать свою программу даже без исходного кода, хотя вы увидите чистую сборку.AFAIK, «декомпиляторы» существуют, но я никогда не использовал ни одного из них, и сомневаюсь, что они будут полезны для кода C ++ / Delphi (тот, который компилируется в собственное приложение).

Есть несколько простых приемов, которые позволяют взломать программу и обойти проверку пароля (если выполнены некоторые условия, автор программы не был в безопасности, защита проста и т. Д.), Но я не уверенесли это разрешено в теме обсуждения на stackoverflow.

В любом случае, если вы заинтересованы в реверс-инжиниринге для юридических целей, вы можете попробовать книгу под названием «Реверс: Секреты обратного инжиниринга».

1 голос
/ 15 июля 2010

с помощью дизассемблера или декомпилятора. Вы никогда не сможете получить исходный код из двоичного файла. Эта информация потеряна.

0 голосов
/ 15 июля 2010

Во-первых, пароль не сохраняется в исходном коде. Процесс компиляции только односторонний; готовый продукт не изменит своего источника. (Или его двоичный файл, в этом отношении, по крайней мере, в большинстве случаев.) Скорее всего, пароль где-то сохраняется в файле данных. А если автор программы вообще компетентен, пароль каким-то образом хешируется или шифруется. Декомпиляция программы вам мало поможет.

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

0 голосов
/ 15 июля 2010

Когда вы говорите «исполнительный», вы имеете в виду «исполняемый файл»? Если это так, декомпиляция только даст вам сборку. Некоторые декомпиляторы пытаются превратить сборку в более читаемую форму, но нет общего способа получить исходный код из exe, если вы на самом деле не скомпилируете исходный код в файл.

...