XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Iron
Листовой
offline
Опыт: 24,427
Активность:
Dragoon Ну ты и загнул.
Цитата:
Твое утверждение лишь показывает незнание данного языка.

А кто и на чем mdlvis делает ?
Старый 30.04.2006, 01:05
Алексей
Где кошачья мята?!
offline
Опыт: 26,303
Активность:
В том-то и дело, что Delphi использует множество СТАНДАРТНЫХ библиотек. Они, будучи влинкованы в exe-файл, тривиально "вычисляются" шаблонным поиском (соответственно, всегда можно установить, какие функции вызываются). И почему ты думаешь, что декомпиляторов до сих пор не придумано? Наоборот, их существует множество - практически под все языки программирования. Google выдаёт несколько тыс. ссылок. Конечно, 90% этих декомпиляторов не выдерживают никакой критики, но есть и вполне работоспособные. Для Delphi'шных программ наилучший - DeDe, он позволяет декомпилировать программы, созданные в Delphi до 6 включительно. Причём они потом нормально компилируются. Более того: он успешно декомпилирует даже упакованные (и шифрованные) программы, т.к. работает не с exe, а с дампом памяти процесса.
Основная проблема в том, что при компиляции теряются комментарии (естественно!), имена переменных и пользовательских процедур. Соответственно, все имена генерируются декомпилятором автоматически (приобретая вид вроде M0041455).
Цитата:
Это называет ДИЗАССЕМБЛИРОВАНИЕ. Декомпилирование - процесс получения исходных кодов... А ты выкинул лишь слегка видоизмененный листинг
Вероятно, ты не знаешь ассемблер - иначе увидел бы, что это Си, а не asm-листинг.
Старый 30.04.2006, 15:19
Dragoon

offline
Опыт: 544
Активность:
Я же говорил, " слегка видоизмененный листинг ", а не дизассмеблированный кусок проги....
Цитата:
Вероятно, ты не знаешь ассемблер - иначе увидел бы, что это Си, а не asm-листинг.

Скорее я не знаю СИ, так как не знал, что в нем возможны подобные структуры. Просто есть такой ассемблер - MASM. Это что то типа среднеуровневого ассемблера, там существуют упрщения вызовов функций (invoke bla-bla-bla) и другие упрощения, да думаю ты и сам все это знаешь. Я и подумал, что тот листинг, что ты выкинул - для подобного ассемблера... Слишком эти "исходные коды" не соответствуют тому, что привычно видеть в сорсах высокоуровневых языков.

P.S. http://xgm.guru/forum/showthread.php?t=3783 После этой статьи готов десять раз забрать слова о том, что ты не знаешь дельфи... Как минимум работу с процессами и памятью ты знаешь лучше меня....

Dragoon добавил:
Насчет декомпилирования - добыл DeDe и скормил ему программку, которая выводит MessageBox с всемирно известным текстом... Результатом работы декомпилятора ... стал лишь листинг , содержащий ТОЛЬКО ассемблерное представление всех команд. Т.е. как такового исходного кода не было получено, а было произведено дизассэмблирование с последующими подгонками под язык.
Старый 30.04.2006, 22:05
Кет

offline
Опыт: 111,209
Активность:
Dragoon, ты еще с ним подерись:)
важно не то, что именно сделал Алексей, а то, как это можно юзать...
Старый 30.04.2006, 22:29
NETRAT

offline
Опыт: 83,712
Активность:
Да, как сказал бы мой старый друг, Алексей - "опасный тип"... Хотя с учетом того, про кого он ранее это говорил, Алексей из них самый "опасный"
Старый 30.04.2006, 22:54
Aspid

offline
Опыт: 8,361
Активность:
//оффтоп
блин еще один программер. офигеть Т_Т
Алексей сенкс, правда для меня это темный лес с маааленькими просветами.
Старый 01.05.2006, 00:15
Алексей
Где кошачья мята?!
offline
Опыт: 26,303
Активность:
Точнее, результат, выданный DeDe, вероятно, выглядел примерно так:
Код:
procedure TfrmAdd.Button2Click(Sender : TObject);
begin
(*

* Reference to field TfrmAdd.ModalResult : TModalResult
|
0049C388   C7803402000002000000   mov     dword ptr [eax+$0234], $00000002

* Reference to: forms.TCustomForm.Hide(TCustomForm);
|
0049C392   E809D6FAFF             call    004499A0
0049C397   C3                     ret

*)
end;
Это не исходники, это листинг, предназначенный для "скармливания" IDA. В том же пакете DeDe в папке "DelDA Package" лежит файл exe2dpr, который полностью восстанавливает исходники dpr-файла (+все формы и "скелет" pas-файлов форм). Его нужно использовать первым для получения части исходников. Далее, для получения содержимого pas-файлов используется спец. плагин, который тоже идёт в комплекте с DeDe и активируется с помощью команды "Options->Preferences->Plug-Ins" (или что-то вроде этого - точно не помню, давно с этой прогой не работал). Причём это НЕ БУДЕТ автоматическое декомпилирование. Это всего лишь инструмент, позволяющий обработать код. Открывается такое симпатичное окошко, где нужно выделять части кода, соответствующие структурным элементам программы (циклам, условиям и т.д.), после чего DeDe их распознаёт. Чтобы найти их в листинге, требуется некоторое знание asm'а (и, конечно, нужно тщательно читать документацию по DeDe).
Я применял DeDe единственный раз примерно полгода назад (когда утерял исходники MdlVis - они сдохли вместе с винтом). Потратил примерно 2 недели, декомпилировав в итоге не более четверти всего кода. После чего решил, что оно того не стоит - и занялся восстановлением винта (откуда выцарапал-таки всё нужное).
Старый 01.05.2006, 11:34
Dragoon

offline
Опыт: 544
Активность:
А ведь движок вара намного сложнее. Два месяца для декомпилирования это однозначно маловато, 5мб асмовских листингов превращать в удобоваримый код - это лихо.
Спасибо за указание на DeDe, попробую с ним разобраться, все-таки он сумел восстановить ресурсные файлы почти целиком, да и асмовский код намного легче редактировать, когда он упорядочен и откомментрирован :)

Отредактировано Dragoon, 01.05.2006 в 12:18.
Старый 01.05.2006, 11:47
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 17:56.