Декомпиляция C/C++
От: nixxxin  
Дата: 16.01.08 08:53
Оценка:
Народ, чем декомпильнуть утилитку небольшую? За несколько лет исходники потерял, щас есть интерес их восстановить. Видел уже ветки на эту тему. Народ смеется/стебется над авторами что это невозможно Но я не верю
Попробовал RecStudio, структуру программы видно, видны вызовы системных функций, но много ассемблерного мусора про возню на стеке. По идее можно было бы это разобрать в локальные переменные.

Тут еще ничего, понятно, что это sprintf
        GetLocalTime(ebp - 0x30);
        ecx = *(ebp - 0x24);
        edx = *(ebp - 0x26);
        eax = *(ebp - 0x28);
        ecx = ecx & 65535;
        edx = edx & 65535;
        (save)ecx;
        ecx = *(ebp - 0x30);
        eax = eax & 65535;
        (save)edx;
        edx = *(ebp - 0x2e);
        (save)eax;
        eax = *(ebp - 0x2a);
        ecx = ecx & 65535;
        edx = edx & 65535;
        (save)ecx;
        (save)edx;
        (save)eax & 65535;
        (save)"%02d_%02d_%02d-%02d_%02d_%02d";
        (save)ebp + -1024;
        L00401BF4();


А это уже тяжко
        al = *(ebp + 0x13);
        if(al == 0) {
            ecx = *(ebp - 0xc);
            *fs:0x0] = ecx;
            (restore)edi;
            (restore)esi;
            (restore)ebx;
            (restore)ebp;
            return 1;
        }
        if(*(ebp + -764) == 0x22) {
            edi = ebp + -764;
            ecx = ecx | -1;
            eax = 0;
            edx = ebp + -763;
            asm("repne scasb");
            ecx = !ecx - 1;
            *(ebp + 8) = edx;
            *(ebp + ecx + -765) = al;
        } else {
            edx = *(ebp + 8);
        }


Еще пробовал Boomerang — эта зараза падает на стадии декомпиляции
Скачал Neuron PE Disassembler — вообще не понял как пользоваться, и никакого хелпа нет

Что еще можно попробовать? Не охота долго возиться с ассемблером...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.