Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Назад от финиша к исходникам... Добавлено: 18.07.04 23:26  

Автор вопроса:  Neco | Web-сайт: neco.pisem.net | ICQ: 247906854 
Здрасте.
Не раз уже обсуждалась тема декомпиляции, но решил поднять её ещё раз.
Все говорят, что декомпелировать VB'шный код практически невозможно. Всмысле невозможно восстановить VB'шный исходник. Вытекает вопрос: А исходник написанный на каком языке (кроме асма) можно восстановить?
Сишный там или дельфовый?
Мона?
Или "низя-а-а-а-а"?
Заранее спасибо за ответ.
P.S. и задаю ещё один вопрос - более насущный: как переименовать файл?

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 19.07.04 00:19
Можно восстаночить все... это зависит от желания...
Говорят что VB код плохо отлаживать/дазасемблировать, только из-за того что мусора там много, и за место привычных всем АПИ, по которым, кстати, очень удобно ориентироваться, там стоят никому (кроме программеров VB) не известные __Redim, _vbaClose, vbaLockVar, и тому подобная чушь...

Там даже все АПИ вызываемые программой, вызывается через одно место, называемое msvbvmХ0.dll :)))

А про постоянные ErrorHandle'еры, там просто ходят легенды, что ни действие, то проверка на ошибку, на оверфлоу какой-то ;)

Дельфи, зараза, компилит много чище код, ну по-крайней мере в той степеи, что разорбраться что именно делает программа в данном месте, вполне можно...

VC пошел и того дальше... Если не смотреть что в качестве счетчиков частенько используется не ECX, а, скажем, EAX, а так же там, как и во всех языках высокого уровня, совсем не берегут регистры :) Т.е. используют их где только попало, и не рационально, то из далека, можно даже предположить что этот код писал неумелый программер на ассемблере :)) хотя навряд-ли...

АСМовый код, по сравнению со всем остальным, разбирать одно удовольствие :) Мусора - ноль... хотя это зависит от программера :)
Теоретически можно даже откомпилировать дизасемблированный листинг... но это только теоретически... прийдется по-любому что-то подправить...

В общем вывод такой, исходник получить не возможно, но понять что именно происходит, алгоритм - вполне реально!
После того как поймешь, пиши свое :)))

Ответить

Номер ответа: 2
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #2
Добавлено: 19.07.04 12:03
 Декомпилировать прогу на VB в первозданный исходник невозможно в принципе. Можно только создать похожий(и то есть шанс логического несовпадения).
 Сейчас скажу почему. Знаешь почему дизассемблеры называются именно "дизассемблеры", а не например "декомпиляторы ассемблера"?
 Потому что ассемблер работает с фиксированным набором комманд микропроцессора. И как бы ты на нём не извращался, всё равно код операции будет переведён в правильную мнемонику(так в АСМ называется синтаксис языка).
 А БЕЙСИК - это искусственный (абстрактный) язык программирования. И если в Ассемблере одна команда равна одной команде микропроцессора, то в БЕЙСИКЕ все команды - это набор из нескольких микропроцессорных команд. Если бы программа состояла из одной команды VB, тогда было бы конечно всё просто. Но когда они начинают пересекаться, вот тогда сложность декомпиляции начинает рости.

 А вообще, я думаю декомпилятор VB написать в принципе можно. Написал же я компилятор :)
 Вот только желания нет. Вот если бы кто спонсировал это дело, тогда конечно другое дело :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам