0 / 0 / 0
Регистрация: 10.06.2017
Сообщений: 15
1

Декомпиляция exe файла

10.12.2019, 11:57. Показов 1444. Ответов 3

Author24 — интернет-сервис помощи студентам
Здравствуйте! Появилась задача проанализировать exe файл и на основе этого написать подобную программу(ссылка на exe https://yadi.sk/d/1FzVOfONB_XlHA). Дошел до псевдокода на C, который имеет вид:

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
__int64 __fastcall is_exe_enabled_for_execution(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >* app_dll)
{
    std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >* v1; // rbx
    unsigned __int64 v2; // r8
    unsigned __int8 v3; // bl
    unsigned __int64 v4; // rdi
    unsigned __int64 v5; // rsi
    std::basic_string<char, std::char_traits<char>, std::allocator<char> >* v6; // rcx
    size_t v7; // r8
    __int64 v8; // rcx
    unsigned __int64 v9; // rax
    size_t v10; // rdi
    std::basic_string<char, std::char_traits<char>, std::allocator<char> >* v11; // rcx
    unsigned __int64 v12; // rdx
    char* v13; // rcx
    std::basic_string<char, std::char_traits<char>, std::allocator<char> > str; // [rsp+28h] [rbp-30h]
 
    v1 = app_dll;
    str._Mypair._Myval2._Mysize = 0i64;
    str._Mypair._Myval2._Myres = 15i64;
    str._Mypair._Myval2._Bx._Buf[0] = 0;
    v2 = -1i64;
    do
        ++v2;
    while (embed_0[v2]);
    std::basic_string<char, std::char_traits<char>, std::allocator < char»::assign(&str, embed_0, v2);
    if (pal::utf8_palstring(&str, v1))
    {
        v4 = str._Mypair._Myval2._Mysize;
        if (str._Mypair._Myval2._Mysize < 0x40)
            goto LABEL_36;
        v5 = 32i64;
        if (str._Mypair._Myval2._Mysize < 0x20)
            v5 = str._Mypair._Myval2._Mysize;
        v6 = &str;
        if (str._Mypair._Myval2._Myres >= 0x10)
            v6 = (std::basic_string<char, std::char_traits<char>, std::allocator<char> >*)str._Mypair._Myval2._Bx._Ptr;
        v7 = v5;
        if (v5 > 0x20)
            v7 = 32i64;
        if (memcmp(v6, "c3ab8ff13720e8ad9047dd39466b3c89", v7) || v5 != 32)
            goto LABEL_36;
        if (v4 < 0x20)
            std::_String_val < std::_Simple_types < char»::_Xran(v8);
        v9 = v4 - 32;
        v10 = 32i64;
        if (v9 < 0x20)
            v10 = v9;
        v11 = &str;
        if (str._Mypair._Myval2._Myres >= 0x10)
            v11 = (std::basic_string<char, std::char_traits<char>, std::allocator<char> >*)str._Mypair._Myval2._Bx._Ptr;
        if (!memcmp(&v11[1], "74e592c2fa383d4a3960714caef0c4f2", v10) && v10 == 32)
        {
            if (v1->_Mypair._Myval2._Myres >= 8)
                v1 = (std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >*)v1->_Mypair._Myval2._Bx._Ptr;
            trace::error(L"This executable is not bound to a managed DLL to execute. The binding value is: '%s'", v1);
            v3 = 0;
        }
        else
        {
        LABEL_36:
            if (v1->_Mypair._Myval2._Myres >= 8)
                v1 = (std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >*)v1->_Mypair._Myval2._Bx._Ptr;
            trace::info(L"The managed DLL bound to this executable is: '%s'", v1);
            v3 = 1;
        }
    }
    else
    {
        trace::error(L"The managed DLL bound to this executable could not be retrieved from the executable image.");
        v3 = 0;
    }
    if (str._Mypair._Myval2._Myres >= 0x10)
    {
        v12 = str._Mypair._Myval2._Myres + 1;
        v13 = str._Mypair._Myval2._Bx._Ptr;
        if (str._Mypair._Myval2._Myres + 1 >= 0x1000)
        {
            v12 = str._Mypair._Myval2._Myres + 40;
            v13 = (char*) * ((_QWORD*)str._Mypair._Myval2._Bx._Ptr - 1);
            if ((unsigned __int64)(str._Mypair._Myval2._Bx._Ptr - v13 - 8) > 0x1F)
                invalid_parameter_noinfo_noreturn_0();
        }
        operator delete(v13, v12);
    }
    return v3;
}
Вопрос: в правильном ли направлении я двигаюсь и куда дальше копать?
Заранее спасибо!
p.s. В данной сфере полное дно, извините, за какие-либо грубые ошибки.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.12.2019, 11:57
Ответы с готовыми решениями:

Декомпиляция exe файла для изменения параметра подключения
У меня такая проблема. Есть скомпилированный рабочий exe файл-программа, которая подключается по...

декомпиляция exe
вот погуглил немного... вижу, что декомпиляция относительно небольшой программы вполне возможна. ...

Декомпиляция exe
Здравствуйте! Утерян исходный код программы, остался только exe. Помогите пожалуйста достать код,...

Декомпиляция .exe в исходник
Написал прогу на работе и при переустановке системы потёр сам проект. Среда разработки VS2010....

3
Вирусоборец
21550 / 15503 / 2986
Регистрация: 08.10.2012
Сообщений: 63,021
10.12.2019, 13:47 2
Здравствуйте!

Вы не ошиблись разделом форума?
0
0 / 0 / 0
Регистрация: 10.06.2017
Сообщений: 15
10.12.2019, 15:06  [ТС] 3
А какой должен быть?
0
Вирусоборец
21550 / 15503 / 2986
Регистрация: 08.10.2012
Сообщений: 63,021
10.12.2019, 15:12 4
Какой-либо из языков программирования, полагаю.
0
10.12.2019, 15:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.12.2019, 15:12
Помогаю со студенческими работами здесь

Декомпиляция .dll и .exe, написанных на VC++
Здравствуйте. Я далек от программирования, но люблю поиграть в игрушки и поэкспериментировать. У...

Декомпиляция .class файла
После декомпиляции .class файла и повторной компиляции приложение в котором используется это класс...

Декомпиляция *.apk файла
Здравствуйте форумчане. Нужно опасаться за исходный код своего продукта при портирование его на...

Декомпиляция ехе-файла
Есть небольшой (около 50кБайт), исполняемый ехе-файл. Насколько реально понять алгоритм работы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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