EXE -> Исходный код
Diskretor
Новичок
8/15/2006, 3:51:38 AM
Я здесь новичок. А здесь публика умная, поэтому вопрос:
У меня есть программа (EXE), которая при запуске выполняет непонятные действия. Я хочу узнать, что она делает.
Вопрос: как превратить этот ЕХЕ в исходный код - в язык команд программирования. И вообще какие есть способы декомпиляции (так это вроде называется) и где про это все можно прочитать?
Естественно на каком языке написана программа я не знаю, потому что она не моя.
У меня есть программа (EXE), которая при запуске выполняет непонятные действия. Я хочу узнать, что она делает.
Вопрос: как превратить этот ЕХЕ в исходный код - в язык команд программирования. И вообще какие есть способы декомпиляции (так это вроде называется) и где про это все можно прочитать?
Естественно на каком языке написана программа я не знаю, потому что она не моя.
xTriplex
Мастер
8/15/2006, 4:22:45 AM
(Diskretor @ 14.08.2006 - время: 23:51) Я здесь новичок. А здесь публика умная, поэтому вопрос:
У меня есть программа (EXE), которая при запуске выполняет непонятные действия. Я хочу узнать, что она делает.
Вопрос: как превратить этот ЕХЕ в исходный код - в язык команд программирования. И вообще какие есть способы декомпиляции (так это вроде называется) и где про это все можно прочитать?
Естественно на каком языке написана программа я не знаю, потому что она не моя.
Для дезассемблирования есть специальный софт - ка ни странно но он так и называеться - дизассемблер...
Узнать язык на которм написан софт - не особо трудно...например в инфе о файле, либо по конструкции exe (там в 95 % есть отлиительные черты языка, или прям так и написано, что (с) Borland Delphi или еще кто), либо софт есть специальный...
Есть специфические декомпиляторы - типа возвращают исходный код...но они сводяться к тому же...просто конструкция оригинальная останеться, а все процедуры, функции и т.д. всеравно будут на ассемблере, по другому никак...
У меня есть программа (EXE), которая при запуске выполняет непонятные действия. Я хочу узнать, что она делает.
Вопрос: как превратить этот ЕХЕ в исходный код - в язык команд программирования. И вообще какие есть способы декомпиляции (так это вроде называется) и где про это все можно прочитать?
Естественно на каком языке написана программа я не знаю, потому что она не моя.
Для дезассемблирования есть специальный софт - ка ни странно но он так и называеться - дизассемблер...
Узнать язык на которм написан софт - не особо трудно...например в инфе о файле, либо по конструкции exe (там в 95 % есть отлиительные черты языка, или прям так и написано, что (с) Borland Delphi или еще кто), либо софт есть специальный...
Есть специфические декомпиляторы - типа возвращают исходный код...но они сводяться к тому же...просто конструкция оригинальная останеться, а все процедуры, функции и т.д. всеравно будут на ассемблере, по другому никак...
mvf23
Профессионал
8/15/2006, 5:32:51 AM
Для дезассемблирования есть специальный софт - ка ни странно но он так и называеться - дизассемблер...
Для сведения - самый лучший на сегодня дизассемблер называется IDA Pro.
Однако чтение программы на ассемблере - дело довольно тяжелое, требующее довольно хорошего представления принципов работы процессора, а также знания Ассемблера для PC. (например только процедура для открытия и чтения файла на ассемблере может иметь длину 500-1000 строк, а вся программа - может иметь длину в несколько миллионов строк)
То есть для этого требуется довольно хороший уровень теоретической подготовки. Либо ну ООООЧЕНЬ большое желание.
Декомпилировать, то есть преобразовать программу к исходникам на языке высокого уровня очень сложно и в большинстве случаев невозможно. Есть небольшие исключения, но и они не позволяют вернуть программу к нормально читаемому виду.
программа (EXE), которая при запуске выполняет непонятные действия. Я хочу узнать, что она делает.
Возможно необходимости в дизассемблировании нет.
В большинстве случаев бывает достаточно проследить за её действиями с помощью программы-монитора. В частности есть программа, которая называется FileMon - она отслеживает все обращения к файлам (открытие/чтение запись и т.д.). И RegMon - она соответственно отслеживает все обращения к реестру. TDIMon - для мониторинга пакетов TCP/IP. Все три программы - бесплатны и найти их можно на https://www.sysinternals.com/
Для сведения - самый лучший на сегодня дизассемблер называется IDA Pro.
Однако чтение программы на ассемблере - дело довольно тяжелое, требующее довольно хорошего представления принципов работы процессора, а также знания Ассемблера для PC. (например только процедура для открытия и чтения файла на ассемблере может иметь длину 500-1000 строк, а вся программа - может иметь длину в несколько миллионов строк)
То есть для этого требуется довольно хороший уровень теоретической подготовки. Либо ну ООООЧЕНЬ большое желание.
Декомпилировать, то есть преобразовать программу к исходникам на языке высокого уровня очень сложно и в большинстве случаев невозможно. Есть небольшие исключения, но и они не позволяют вернуть программу к нормально читаемому виду.
программа (EXE), которая при запуске выполняет непонятные действия. Я хочу узнать, что она делает.
Возможно необходимости в дизассемблировании нет.
В большинстве случаев бывает достаточно проследить за её действиями с помощью программы-монитора. В частности есть программа, которая называется FileMon - она отслеживает все обращения к файлам (открытие/чтение запись и т.д.). И RegMon - она соответственно отслеживает все обращения к реестру. TDIMon - для мониторинга пакетов TCP/IP. Все три программы - бесплатны и найти их можно на https://www.sysinternals.com/
Diskretor
Новичок
8/16/2006, 9:20:10 PM
Да, насчет пункта 2. mvf23 я согласен, что можно использовать утилиты для отслеживания действий ЕХЕ, к тому же у меня есть RegShooter, но они мне не подходят, потому что:
Я не хочу курочить ВИНДОВС этим EXE, так как знаю немного, что он делает опред.вред.(Spy-ware, AD-ware не уверен, KAV - пока его не определяет)
--->> Если бы мне посоветовали такую утилиту, чтобы нею узнать что ЕХЕ делает, не запуская его (такая есть?) или чтобы после него не было последствий - другое дело.
Просто хочу сам разобраться.
--->>И основной второй вопрос:
В этом ЕХЕ уверен на 100% есть много путей к реестру ВИНДОВСА. (то что мне нужно)
Допустим я использую декомпилятор превращающий ЕХЕ в ассемблер или в язык высокогоо уровня. Если я дезассемблирую ЕХЕ, то смогу ли я увидить эти пути к реестру в нормальном виде или они будут зашифрованы машинным кодом ассемблера? - ну если кто знает.
Р.S. Знаю только Pascal и Basic, по остальному - куча книг и немного желания:)
Я не хочу курочить ВИНДОВС этим EXE, так как знаю немного, что он делает опред.вред.(Spy-ware, AD-ware не уверен, KAV - пока его не определяет)
--->> Если бы мне посоветовали такую утилиту, чтобы нею узнать что ЕХЕ делает, не запуская его (такая есть?) или чтобы после него не было последствий - другое дело.
Просто хочу сам разобраться.
--->>И основной второй вопрос:
В этом ЕХЕ уверен на 100% есть много путей к реестру ВИНДОВСА. (то что мне нужно)
Допустим я использую декомпилятор превращающий ЕХЕ в ассемблер или в язык высокогоо уровня. Если я дезассемблирую ЕХЕ, то смогу ли я увидить эти пути к реестру в нормальном виде или они будут зашифрованы машинным кодом ассемблера? - ну если кто знает.
Р.S. Знаю только Pascal и Basic, по остальному - куча книг и немного желания:)
Unknown_Identifier
Мастер
8/17/2006, 4:40:31 PM
Я не хочу курочить ВИНДОВС этим EXE, так как знаю немного, что он делает опред.вред.(Spy-ware, AD-ware не уверен, KAV - пока его не определяет)
Для этой цели можно запустить виртуальную машину и в ней дебагить программу. Даже если запорет виртуалку - так не жалко :)
Допустим я использую декомпилятор превращающий ЕХЕ в ассемблер или в язык высокогоо уровня. Если я дезассемблирую ЕХЕ, то смогу ли я увидить эти пути к реестру в нормальном виде или они будут зашифрованы машинным кодом ассемблера? - ну если кто знает.
Если строки не зашифрованы в самой программе, то ты их определенно увидишь. Более того, для этого не нужно и дизассемблировать - они прекрасно видны в самом EXE-файле :)
Обычно строковые константы хранятся в:
- секции ресурсов (ресурсные строки), обычно в конце exe
- непосредственно рядом с кодом процедуры, в которой используются (inline-константы)
- в сегменте преинициализированных данных (глобальные константы), обычно тоже в конце exe, но перед ресурсами
P.S. Интересующая тебя строка вполне может и составляться в процессе работы из нескольких.
Для этой цели можно запустить виртуальную машину и в ней дебагить программу. Даже если запорет виртуалку - так не жалко :)
Допустим я использую декомпилятор превращающий ЕХЕ в ассемблер или в язык высокогоо уровня. Если я дезассемблирую ЕХЕ, то смогу ли я увидить эти пути к реестру в нормальном виде или они будут зашифрованы машинным кодом ассемблера? - ну если кто знает.
Если строки не зашифрованы в самой программе, то ты их определенно увидишь. Более того, для этого не нужно и дизассемблировать - они прекрасно видны в самом EXE-файле :)
Обычно строковые константы хранятся в:
- секции ресурсов (ресурсные строки), обычно в конце exe
- непосредственно рядом с кодом процедуры, в которой используются (inline-константы)
- в сегменте преинициализированных данных (глобальные константы), обычно тоже в конце exe, но перед ресурсами
P.S. Интересующая тебя строка вполне может и составляться в процессе работы из нескольких.
mvf23
Профессионал
8/17/2006, 11:28:16 PM
Небольшая добавка.
Если речь идет о потенциальном вирусе, то скорее всего EXE-файл упакован с помощью специальных утилит (т.е. он сначала распаковывается в памяти а потом уже начинает выполняться). В этом случае внутри файла обычно ничего интесного найти невозможно (т.е. файл - это по сути архив). Ну самый известный "упаковщик EXE" - это наверное UPX, хотя есть ещё десятки других. В этом случае, перед тем как дизассемблировать или пытаться найти что либо просто просмортом файла, нужно его сначала распаковть.
Есть специальный софт для определения, чем был упакован EXE файл, на чем написан и т.п. Сейчас назыание точно вспомнить не могу, по-моему что-то вроде "PE Info", или "PE ID" - что-то в этом духе. Поищи в гугле.
Если речь идет о потенциальном вирусе, то скорее всего EXE-файл упакован с помощью специальных утилит (т.е. он сначала распаковывается в памяти а потом уже начинает выполняться). В этом случае внутри файла обычно ничего интесного найти невозможно (т.е. файл - это по сути архив). Ну самый известный "упаковщик EXE" - это наверное UPX, хотя есть ещё десятки других. В этом случае, перед тем как дизассемблировать или пытаться найти что либо просто просмортом файла, нужно его сначала распаковть.
Есть специальный софт для определения, чем был упакован EXE файл, на чем написан и т.п. Сейчас назыание точно вспомнить не могу, по-моему что-то вроде "PE Info", или "PE ID" - что-то в этом духе. Поищи в гугле.
_Azis_
Новичок
8/31/2006, 4:51:16 AM
Для декомпиляции можно использовать IDA PRO, лучше версия 4.7 или позже, там есть фишка частично восстановить код в C ( а не только ассемблер)
Пути реестра скорей всего будут видны.
Если файл упакован - определяешь чем упакован и распаковываешь его
Пути реестра скорей всего будут видны.
Если файл упакован - определяешь чем упакован и распаковываешь его
c0d3r
Интересующийся
9/13/2006, 10:12:05 PM
лучший декомпилятор delphi, да ещё и с исходниками - DeDe лежит на wasm.ru