Посл.ответ |
Сообщение |
Ранг: 1.2 (гость) Активность: 0=0 Статус: Участник
|
Создано: 14 января 2007 17:46 · Личное сообщение · #1
Доброго времени суток.
Подскажите пожалуйста, как решить такую задачу: есть программа на С++, использующая MFC(Visual Studio 7.0). В программе используется переменная типа CString. (например CString str1 = "ABCD";). Так вот, каким образом можно(если можно вообще) сделать так, чтобы её НЕ СМОГЛИ ИЗМЕНИТЬ в EXE-файле на другую переменную? Да, если CString более уязвим, чем, например, char, подскажите.
Заранее благодарю за любые подсказки.
Алексей.
| Сообщение посчитали полезным: |
|
![](img/s5.gif) Ранг: 120.9 (ветеран), 5thx Активность: 0.08↘0 Статус: Участник Programmer and reverser
|
Создано: 16 января 2007 06:36 · Личное сообщение · #2
в Си нет строкового типа как такового. Это просто массив элементов типа char с null-символом на конце. Так что разницы нет. А вообще можно просто поксорить (xor) строки для усложнения анализа. Хотя это мало что даст, если не чайник будет ломать. А вообще можно пройтись по проге протектором
----- Уважайте других и пишите грамотно. | Сообщение посчитали полезным: |
Ранг: 203.3 (наставник) Активность: 0.22↘0 Статус: Участник UPX Killer -d
|
Создано: 16 января 2007 06:49 · Личное сообщение · #3
Так юзайте MFC, ксорьте, и до Ваших констант уже никому не будет дела.
Контрольную сумму константы посчитайте (лучше самописным алгоритмом) и так же юзайте MFC
----- Я медленно снимаю с неё UPX... *FF_User* | Сообщение посчитали полезным: |
Ранг: 1.2 (гость) Активность: 0=0 Статус: Участник
|
Создано: 16 января 2007 08:07 · Личное сообщение · #4
Спасибо за советы. Протектором пройдусь. А где можно прочитать про "ксорьте" и подсчёт контрольных сумм?
Алексей.
| Сообщение посчитали полезным: |
![](img/s5.gif) Ранг: 120.9 (ветеран), 5thx Активность: 0.08↘0 Статус: Участник Programmer and reverser
|
Создано: 16 января 2007 08:19 · Личное сообщение · #5
Про "ксорьте" почитай в учебниках по программированию) XOR - это такая битовая операция. Исключающее ИЛИ.
А о подсчете контрольных сумм... Ну почитай что-нить про хеш-функции. Гугл рулит) Там все это дело и ищи.
----- Уважайте других и пишите грамотно. | Сообщение посчитали полезным: |
Ранг: 203.3 (наставник) Активность: 0.22↘0 Статус: Участник UPX Killer -d
|
Создано: 16 января 2007 09:46 · Личное сообщение · #6
Лучше уж протектором по MFC - никто близко не подойдет ;
AlexDL, если будешь продавать прогу, то желательно сначала купить протектор. Про контрольные суммы проще: в сети полно исходников любых алгоритмов на любом языке.
----- Я медленно снимаю с неё UPX... *FF_User* | Сообщение посчитали полезным: |
Ранг: 1.2 (гость) Активность: 0=0 Статус: Участник
|
Создано: 16 января 2007 13:51 · Личное сообщение · #7
"Лучше уж протектором по MFC - никто близко не подойдет"
Что, MFC сложнее ломается, чем чистый С++ например?
"AlexDL, если будешь продавать прогу, то желательно сначала купить протектор."
А есть разница в качестве защиты между взломанным протектором и купленным?
| Сообщение посчитали полезным: |
Ранг: 310.8 (мудрец), 29thx Активность: 0.43↘0 Статус: Участник
|
Создано: 16 января 2007 22:20 · Личное сообщение · #8
AlexDL пишет:
Что, MFC сложнее ломается, чем чистый С++ например?
Для чистого С++ имена функций(из DLL) видны, а для MFC нужно иметь иструменты, которые не на каждом углу лежат и плюс обилие версий этого MFC.
| Сообщение посчитали полезным: |
![](img/s8.gif) Ранг: 990.2 (! ! !), 380thx Активность: 0.68↘0 Статус: Модератор Author of DiE
|
Создано: 17 января 2007 00:23 · Личное сообщение · #9
AlexDL пишет:
делать так, чтобы её НЕ СМОГЛИ ИЗМЕНИТЬ в EXE-файле на другую переменную?
всё равно изменят) не парься.. лучше пиши прогу
----- [nice coder and reverser] | Сообщение посчитали полезным: |
Ранг: 1.2 (гость) Активность: 0=0 Статус: Участник
|
Создано: 17 января 2007 08:34 · Личное сообщение · #10
"всё равно изменят) не парься.. лучше пиши прогу"
В общем эта переменная является номером кошелька WM(моего). Те имеет вид: Z8576...). Хранится как CString str; str.Format("Z8576..."); , потом он "забивается" в ShellExecute(.....) для открытия WM Keeper
А что если численную честь кошелька хранить в int? Тогда будем иметь:
int pock = 8576...;
CString str; str.Format("Z%d",pock");
Усложнит ли это его изменение?
Да, и как можно сделать, чтобы в ShellExecute(.....) нельзя было подставить свои данные?
Поможет ли макроподстановка ShellExecute?
Одни вопросы в общем)).
Подскажите пожалуйста, что тут лучше сделать.
ps. Протектором, конечно, пройдусь. Но ведь это не сильно надёжно, да и лучшая защита своей ведь считается.
| Сообщение посчитали полезным: |
Ранг: 1.2 (гость) Активность: 0=0 Статус: Участник
|
Создано: 17 января 2007 08:35 · Личное сообщение · #11
"Для чистого С++ имена функций(из DLL) видны, а для MFC нужно иметь иструменты, которые не на каждом углу лежат и плюс обилие версий этого MFC."
В предыдущем посте я упомянул макроподстановку(те #define _MFCFUNC _MYFUNC)
Поможет ли это усложнить "забивание" своих анных в функцию?
Алексей.
| Сообщение посчитали полезным: |
![](img/s7.gif) Ранг: 353.0 (мудрец) Активность: 0.37↘0 Статус: Участник resreveR
|
Создано: 17 января 2007 08:38 · Личное сообщение · #12
все равно подменят если надо будет - не парься
----- Тут не могла быть ваша реклама | Сообщение посчитали полезным: |
Ранг: 1.2 (гость) Активность: 0=0 Статус: Участник
|
Создано: 17 января 2007 08:42 · Личное сообщение · #13
Так а к чему тогда вообще защищать проги, если всё подменят? Должны же быть способы защиты, чтобы нельзя было подменить.
| Сообщение посчитали полезным: |
![](img/s5.gif) Ранг: 120.9 (ветеран), 5thx Активность: 0.08↘0 Статус: Участник Programmer and reverser
|
Создано: 17 января 2007 09:24 · Личное сообщение · #14
ну если найдешь или напишешь криптор, который никто снять не сможет, то будет такой способ.
----- Уважайте других и пишите грамотно. | Сообщение посчитали полезным: |
Ранг: 203.3 (наставник) Активность: 0.22↘0 Статус: Участник UPX Killer -d
|
Создано: 17 января 2007 09:37 · Личное сообщение · #15
AlexDL пишет:
А есть разница в качестве защиты между взломанным протектором и купленным?
Да, есть. Купленый приватный протектор понадежнее спижженого, тем более, если ты делаешь свою прогу платной и собираешься её продавать, то сама библия программиста велит: "Не юзайте пижженый прот, да не захачены будете."
----- Я медленно снимаю с неё UPX... *FF_User* | Сообщение посчитали полезным: |
![](img/s6.gif) Ранг: 240.5 (наставник) Активность: 0.19↘0 Статус: Участник Author of ACKiller
|
Создано: 17 января 2007 10:11 · Личное сообщение · #16
AlexDL пишет:
Да, и как можно сделать, чтобы в ShellExecute(.....) нельзя было подставить свои данные?
Нельзя. Если юзаешь апи, то оно банально перехватывается и аргументы меняются на желаемые, вне зависимости от того, как эта строка образуется.
| Сообщение посчитали полезным: |
![](img/s8.gif) Ранг: 990.2 (! ! !), 380thx Активность: 0.68↘0 Статус: Модератор Author of DiE
|
Создано: 17 января 2007 10:51 · Личное сообщение · #17
AlexDL ну если на то пошло, то используй какие нибудь ариф. операции с номером, а лишь
потом выводи. ну можно ещё и целостность этого участка проверять на наличие изменений...
----- [nice coder and reverser] | Сообщение посчитали полезным: |
Ранг: 1.2 (гость) Активность: 0=0 Статус: Участник
|
Создано: 17 января 2007 19:54 · Личное сообщение · #18
"AlexDL ну если на то пошло, то используй какие нибудь ариф. операции с номером, а лишь
потом выводи. ну можно ещё и целостность этого участка проверять на наличие изменений..."
Это я так понимаю, тоже сломають, лишь отсрочка по времени будет?
"Купленый приватный протектор понадежнее спижженого"
Хорошо, это важно знать.
"Нельзя. Если юзаешь апи, то оно банально перехватывается и аргументы меняются на желаемые, вне зависимости от того, как эта строка образуется."
А если не API использовать, а переписать ShellExecute на чистый С++, те свою ф-ию сделать, это поможет?
| Сообщение посчитали полезным: |
![](img/s7.gif) Ранг: 353.0 (мудрец) Активность: 0.37↘0 Статус: Участник resreveR
|
Создано: 17 января 2007 22:04 · Личное сообщение · #19
еще раз говорю - если очень надо будет - все равно сломают. в аспре вон константы несколько раз пошифрованы и контр. сумма проверяется, и все подменяется на ура..
----- Тут не могла быть ваша реклама | Сообщение посчитали полезным: |
Ранг: 162.2 (ветеран) Активность: 0.09↘0 Статус: Участник
|
Создано: 18 января 2007 00:23 · Поправил: asd · Личное сообщение · #20
AlexDL пишет:
А если не API использовать, а переписать ShellExecute на чистый С++, те свою ф-ию сделать, это поможет?
Во весело будет, если каждая прога за собой начнёт таскать свои ShellExecute, LoadLibrary и т.д.
AlexDL
Int 2e юзай
| Сообщение посчитали полезным: |
Ранг: 1.2 (гость) Активность: 0=0 Статус: Участник
|
Создано: 18 января 2007 09:13 · Личное сообщение · #21
"Int 2e юзай"
А что это такое?
"еще раз говорю - если очень надо будет - все равно сломают. в аспре вон константы несколько раз пошифрованы и контр. сумма проверяется, и все подменяется на ура.."
Понятно, в общем, что можно сделать - это отсрочить время взлома, те усложнить его.
Либо другой подход - использовать специфику работы проги. Моя прога в нете должна работать, общаться с сервером. Видимо разумно ключевые ф-ии переложить на серверную часть, чтобы взлом проги с целью "стащить" её себе стал бессмысленным.
Алексей.
| Сообщение посчитали полезным: |
![](img/s6.gif) Ранг: 240.5 (наставник) Активность: 0.19↘0 Статус: Участник Author of ACKiller
|
Создано: 18 января 2007 09:55 · Личное сообщение · #22
AlexDL пишет:
А что это такое?
Прерывание, запрос в нулевое кольцо. В зависимоти от содержания регистров будет осуществляться вызов различных функций. Ищи в гугле - инфы дох..я
AlexDL пишет:
Видимо разумно ключевые ф-ии переложить на серверную часть, чтобы взлом проги с целью "стащить" её себе стал бессмысленным.
Такой подход всегда хорощ для защиты. Только не будет ли она проэмулирована на клиентской стороне? (Что надо ты не сказал, так что мыслю абстрактно =) )
| Сообщение посчитали полезным: |
Ранг: 1.2 (гость) Активность: 0=0 Статус: Участник
|
Создано: 18 января 2007 10:35 · Личное сообщение · #23
Спасибо за советы. Многое прояснилось.
Алексей.
| Сообщение посчитали полезным: |