Форум программистов, компьютерный форум, киберфорум
C/C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C/C++ Наибольший общий делитель трёх чисел в длинной арифметике https://www.cyberforum.ru/ c-cpp/ thread3056299.html
Всем привет. Столкнулся с проблемной задачей: Найти наибольший общий делитель трех чисел m, n и p. (m, n, p >=MaxInt). Умножать, вычитать и складывать длинные числа не сложно, а вот с поиском НОД возникли проблемы. (формулу поиска НОД среди обычных чисел знаю, интересует именно реализация в длинной арифметике)
C/C++ AES алгоритм
Здравствуйте! Нашел код, частично разобрался, но не могу понять как исправить ошибку - error: cannot bind non-const lvalue reference of type ‘word&’ {aka ‘std::bitset<32>&’} to an rvalue of type ‘word’ {aka ‘std::bitset<32>’} 278 | w = w ^ SubWord(RotWord(temp)) ^ Rcon; Помогите пожалуйста. #include <iostream> #include <bitset> #include <string> using namespace std; ...
C/C++ Как можно использовать переменные класса в static функции этого класса Пишу окно на glfw, хочу чтобы при изменении размеров сразу перерисовывалась чёрная часть окна. Для этого использую glfwSetFramebufferSizeCallback в который передаю ResizeRenderCallback Но суть в том, чтобы дублировать туда отрисовки с основного цикла А они работать не будут нормально т.к. мы находимся в static функции. Единственный вариант который думал это static_cast по типу: int... https://www.cyberforum.ru/ c-cpp/ thread3054800.html C/C++ Написать програму которая котрая за числами А и В котрые отгадают числа котрые спрятаные https://**********/a/OtLfaYu https://www.cyberforum.ru/ c-cpp/ thread3054418.html
Ffmpeg в 2022 году C/C++
Что можно актуального почитать по ffmpeg? Уже весь интернет облазил, везде устаревшие примеры, а своими силами разобраться на что устаревшие функции поменяли не могу. Есть ли смысл найти старые версии ffmpeg и работать на них? Возможно у кого-то есть работающий ffmpeg плеер, хотелось бы поковырять.
C/C++ Help with C++ 1я задача: Написать программу вычисления суммы n членов ряда: -(x+1)^2 + ((x+1)^4)/2 + ((x+1)^6)/3 2я задача: Вычислить значение выражения √(2a+sin⁡(3a))/|3.56x| https://www.cyberforum.ru/ c-cpp/ thread3054172.html
C/C++ сложность с заданием про строки нужно сделать проверку в которой первое число в квадрате равно второму и третьему но при попытке написать код мне выдает ошибку Ошибка C4996 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. вот код: #include <iostream> #include <string> using namespace std; int main() {... https://www.cyberforum.ru/ c-cpp/ thread3053366.html C/C++ Сделать блок-схему задачки)
Дана матрица Z размера n*m. Преобразовать матрицу следующим образом: положительные значения увеличить в 2 раза, к отрицательным прибавить последний элемент последнего столбца. Элементы равные нулю, оставить без изменений.
C/C++ Баг Point Cloud Library https://www.cyberforum.ru/ c-cpp/ thread3050479.html
Привет всем! Пытаюсь с помощью Point Cloud Library выровнять два облака точек в UE4. Но если запустить тестовый алгоритм: pcl::PointCloud<pcl::PointXYZ>::Ptr* cloud_in = nullptr; pcl::PointCloud<pcl::PointXYZ>::Ptr* cloud_out = nullptr; pcl::IterativeClosestPoint<pcl::PointXYZ, pcl::PointXYZ> icp; pcl::PointCloud<pcl::PointXYZ> Final; int testICP() { if (cloud_in == nullptr)...
C/C++ Как скачать Windows.h и добавить в проект? https://www.cyberforum.ru/ c-cpp/ thread3047579.html
Здравствуйте, сразу извиняюсь за глупый вопрос (новичек еще просто). Как скачать Windows.h и добавить в проект?
C/C++ So/pyd файлы как это сделать
Вопрос в том что я хочу сделать файл написанный на с/с++ для Питона и у меня не удаётся это сделать
C/C++ Воспроизвести это задание в код Regex Длина L нечетная, то удаляется символ, стоящий посередине строки https://www.cyberforum.ru/ c-cpp/ thread3044364.html
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
14.12.2022, 13:31 0

Можно ли декомпилировать исполняемый файл? - C/C++ - Ответ 16635861

14.12.2022, 13:31. Показов 3542. Ответов 29
Метки (Все метки)

Ответ

Цитата Сообщение от Able man Посмотреть сообщение
1)С back-end, вроде, все" понятно. С middle - частично, а с front-end - "нифига" не понятно! Если сможешь, поясни, пожалуйста, подробнее и, желательно, на примере
Ну не, я не буду. Это долго очень.
Лучше вот видео посмотрите: https://www.youtube.com/watch?v=WeA29bNSPe4

Цитата Сообщение от Able man Посмотреть сообщение
Почему при компиляции исходника на С/С++ теряется метаинфа, а при компиляции С# и Java - нет.
Ну потому что оно так сделано.
Процессор работает с машинным кодом, он ничего не знает ни про какие классы, типы, перегрузку методов, инкапсуляцию и т.д. Все это так или иначе присутствует в исходном коде, но отсутствует в машинном коде. Поэтому сохранять информацию об этом просто нет смысла. Т.е. та теоретическая декомпиляция, которая возможна, просто будет калькой с этого машинного кода, без всех тех синтаксичесих и семантичеких свойств, который были изначально. Их просто неоткуда взять. Стоит заметить, что некоторые приемы оптимизации являются типовыми, поэтому по их результату можно догадаться, как примерно выглядел код, который его породил. Но не более того. Обычно восстановление исходного программы по машинном коду заключается в том, что человек вручную и/или с помощью инструментария исследует машинный код, понимает что и как он делает, а потом пишет новый код, так сказать, по мотивам, который делает тоже самое. Т.е. задача восстановить именно оригинальный код вообще не стоит.

За примером в общем-то не надо далеко ходить. Вот есть сайт, напишите какой-нибудь код, и сразу же увидите что из него осталось в машинном коде (там для удобства показан его дизассемблер).
Например: https://godbolt.org/z/Mjc9qM4aG
Там я написал вот такой ни на что не претендующий код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <cstdio>
 
class A {
public:
   void foo() {
        std::printf("%d\n", a);
   }
 
private:
   int a = 10;
};
 
int main() {
    A b;
    b.foo();
}
Как видно, тут у меня есть класс, у которого есть состояние a, у класса также есть функция foo(), которая выводит значение a на консоль. Все это написано внутри функции main.
Теперь посмотрим, что из этого осталось в маш. коде (который мы смотрим в виде ассемблера):
Assembler
1
2
3
4
5
6
7
8
9
10
11
.LC0:
        .string "%d\n"
main:
        sub     rsp, 8
        mov     esi, 10
        mov     edi, OFFSET FLAT:.LC0
        xor     eax, eax
        call    printf
        xor     eax, eax
        add     rsp, 8
        ret
Так. Функция main осталась. Однако никакого класса нет. Нет ни единого упоминания, что он вообще был. Также нет состояния, которое мы в этом классе задали. Нет и функции foo, компилятор ее убрал.
Вот код, который может быть выдал бы нам какой-нибудь декомпилятор:
C++
1
2
3
4
5
#include <stdio.h>
 
int main() {
    printf("%d\n", 10);
}
Т.е. мы получили рабочую программу, которая делает то же самое, что и первая программа, но совершенно очевидно, что это другая программа, потому что часть информации о типах и структуре данных была утеряна при компиляции.
В более сложных случаях, может быть даже затруднительно восстановить исходный смысл каких-то конструкций. Например в коде написана реализация какой-нибудь формулы, компилятор на этапе компиляции посчитал часть этой формулы и записал в код результат этого расчета. При декомпиляции без знания предметной области скорее всего вы не сможете понять какой вид имела исходная формула. У вас будет только это записанное в код число и все.

Что касается управляемых языков, то тут уже все сказано в статье, которую я выше скинул.

Вернуться к обсуждению:
Можно ли декомпилировать исполняемый файл? C/C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.12.2022, 13:31
Готовые ответы и решения:

Потерял cpp файл, а ехе-шник остался. Можно как-то декомпилировать файл обратно?
Потерял cpp файл, а ехе-шник остался. Можно как-то декомпилировать файл обратно?

Как создать программу в С++, чтобы его можно было запускать как исполняемый .exe файл?
Здравствуйте! Собственно вся суть сабжа содержится содержится в сабже :) допустим: //...

Можно ли создать исполняемый файл книги
Здравствуйте. Подскажите как перевести в формат .exe проект VB созданный в Excel.

Как декомпилировать .class файл обратно в .java файл?
Как декомпилировать .class файл обратно в .java файл?

29
14.12.2022, 13:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.12.2022, 13:31
Помогаю со студенческими работами здесь

Как можно декомпилировать?
Буду очень благодарен

Как можно декомпилировать программу?
буду благодарен ! Декомпиляция - по сути взлом программы. Взлом запрещён правилами форума,...

Можно ли декомпилировать экзещник и получить полный исходник?
Здравствуйте, уважаемые форумчане. Я тут точнее в этой ветке новичок по этому не судите строго....

Как декомпилировать DLL файл
есть dll файл хотелось бы чтобы был похожий исходник на оригинал , а если точней то интересуют...

Как декомпилировать рус-файл
подскажите чем декомпилировать рус файл в читабельный ру? для 2 и 3 питона т.к не знаю на чем...

Декомпилировать опубликованный в один файл exe
Доброго времени суток. Поделись опытом если имеется: опубликованный одним файлом .Net сервис...

Открыть исполняемый файл, если запущен конкретный файл
Доброго времени суток! Вот такая проблемка мучает: мне нужно решить следующую задачу: открыть...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru