Автор вопроса: Neco | Web-сайт:neco.pisem.net | ICQ: 247906854
Здрасте.
Не раз уже обсуждалась тема декомпиляции, но решил поднять её ещё раз.
Все говорят, что декомпелировать VB'шный код практически невозможно. Всмысле невозможно восстановить VB'шный исходник. Вытекает вопрос: А исходник написанный на каком языке (кроме асма) можно восстановить?
Сишный там или дельфовый?
Мона?
Или "низя-а-а-а-а"?
Заранее спасибо за ответ.
P.S. и задаю ещё один вопрос - более насущный: как переименовать файл?
Можно восстаночить все... это зависит от желания...
Говорят что VB код плохо отлаживать/дазасемблировать, только из-за того что мусора там много, и за место привычных всем АПИ, по которым, кстати, очень удобно ориентироваться, там стоят никому (кроме программеров VB) не известные __Redim, _vbaClose, vbaLockVar, и тому подобная чушь...
Там даже все АПИ вызываемые программой, вызывается через одно место, называемое msvbvmХ0.dll ))
А про постоянные ErrorHandle'еры, там просто ходят легенды, что ни действие, то проверка на ошибку, на оверфлоу какой-то
Дельфи, зараза, компилит много чище код, ну по-крайней мере в той степеи, что разорбраться что именно делает программа в данном месте, вполне можно...
VC пошел и того дальше... Если не смотреть что в качестве счетчиков частенько используется не ECX, а, скажем, EAX, а так же там, как и во всех языках высокого уровня, совсем не берегут регистры Т.е. используют их где только попало, и не рационально, то из далека, можно даже предположить что этот код писал неумелый программер на ассемблере ) хотя навряд-ли...
АСМовый код, по сравнению со всем остальным, разбирать одно удовольствие Мусора - ноль... хотя это зависит от программера
Теоретически можно даже откомпилировать дизасемблированный листинг... но это только теоретически... прийдется по-любому что-то подправить...
В общем вывод такой, исходник получить не возможно, но понять что именно происходит, алгоритм - вполне реально!
После того как поймешь, пиши свое ))
Декомпилировать прогу на VB в первозданный исходник невозможно в принципе. Можно только создать похожий(и то есть шанс логического несовпадения).
Сейчас скажу почему. Знаешь почему дизассемблеры называются именно "дизассемблеры", а не например "декомпиляторы ассемблера"?
Потому что ассемблер работает с фиксированным набором комманд микропроцессора. И как бы ты на нём не извращался, всё равно код операции будет переведён в правильную мнемонику(так в АСМ называется синтаксис языка).
А БЕЙСИК - это искусственный (абстрактный) язык программирования. И если в Ассемблере одна команда равна одной команде микропроцессора, то в БЕЙСИКЕ все команды - это набор из нескольких микропроцессорных команд. Если бы программа состояла из одной команды VB, тогда было бы конечно всё просто. Но когда они начинают пересекаться, вот тогда сложность декомпиляции начинает рости.
А вообще, я думаю декомпилятор VB написать в принципе можно. Написал же я компилятор
Вот только желания нет. Вот если бы кто спонсировал это дело, тогда конечно другое дело