Форум программистов, компьютерный форум CyberForum.ru

Возможна ли декомпиляция исходника? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти UTF-16 строку в бинарном файле http://www.cyberforum.ru/cpp-beginners/thread1216591.html
Здравствуйте, Есть вот такая процедура для поиска и замены строк в бинарном файле. Применяю ее на обычном PE-файле. Проблема в том, что строки она не находит, хотя аналогичный вариант с narrow char работает прекрасно. void scrambleWide(const char *filename, const char key) { std::wfstream ifs(filename, ios::binary|ios::out|ios::in); if(!ifs.is_open()) {
C++ Перегрузка оператора << Как вот в таком классе перегрузить оператор <<? #ifndef MATRIXX_H #define MATRIXX_H #include <iostream> using namespace std; template<typename T> http://www.cyberforum.ru/cpp-beginners/thread1216582.html
Написать шаблонную функцию, принимающую три параметра и возвращающую их среднее арифметическое как float C++
Функция f6, которая принимает три аргумента определенного типа (int, double или/ char) и возвращает среднее арифметическое типа float. Используйте шаблон функции. Функция main вызывает f6 трижды – для int, double и char, а затем выводит результат работы соответствующих функций.
Создание консоли из приложения C++
Необходимо создать консоль из приложения. Используем CreateConsole с параметром DETACHED_PROCESS. По идее должна распределяться консоль внутри второго потока, но этого не происходит. AlloocConsole возвращает false. Вопрос в чем может быть дело? Первый поток: #include <windows.h> #include <iostream> int main() { char lpszAppName = "C:\\temp2.exe"; STARTUPINFO si; ...
C++ Определить индексы максимального и минимального элементов массива http://www.cyberforum.ru/cpp-beginners/thread1216529.html
написать программу которая определяет индексы максимального и минимального элементов одномерного массива натуральных чисел размером N. Генерацию N случайных натуральных чисел определение индексов максимального и минимального элементов массива оформить в виде отдельных функций. ребят помощь нужна срочная так как сижу на экзамене :) язык C++
C++ Создать и напечатать бинарное дерево целых чисел. Удалить узлы, содержащие четные числа Помогите пожалуйста с этой задачкой. Не шарю я деревья. подробнее

Показать сообщение отдельно
DrOffset
6460 / 3834 / 885
Регистрация: 30.01.2014
Сообщений: 6,629
25.06.2014, 13:44     Возможна ли декомпиляция исходника?
Цитата Сообщение от parka242 Посмотреть сообщение
Просто знаю, что с c# код хорошо получают (т.е там все понятно без ассемблера), могут ли сделать это в с++
Так же просто как в С# не получится. Принципы сборки программ отличаются. С# код компилируется в код на языке MSIL\CIL, при выполнении этот код (байт-код) интерпретируется виртуальной машиной .NET CLR. Существенные отличия в том, что байт-код содержит всю необходимую информацию (т.е. обладает определенной избыточностью), что позволяет без потерь (в автоматизированном режиме и даже в ручном режиме, при определенной сноровке) восстановить оригинальный исходный текст. Результат же компиляции С++, машинный код, никакой избыточности не содержит, более того, очень часто оптимизатор компилятора осуществляет некоторые трансформации для ускорения или сокращению размера. Без знания механизмов этих трансформаций применительно к конкретному компилятору восстановить исходник практически нереально.
Проще говоря, если сложить все факторы вместе и предположить, что твоей программой будет заниматься человек, который:
1) Отлично знает ассемблер для целевой платформы;
2) Отлично знает механизмы оптимизаций в современных компиляторах и умеет раскручивать оптимизированный ассемблерный код;
3) Знает С++ и представляет во что превращается тот или иной код на С++ и какие еще дополнительные операции неявно будут исполнены;
4) Обладает свободным временем и мотивацией изучать твою программу;
так вот, такой человек, после большого количества времени, проведенного в исследовании твоей программы, сможет в 99% случаев только заново написать исходный код, которые делает тоже самое, что и твой. Т.е. это не будет декомпиляцией в полном смысле этого слова. Это будет большая исследовательская работа + написанный собственноручно код, использующий данные этого исследования, пересказ.

Что же касается взлома, раньше ходила такая шутка, про русских shareware-разработчиков, мол "90% кода программы занимает защита от взлома и только 10% полезная функциональность".
Я тебе скажу так, если захотят взломать программу - взломают, и никакие обфускаторы, криптозащиты, генерация кода в рантайме и т.п. приему не спасут. Просто это на какое-то время усложнит жизнь людям с перечисленными выше качествами.
 
Текущее время: 05:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru