Форум программистов, компьютерный форум, киберфорум
.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.59/32: Рейтинг темы: голосов - 32, средняя оценка - 4.59
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867

Appfuscator - обфускатор, что о нем думаете?

22.06.2014, 07:48. Показов 6979. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот наткнулся на обфускатор от наших разработчиков - http://appfuscator.com
Радует, что разработчики работают над ним, чтобы жизнь хакеру медом не казалась, а так же его невысокая цена. Ну и еще, что не маловажно - его не берут "популярные" декомпиляторы, и мало кто его "ковырял". А код запутывает отлично Сами попробуйте, там есть тестовой доступ.
Что думаете? Защита .NET найдена?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.06.2014, 07:48
Ответы с готовыми решениями:

Ребят, посмотрите , что фигня, как думаете это видеочип накрылся или что-то другое?
Ребят, помогите определить, что фигня, как думаете это видеочип накрылся или что-то другое? Может быть у кого была такая проблема.Так не...

Что думаете о XPlife?
Доброго времени суток всем!!!Вот решила поставить виджеты на Windows XP. Скачав их, призадумалась, а как их устанавливать. Полазив в...

Что вы думаете о Fallout 4?
пишите

28
 Аватар для Hermein
99 / 43 / 16
Регистрация: 25.10.2011
Сообщений: 246
22.06.2014, 23:41
нет, не найдена, к сожалению, тоже все это разбирают, а большие проекты нередко обфускатор рушит, я лично столкнулся с проблемой при использовании dynamic, можно сказать что от "школоты" спасет, от мало-мальских настырных грамотеев - нет.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
23.06.2014, 00:27
Hermein, если уж так важна защита, используйте неуправляемый С++, программу на нем декомпилировать будет намного посложнее.
А вообще-все ломается, вопрос только времени и затрат.
0
 Аватар для Hermein
99 / 43 / 16
Регистрация: 25.10.2011
Сообщений: 246
23.06.2014, 10:54
Цитата Сообщение от insite2012 Посмотреть сообщение
времени и затрат
Или личных счетов, вообще глобально все не настолько плохо или важно, для меня все-равно единственный огромный минус - это неполноценность .NET Native (нужна возможность поддержки WinForms и WPF), только интересно когда это все доделают
0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
23.06.2014, 16:03  [ТС]
Цитата Сообщение от Hermein Посмотреть сообщение
а большие проекты нередко обфускатор рушит
именно этот обфускатор? потому что обфусцировал немаленькую прогу - все ок. Другим обфускатором обфусцирую - так там да, прога вылетает при запуске.
Цитата Сообщение от insite2012 Посмотреть сообщение
программу на нем декомпилировать будет намного посложнее.
декомпилировать невозможно ведь. Процесс компиляции нативного кода односторонний, а значит восстановить его исходный код не представляется возможным. А ломается так же легко, если ничем не накрыто.
Цитата Сообщение от insite2012 Посмотреть сообщение
А вообще-все ломается, вопрос только времени и затрат.
ну насчет затрат - тут наврятли. Ведь многие ломают просто так, ради интереса, особенно начинающие. Да и более опытным интересно новую защиту разбирать.

Что меня привлекло в этом обфускаторе - это поддержка WPF. Хотя я пока не пишу на WPF, но планирую, там ведь норм. дизайн для программы можно забацать А мой старый обфускатор WPF не тянет
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
23.06.2014, 16:07
Winhttp22, а я вот вообще этим не заморачиваюсь. Нет, конечно, те варианты что написаны для коммерции, немного закрыты (защита от копирования на другую машину), но без обфускаторов. Хотя, по правде сказать, коммерческие мои проекты рассчитаны на людей, которые далековаты от программирования, да и обновляю я их частенько, естественно немного меняю защиту, так что смысла их ломать особого и нет...
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
23.06.2014, 16:20
Цитата Сообщение от Winhttp22 Посмотреть сообщение
именно этот обфускатор? потому что обфусцировал немаленькую прогу - все ок. Другим обфускатором обфусцирую - так там да, прога вылетает при запуске.
они все одинаковы
Цитата Сообщение от Winhttp22 Посмотреть сообщение
декомпилировать невозможно ведь. Процесс компиляции нативного кода односторонний, а значит восстановить его исходный код не представляется возможным. А ломается так же легко, если ничем не накрыто.
легко. Во-первых никакого нативного кода не компилируется, это невозможно (даже сами МС не умеют компилировать сразу в нативный, .Net Native уже сколько разрабатывается, и все еще превью). А виртуализация - помогает, конечно, но тоже взламывается.
Цитата Сообщение от Winhttp22 Посмотреть сообщение
ну насчет затрат - тут наврятли. Ведь многие ломают просто так, ради интереса, особенно начинающие. Да и более опытным интересно новую защиту разбирать.
даже исходники на С++ получают, а вы говорите про управляемый язык да, сложно, но можно.
0
28 / 28 / 11
Регистрация: 08.08.2011
Сообщений: 1,173
23.06.2014, 16:54
Перепробовал кучу обфускаторов, на моих проектах очень редко какой работает. Или зависает потом программа, или сразу падает. Пользуюсь древнючим малоизвестным обфускатором, который без ошибок делает.
0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
23.06.2014, 21:54  [ТС]
Цитата Сообщение от Psilon Посмотреть сообщение
они все одинаковы
нет. Вот тем, который я всегда пользуюсь - строки шифровать невозможно, прога сразу падает. Только меняю название переменных, классов и тд. А в этом алгоритм шифровки строк совершенно другой
Цитата Сообщение от Psilon Посмотреть сообщение
Во-первых никакого нативного кода не компилируется, это невозможно (даже сами МС не умеют компилировать сразу в нативный, .Net Native уже сколько разрабатывается, и все еще превью). А виртуализация - помогает, конечно, но тоже взламывается.
так ведь речь о -

Цитата Сообщение от insite2012 Посмотреть сообщение
используйте неуправляемый С++
.
Цитата Сообщение от Psilon Посмотреть сообщение
даже исходники на С++ получают, а вы говорите про управляемый язык да, сложно, но можно.
как так? Вот Крис Касперски хорошо разжевал -
Фундаментальные проблемы декомпиляции

Компиляция — процесс однонаправленный и необратимый, в ходе которого теряется огромное количество лишней информации, совершенно ненужной процессору. Это не шутка! Исходный текст, написанный на языке высокого уровня, чрезвычайно избыточен, что с одной стороны упрощает его понимание, а с другой — страхует программиста от ошибок. Взять хотя бы информацию о типах. На низком уровне процессор оперирует базовыми типами: байт, слово, двойное слово. Строки превращаются в последовательности байтов, и, чтобы догадаться, что это строка, приходится прибегать к эвристическим алгоритмам.

Структуры и классы также «расщепляются» в ходе компиляции, и, за исключением некоторых виртуальных функций, все остальные члены класса теряют свою кастовую принадлежность, становясь глобальными процедурами. Восстановить иерархию классов в общем случае невозможно, а в принципе не сильно и нужно.

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

Что в имени твоем

Комментарии, имена функций и переменных в процессе компиляции теряются безвозвратно (исключение составляют динамические типы, имена которых в двоичном модуле хранятся как есть, а потому и тормозят, словно динозавры). Ну, комментариев в большинстве исходных текстов и так негусто, так что их отсутствие еще можно пережить, но вот без имен переменных и функций логика работы даже простейших программ становится совершенно непонятной.
http://www.xakep.ru/post/42769/

Цитата Сообщение от Suppir Посмотреть сообщение
Перепробовал кучу обфускаторов, на моих проектах очень редко какой работает. Или зависает потом программа, или сразу падает.
Я обфускатор использовал для переименования переменных, классов и тд. так, как это тоже позволяет запутать немного. Строки не шифровал, а то падала прога А этот обфускатор добавил "хлама" + шифранул строки + переименовал все, что только можно + вдобавок я еще накрыл протектором, и программа норм работает. Только я не использовал функции запутывания кода и тд., только то, что доступно в бесплатной версии
1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
23.06.2014, 22:31
Winhttp22, еще раз: плюсовый код можно дкомпилировать. не дизассемблировать, а декомпилировать. Мичическая "сложность" С++ так и остается мифической
как так? Вот Крис Касперски хорошо разжевал -
Фундаментальные проблемы декомпиляции
статья 2008 года - свежачок, однако Она устарела уже (2014-2008)/1.5 раз. Просьба привести что-нибудь поновее

Добавлено через 1 минуту
вот небольшой перечень:
http://mydebianblog.blogspot.r... -post.html
0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
23.06.2014, 23:26  [ТС]
Цитата Сообщение от Psilon Посмотреть сообщение
плюсовый код можно дкомпилировать.
Плюсовый код после компиляции? Неужели после компиляции, у нас будет "плюсовый" код, а не набор байтов? Как определяют, на чем написана программа? Неужели код программы, написанный на делфи - останется таким же кодом после компиляции? Да ну По сигнатурам палят, на чем написана. И ничего не стоит добавить сигнатур от какого-то левого компилятора, чтобы программа, написаная на делфи - мистическим образом превратилась в прогу на Асм.

Я так понял, что вот этот исходник -
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
#include <stdio.h>
#include <cblas.h>
 
double m[] = {
  3, 1, 3,
  1, 5, 9,
  2, 6, 5
};
 
double x[] = {
  -1, -1, 1
};
 
double y[] = {
  0, 0, 0
};
 
int main(void)
{
  int i, j;
 
  for (i=0; i<3; ++i) {
    for (j=0; j<3; ++j) printf("%5.1f", m[i*3+j]);
    putchar('\n');
  }
 
  cblas_dgemv(CblasRowMajor, CblasNoTrans, 3, 3, 1.0, m, 3, x, 1, 0.0, y, 1);
 
 
  for (i=0; i<3; ++i)  printf("%5.1f\n", y[i]);
 
  return 0;
}
после компиляции, и последующей декомпиляции превращается в вот этот -

Первый вариант -
Кликните здесь для просмотра всего текста
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
char y[24];
long long m[9] = { 0x4008000000000000LL, 0x3ff0000000000000LL, 0x4008000000000000LL, 0x3ff0000000000000LL, 0x4014000000000000LL, 0x4022000000000000LL, 0x4000000000000000LL, 0x4018000000000000LL, 0x4014000000000000LL };
 
// address: 0x80484e4
int main(int argc, char **argv, char **envp) {
    int local10;   // r24
    int local13;   // r28
    int local14;   // r29
    int local15;   // r32
    int local2;   // m[r28 + 72]{60}
    int local3;   // r28{181}
    int local6;   // m[r28 + 72]{119}
    int local7;   // m[r28 + 72]{149}
    int local8;   // m[r28 + 76]{9}
    int local9;   // m[r28 + 76]{49}
 
    *(int*)(local13 - 4) = local14;
    *(int*)(local13 - 12) = 0;
    local3 = local13 - 84;
    if (*(int*)(local3 + 72) > 2) {
        *(int*)(local3 + 52) = 1;
        *(int*)(local3 + 48) = 0x8049868;
        *(long long*)(local3 + 40) = 0.;
        *(int*)(local3 + 36) = 1;
        *(int*)(local3 + 32) = 0x8049848;
        *(int*)(local3 + 28) = 3;
        *(int*)(local3 + 24) = 0x8049800;
        *(long long*)(local3 + 16) = 1.;
        *(int*)(local3 + 12) = 3;
        *(int*)(local3 + 8) = 3;
        *(int*)(local3 + 4) = 111;
        *(int*)local3 = 101;
        cblas_dgemv();
        local6 = 0;
        for(;;) {
            *(long long*)(local3 + 4) = y[0];
            *(int*)local3 = 0x80486b6;
            proc1();
            local7 = *(int*)(local3 + 72) + 1;
        }
    }
    local8 = 0;
    for(;;) {
        local10 = *(int*)(local3 + 72) + *(int*)(local3 + 72) + *(int*)(local3 + 72);
        local15 = m[local10];
        *(long long*)(local3 + 4) = local15;
        *(int*)local3 = 0x80486b0;
        proc1();
        local9 = *(int*)(local3 + 76) + 1;
    }
}


Второй вариант -
Кликните здесь для просмотра всего текста
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
// Generated by Rec Studio 4 - build Oct 20 2012
 
_init()
{// addr = 0x08048398
    _unknown_ __ebx;                       // r1
    _unknown_ __ebp;                       // r6
    _unknown_ _t2;                         // _t2
 
    __esp = __esp - 4;
    L1();
    _pop(__ebx);
    if( *((intOrPtr*)(_t2 + 0x1414)) != 0) {
        __gmon_start__();
    }
    frame_dummy();
    __do_global_ctors_aux();
    _pop(__eax);
    return;
}
 
L080483A4()
{
    _unknown_ _t2;                         // _t2
 
    _pop(__ebx);
    if( *((intOrPtr*)(_t2 + 0x1414)) != 0) {
        __gmon_start__();
    }
    frame_dummy();
    __do_global_ctors_aux();
    _pop(__eax);
    _pop(__ebx);
    __esp = __ebp;
    _pop(__ebp);
    return;
}
 
__gmon_start__()
{// addr = 0x080483D8
    goto __imp____gmon_start__;
}
 
putchar()
{// addr = 0x080483E8
    goto __imp__putchar;
}
 
__libc_start_main()
{// addr = 0x080483F8
    goto __imp____libc_start_main;
}
 
cblas_dgemv()
{// addr = 0x08048408
    goto __imp__cblas_dgemv;
}
 
printf()
{// addr = 0x08048418
    goto __imp__printf;
}
 
_start(
    signed int __eax,                      // r0
    _unknown_ __edx                        // r3
)
{// addr = 0x08048430
    _unknown_ __ebx;                       // r1
    signed int _t5;                        // _t5
    _unknown_ _t6;                         // _t6
    _unknown_ _t10;                        // _t10
 
    __edx = __edx;
    _t4 = __eax;
    _pop(__esi);
    __ecx = __esp;
    __esp = __esp & 240;
    _push(__eax);
    _push(__esp);
    _push(__edx);
    _push(__libc_csu_fini);
    _push(__libc_csu_init);
    _push(__ecx);
    _push(_t10);
    _push(main);
    __libc_start_main();
    asm("hlt ");
    0;
    0;
    _push(0);
    _push(_t6);
    __esp = __esp - 4;
    if(completed.5982 != 0) {
    } else {
        _t4 = dtor_idx.5984;
        _t6 = ( &__DTOR_END__ -  &__DTOR_LIST__ >> 2) - 1;
        if(_t4 >= _t6) {
        } else {
            do {
                _t5 = _t4 + 1;
                dtor_idx.5984 = _t5;
                 *((intOrPtr*)(_t5 * 4 +  &__DTOR_LIST__))();
                _t4 = dtor_idx.5984;
            } while(_t4 < _t6);
        }
        completed.5982 = 1;
    }
    __esp = __esp + 4;
    _pop(__ebx);
    _pop(__ebp);
    return;
}
 
__do_global_dtors_aux(
    _unknown_ __esi                        // r5
)
{// addr = 0x08048460
    _unknown_ __ebx;                       // r1
    _unknown_ __ebp;                       // r6
    _unknown_ _t4;                         // _t4
    signed int _t5;                        // _t5
    signed int _t6;                        // _t6
    _unknown_ _t10;                        // _t10
 
    if(completed.5982 == 0) {
        _t5 = dtor_idx.5984;
        _t10 = ( &__DTOR_END__ -  &__DTOR_LIST__ >> 2) - 1;
        if(_t5 >= _t10) {
L4:
            completed.5982 = 1;
            return;
        }
        do {
            _t6 = _t5 + 1;
            dtor_idx.5984 = _t6;
             *((intOrPtr*)(_t6 * 4 +  &__DTOR_LIST__))();
            _t5 = dtor_idx.5984;
        } while(_t5 < _t10);
        goto L4;
    }
    return;
}
 
frame_dummy()
{// addr = 0x080484C0
    _unknown_ __ebp;                       // r6
 
    __eax = __JCR_LIST__;
    if(__JCR_LIST__ == 0) {
    } else {
        __eax = 0;
        if(__eax != 0) {
             *__esp =  &__JCR_LIST__;
             *__eax();
            return;
        }
    }
    return;
}
 
main(
    _unknown_ __fp0                        // r28
)
{// addr = 0x080484E4
    signed int _v8;                        // _cfa_fffffff8
    signed int _v12;                       // _cfa_fffffff4
    intOrPtr _v32;                         // _cfa_ffffffe0
    char* _v36;                            // _cfa_ffffffdc
    intOrPtr _v48;                         // _cfa_ffffffd0
    char* _v52;                            // _cfa_ffffffcc
    intOrPtr _v56;                         // _cfa_ffffffc8
    char* _v60;                            // _cfa_ffffffc4
    intOrPtr _v72;                         // _cfa_ffffffb8
    intOrPtr _v76;                         // _cfa_ffffffb4
    intOrPtr _v80;                         // _cfa_ffffffb0
    _unknown_ __ebp;                       // r6
 
    __fp0 = __fp0;
    __esp = __esp & 240;
    __esp = __esp - 80;
    _v12 = 0;
    while(_v12 <= 2) {
        _v8 = 0;
        while(_v8 <= 2) {
            __fp0 ?_?  *((long long*)((_v12 + __edx + __edx + _v8) * 8 +  &m));
            asm("fstp qword [esp+0x4]");
             *__esp = 134514352;
            printf();
            _v8 = _v8 + 1;
        }
         *__esp = 10;
        putchar();
        _v12 = _v12 + 1;
    }
    _v32 = 1;
    _v36 =  &y;
    asm("fldz ");
    asm("fstp qword [esp+0x28]");
    _v48 = 1;
    _v52 =  &x;
    _v56 = 3;
    _v60 =  &m;
    asm("fld1 ");
    asm("fstp qword [esp+0x10]");
    _v72 = 3;
    _v76 = 3;
    _v80 = 111;
     *__esp = 101;
    cblas_dgemv();
    _v12 = 0;
    while(_v12 <= 2) {
        __fp0 ?_?  *((long long*)(_v12 * 8 +  &y));
        asm("fstp qword [esp+0x4]");
         *__esp = "%5.1f\n";
        printf();
        _v12 = _v12 + 1;
    }
    return 0;
}
 
__libc_csu_fini()
{// addr = 0x080485F0
    _unknown_ __ebp;                       // r6
 
    return;
}
 
__libc_csu_init(
    intOrPtr _a4,                          // _cfa_4
    intOrPtr _a8,                          // _cfa_8
    intOrPtr _a12                          // _cfa_c
)
{// addr = 0x08048600
    intOrPtr _v36;                         // _cfa_ffffffdc
    intOrPtr _v40;                         // _cfa_ffffffd8
    _unknown_ __ebx;                       // r1
    _unknown_ __edi;                       // r4
    signed int __esi;                      // r5
    _unknown_ __ebp;                       // r6
    _unknown_ _t14;                        // _t14
    _unknown_ _t15;                        // _t15
    signed int _t18;                       // _t18
 
    __i686.get_pc_thunk.bx();
    _t15 = _t14 + 4529;
    __esp = __esp - 28;
    _init();
    _t18 = _t15 + -248 - _t15 + -248 >> 2;
    if(_t18 == 0) {
    } else {
        __esi = 0;
        do {
            _v36 = _a12;
            _v40 = _a8;
             *__esp = _a4;
             *((intOrPtr*)(_t15 + -248 + __esi * 4))();
            __esi = __esi + 1;
        } while(__esi < _t18);
    }
    __esp = __esp + 28;
    return;
}
 
__i686.get_pc_thunk.bx()
{// addr = 0x0804865A
    return;
}
 
__do_global_ctors_aux()
{// addr = 0x08048660
    intOrPtr* __ebx;                       // r1
    _unknown_ __ebp;                       // r6
 
    __eax = __CTOR_LIST__;
    if(__eax == 255) {
    } else {
        __ebx =  &__CTOR_LIST__;
        asm("o16 nop ");
        do {
            __ebx = __ebx - 4;
             *__eax();
            __eax =  *__ebx;
        } while(__eax != 255);
    }
    return;
}
 
_fini()
{// addr = 0x0804868C
    _unknown_ __ebx;                       // r1
    _unknown_ __ebp;                       // r6
    _unknown_ _t1;                         // _t1
 
    __esp = __esp - 4;
    L1();
    _pop(__ebx);
    __do_global_dtors_aux(__esi);
    _pop(__ecx);
    return;
}
 
L08048698()
{
    _unknown_ _t1;                         // _t1
 
    _pop(__ebx);
    __do_global_dtors_aux(__esi);
    _pop(__ecx);
    _pop(__ebx);
    __esp = __ebp;
    _pop(__ebp);
    return;
}
 
L08048698()
{
    _unknown_ _t1;                         // _t1
 
    _pop(__ebx);
    @rec __do_global_dtors_aux@__do_global_dtors_aux@(__esi);
    _pop(__ecx);
    _pop(__ebx);
    __esp = __ebp;
    _pop(__ebp);
    return;
}
 
// Statistics:
//      74 Register nodes
//      35 Temporaries nodes
//       5 Casts
//     207 Statements
//       2 Labels
//       1 Gotos
//      17 Blocks
//     469 Nodes
//      10 Assembly nodes
//      27 Unknown Types
 
 
Total time: 0 seconds.

очень похоже на исходник И во втором варианте - ассемблерные инструкции. Не порядок
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
24.06.2014, 00:23
Winhttp22, а как определяют кодировку сообщения? Точно также

Кривые декомпиляторы у вас

Еще раз, хочется верить, что С++ - неубиваемый невзламываемый код - пожалуйста, верьте. Только кряки, реверс-инжинеринг и все прочее существовало задолго до появления управляемых языков. Да и декомпиляторов тогда не было, только дизассемблеры.

Засим откланююсь. Не хотите принимать отличную от своей точку зрения - пожалуйста. Мне объяснять прописные истины в десятый раз неинтересно, увы.
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
24.06.2014, 00:30
Цитата Сообщение от Winhttp22 Посмотреть сообщение
ничего не стоит добавить сигнатур от какого-то левого компилятора, чтобы программа, написаная на делфи - мистическим образом превратилась в прогу на Асм
В Delphi столько хлама, что стандартный PE32 код без всяких сигнатур с полувзгляда опознается (секции, ресурсы, вызовы VCL итп).
0
 Аватар для Hermein
99 / 43 / 16
Регистрация: 25.10.2011
Сообщений: 246
24.06.2014, 00:55
Делфи еще c 7 версии был декомпилятор DeDe, который очень даже шикарно восстанавливает исходник и уловить "логику" и методы не особо много времени займет
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
24.06.2014, 01:44
Цитата Сообщение от Hermein Посмотреть сообщение
декомпилятор DeDe
Посмотрите еще здесь: IDR (Interactive Delphi Reconstructor)

IDR (Interactive Delphi Reconstructor) – a decompiler of executable files (EXE) and dynamic libraries (DLL), written in Delphi and executed in Windows32 environment.

The program firstly is intended for the companies, engaged by development of anti-virus software. It can also help programmers to recover lost source code of programs appreciably.

The current version of the program can process files (GUI and console applications), compiled by Delphi compilers of versions Delphi2 – DelphiXE2.
0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
24.06.2014, 02:49  [ТС]
Цитата Сообщение от Psilon Посмотреть сообщение
Кривые декомпиляторы у вас
хах... дак это же из вашей статьи взял, которую вы мне кинули
Цитата Сообщение от Psilon Посмотреть сообщение
Еще раз, хочется верить, что С++ - неубиваемый невзламываемый код - пожалуйста, верьте.
вы мешаете все в кучу. Я ведь не говорю, что он не взламываемый. Тут вопрос стоит о получении исходника программы, а не проверке ее "защиты", о чем вы говорите.
Цитата Сообщение от Hermein Посмотреть сообщение
Делфи еще c 7 версии был декомпилятор DeDe, который очень даже шикарно восстанавливает исходник и уловить "логику" и методы не особо много времени займет
я правил форму delphi-приложения ресторатором Ведь вся "настройка" его компонентов хранится в ресурсах (ну может не вся).

Логику я уловить могу даже без декомпилятора, так, как у меня есть базовые знания асм, и умею работать с отладчиком. Ведь речь не о взломе, а о восстановлении исходника. Типо - декомпильнул, получил исходник, открыл в делфи-редакторе, скомпилил.
0
28 / 28 / 11
Регистрация: 08.08.2011
Сообщений: 1,173
24.06.2014, 13:52
Онлайн-обфускатор?

То есть юридическое лицо (какая-нибудь компания, которая разрабатывает дорогой софт) зарегистрирует на свое имя лицензию, а потом онлайн будет передавать свои исходники неизвестно кому? Ну-ну.
0
 Аватар для Spawn
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
24.06.2014, 13:56
Цитата Сообщение от Suppir Посмотреть сообщение
а потом онлайн будет передавать свои исходники неизвестно кому? Ну-ну.
Это фактически единственный способ защитить механизмы защиты Пока неизвестно что же обфускатор делает с кодом, он актуален в определённой степени. Как только приложение обфускатора взламывается, на этом всё заканчивается.
0
28 / 28 / 11
Регистрация: 08.08.2011
Сообщений: 1,173
24.06.2014, 14:06
Spawn,

Ну, это понятно. Но хотелось бы иметь какие-то гарантии анонимности. По факту ведь юрлицо будет передавать свои разработки в исходном коде какому-то дяде (или, вообще, мальчику).

Добавлено через 1 минуту
Вообще, идея не нова. В том же Perl есть онлайн-обфускатор:
http://perlobfuscator.com/
или вот:
http://liraz.org/obfus.html
0
 Аватар для Hermein
99 / 43 / 16
Регистрация: 25.10.2011
Сообщений: 246
24.06.2014, 14:10
Suppir, много писали по-этому поводу, договор заключается вот и все
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.06.2014, 14:10
Помогаю со студенческими работами здесь

Что вы думаете о терактах
Что вы думаете о терактах? Какой в них смысл? И правда ли если человек убил себя и вместе с этим забрал с собой еще пару сотен, то он...

Что вы думаете о W5500?
цена вопроса 2-3 доллара. полное решение для скажем сервера на камне. стоит ли мутить стеки на стороне контроллера, так еще и фай ставь...

Что вы думаете о C Sharp
Скажите, пожалуйста, тяжелый ли язык C Sharp ? Что лучше С Sharp или C++ biulder во время трудоустройства???Как вы думаете ????

что вы думаете о прокси?
В интернете много информации по теме, но мне интерестно узнать ваше мнение. Пользуетесь ли вы прокси, естли да, то каким видом? Интересно...

Что думаете об этом бп?
http://kazan.dns-shop.ru/catalog/87/126949/#specs На офф.сайте о нем инфы даже нет.В сумме по 4 12в линиям 72А дает!за смешные 1900р.За...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru