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

декомпиляторы С++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Одномерный массив (элементы с четными индексами переписать в массив z.в массиве z поменять местами максимальный и минимальный элементы) http://www.cyberforum.ru/cpp-beginners/thread795121.html
задан массив x(n).элементы с четными индексами переписать в массив z.в массиве z поменять местами максимальный и минимальный элементы.помогите как найти и поменять местами max и min плз
C++ Определить является ли матрица магическим квадратом Здравствуйте. помогите написать программу на языке С++. Дана целая матрица n-го порядка. Определить является ли она магическим квадратом, т.е. такой в которой суммы элементов во всех стороках и столбцах одинаковы. Если можно с объяснением. заранее спасибо http://www.cyberforum.ru/cpp-beginners/thread795114.html
Непонятны некоторые функции C++
Непонятны следующие функции, что они выполняют: (char)((int)('a')+j)) break; // что значит эта запись? char PROC(char s) // почему записывается в скобках новый char
C++ Задача на массив и строки
Написать программу, которая вводит с клавиатуры массив, из N вещественных чисел, находит среди элементов массива минимальный и максимальный элементы и их количество и выводит результат пользователю; затем вводит с клавиатуры строку длиной не более 200 символов, еще одну строку длиной не более чем 10 символов и номер позиции, начиная с которой ищет первую позицию вхождения второй строки в первую,...
C++ Удалить из числа все повторяющиеся цифры кроме первого вхождения. Ошибка в коде http://www.cyberforum.ru/cpp-beginners/thread795078.html
Удалить из числа все повторяющиеся цифры кроме первого вхождения. Например: на входе: 112, на выходе: 12. В моем случаи: на входе: 112, на выходе: 12-86841313513. #include<stdio.h> #include<iostream> #include<math.h> #include<locale.h> using namespace std;
C++ считывание амперсанда Нужно сделать считывание амперсанда без замены его в цикле. С использованием gets и sscanf. Добавлено через 4 часа 21 минуту #include "StdAfx.h" #include <windows.h> #include <iostream> #include <iomanip> #include <TCHAR.h> #include <time.h> #include <conio.h> подробнее

Показать сообщение отдельно
WhiteP
605 / 203 / 23
Регистрация: 20.11.2012
Сообщений: 419
26.02.2013, 18:41     декомпиляторы С++
и даже без защиты восстановить Сишный исходник нереально, оптимизатор постарается
например
ValeryS, да понятно, я знаю это. Декомпилирование != дизассемблирование. Алгоритм восстановить возможно тем не менее. Один к одному исходник - нет.

Вот пример со строкой в коде.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
 
int main()
{
    int a;
    char * str;
    __asm
    {
        mov a, 78
        add eax, 77
        jmp jmphere
lbl: 
        _emit 's'
        _emit 't'
        _emit 'r'
        _emit 0
jmphere:
        lea eax, lbl
        mov str, eax
 
    }
    std::cout<<str;
 
    return 0;
}

Вот листинг IDA как он есть. Правда с PDB символы есть. Но cout оно и так знает.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.text:00401276                 mov     [ebp+a], 4Eh
.text:0040127D                 add     eax, 4Dh
.text:00401280                 jmp     short jmphere
.text:00401282 ; ---------------------------------------------------------------------------
.text:00401282
.text:00401282 lbl:                                    ; DATA XREF: _main:jmphereo
.text:00401282                 jnb     short loc_4012F8
.text:00401284                 jb      short $+2
.text:00401286
.text:00401286 jmphere:                                ; CODE XREF: _main+10j
.text:00401286                 lea     eax, lbl
.text:0040128C                 mov     [ebp+str], eax
.text:0040128F                 mov     edx, [ebp+str]  ; _Val
.text:00401292                 mov     ecx, ds:__imp_?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A ; _Ostr
.text:00401298                 call    ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z ; std::operator<<<std::char_traits<char>>(std::basic_ostream<char,std::char_traits<char>> &,char const *)
Видно, что хотя IDA задизасмила строку - ссылка указывает, что к данному участку есть обращение как к данным. Так это я вручную строку в код влепил. Часто такое компиляторы вытворяют?
 
Текущее время: 17:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru