Цитата(Baser @ Mar 10 2018, 19:03)

Как раз таки, если программа написана на ассме, то восстановить исходный текст гораздо проще. Был опыт дизассемблирования небольшого бутлодера - вполне себе процесс понятно идет. А вот дизассемблировать программу после современного оптимизирующего компилятора Си (если Си++, то еще круче) размером 600К, я бы не стал ни за какие деньги. Ну, разве что только если оплата почасовая, а не сдельная

Хмм... видимо Вы сами не сильно много писали на асме и не видели, как на нём может быть написано.

Опытный человек пишет (и оптимизирует) гораздо лучше любого самого оптимизирующего компилятора. И разобраться в таком высокооптимальном коде будет, имхо, гораздо сложнее, чем в результатах работы любого компилятора. Когда ты хорошо знаешь процессор, то можешь такие финты в алгоритме программы сделать, которые компилятору даже и не снились. И разобраться стороннему человеку будет в них очень сложно.
А компилятор поступает стандартно - одинаковые соглашения вызова, стандартные способы оптимизации и т.п. - более менее всё повторяется во всех функциях - имхо гораздо проще разобраться. Так как компилятор не может по своему усмотрению оптимизировать
алгоритм работы программы, только код. А человек - может, и может такое завернуть в целях оптимизации, что мало не покажется.
Конечно я не говорю про декомпиляцию до уровня исходного кода на языке, на котором писался исходник, а только до асм-исходника. Но вроде ТС и не говорил ничего до получения исходного кода на языке, на котором была написана программа. Так как он даже не указал какой язык его интересует.
Как можно предположить из исходного сообщения (опять как всегда включаем экстрасенсорные способности), его интересует только исходный код на любом языке, который после компиляции его в прошивку даст результат аналогичный (по функционированию) оригиналу.
PS: А может там исходник вообще был написан на бейсике и не оптимизирован никак. Помню когда в стародавние времена компилил исходник написанный на каком-то бейсике, то результат компиляции был просто - последовательностью вызова ограниченного набора фиксированных готовых функций с передачей им аргументов. Т.е. - каждый оператор бейсика - это готовая функция в библиотеке, принимающая набор аргументов по указателям. Называлось такое насколько помню: "шитый код". И декомпилировать такое - плёвое дело.
Да и размер выходного образа после любого высокоуровневого компилятора как правило больше, чем после ассемблера (менее плотный код). Так что 600КБ после ассемблера - это совсем не то, что 600КБ после си.