Страницы

Поиск по вопросам

воскресенье, 14 апреля 2019 г.

Как определить язык программирования?

Здравствуйте! Меня очень интересует вопрос, как можно определить язык программы, если она уже откомпилирована?


Ответ

Это, на самом деле, дело не из легких, поверьте! С супер точностью определить ничего не получится, так как языки могут быть разные, поддерживаемые, скажем одной средой программирования( VS, например, в которой поддерживается разработка на свыше 10 языках), а та, в свою очередь, добавляет сходную последовательность asm-секций в машинный код любого приложения, написанного в этой среде. Поэтому, скажем, с точностью( и то не всегда 100%-ой! ) можно определить среду разработки. Делается это, естественно, под дезассемблером. Лучший на мой взгляд( и где я, кстати, чаше всего провожу отладку ) - это OllyDBG. Под ним очень легко и быстро можно разобрать почти любую софтину( за исключением упакованой, обфусцированной и т.д ). Так, VS, например, добавляет в ассемблерный код несколько секций, порядок которых специфичен для данной среды. Последовательность похожа на эту( только пример! ), насколько я помню: .686 .model flat, c option casemap :none
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
.data
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
.code
MyFunc PROC uses ecx edi, X: DWORD, Y:DWORD ; TODO
ret MyFunc ENDP

Комментариев нет:

Отправить комментарий