Здравствуйте! Меня очень интересует вопрос, как можно определить язык программы, если она уже откомпилирована?
Ответ
Это, на самом деле, дело не из легких, поверьте! С супер точностью определить ничего не получится, так как языки могут быть разные, поддерживаемые, скажем одной средой программирования( 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
Комментариев нет:
Отправить комментарий