Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / В exe файле можно редактировать любые строковые переменные / 25 сообщений из 31, страница 1 из 2
26.09.2007, 20:04:08
    #34829453
Yurman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
Компилирую в Visual c++ 2005. Если полученный exe-шник открыть в текстовом редакторе, например Notepad++ то среди прочих каракуль можно найти любые строки котрые использовались и поменять их значения. Каким образом этого избежать?
...
Рейтинг: 0 / 0
26.09.2007, 20:08:16
    #34829461
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
Yurman wrote:

> Каким образом этого избежать?
1) Никаким - смысла нет шифроваться, если кому-то надо будет, строки все
равно найдут и выкусят.
2) Можешь запаковыать файл upx'ом, но его можно распаковать.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
26.09.2007, 20:52:49
    #34829534
Yurman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
Да понятно что взлом это дело времени, но время это можно и растянуть.
Мне можно и односторонне зашифровать, чтобы хотябы между собой сравнить. Может можно какой нибудь макрос в #define сделать чтобы я в него строку вставил а он уже в exe-шник шифрованное вставил?
...
Рейтинг: 0 / 0
26.09.2007, 21:33:00
    #34829586
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
написать утилиту что при билде - бежит по тексту и криптует его перед компиляцей.

А в местах использования вместо char *a = "str"; писать char *a = decrypt("str");

что-то типа такого.
...
Рейтинг: 0 / 0
26.09.2007, 23:09:14
    #34829701
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
Lepsik wrote:

> написать утилиту что при билде - бежит по тексту и криптует его перед
> компиляцей.
>
> А в местах использования вместо char *a = "str"; писать char *a =
> decrypt("str");
>
> что-то типа такого.
>
Эта идея уже обсуждалась. Пришли же ведь к решению, что она
неработоспособна - искомая строка все равно останется в файле.
Это
вот
тут Обсуждений на 2 страницы, с примерами, дизассемблированными
файлами, дампами и т.д.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
27.09.2007, 07:30:13
    #34829857
VladimirP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
Попробуй писать что-то типа
не
char mystring[] = "123";
а
char mystring[4];
mystring[0] = 49; // шестнацатиричное 31
mystring[1] = 50;
mystring[2] = 51;
mystring[3] = 0; // последний ноль
...
Рейтинг: 0 / 0
27.09.2007, 08:14:22
    #34829893
Вечность
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
VladimirPПопробуй писать что-то типа
не
char mystring[] = "123";
а
char mystring[4];
mystring[0] = 49; // шестнацатиричное 31
mystring[1] = 50;
mystring[2] = 51;
mystring[3] = 0; // последний нольКулхацкеров такие фокусы не остановят:)

По теме:
Решений мне видится два штуки
1) Хранить в EXE не сами строки а их хэши.
2) Если п.1 невозможен, то остаётся только шифровать...
...
Рейтинг: 0 / 0
27.09.2007, 08:43:51
    #34829923
XDiaBLo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
VladimirPПопробуй писать что-то типа
не
char mystring[] = "123";
а
char mystring[4];
mystring[0] = 49; // шестнацатиричное 31
mystring[1] = 50;
mystring[2] = 51;
mystring[3] = 0; // последний ноль
Дык в компилированном виде это одно и то же! Эдак ты тока исходник запутаешь, а после компиляции одно и то же выйдет...
...
Рейтинг: 0 / 0
27.09.2007, 09:09:55
    #34829980
Вечность
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
XDiaBLo VladimirPПопробуй писать что-то типа
не
char mystring[] = "123";
а
char mystring[4];
mystring[0] = 49; // шестнацатиричное 31
mystring[1] = 50;
mystring[2] = 51;
mystring[3] = 0; // последний ноль
Дык в компилированном виде это одно и то же! Эдак ты тока исходник запутаешь, а после компиляции одно и то же выйдет...Правдо??? Даже если отключить оптимизатор... или немного усложнить ему жись, типа так:
Код: plaintext
1.
2.
3.
4.
char mystring[ 4 ];
mystring[ 0 ] = atoi("49");
mystring[ 1 ] = mystring[ 0 ]+ 1 ;
mystring[ 2 ] = mystring[ 1 ]+ 1 ;
mystring[ 3 ] =  0 ; 
...
Рейтинг: 0 / 0
27.09.2007, 10:03:21
    #34830118
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
Yurman пишет:

> Компилирую в Visual c++ 2005. Если полученный exe-шник открыть в
> текстовом редакторе, например Notepad++ то среди прочих каракуль можно
> найти любые строки котрые использовались и поменять их значения. Каким
> образом этого избежать?

Криптовать текст. Ключи выдавать только авторизованным пользователям.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
27.09.2007, 13:16:36
    #34830976
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
Вечность wrote:

> Хранить в EXE не сами строки а их хэши.
Как вы из хеша назад строку получите? Это же (если я правильно вас
понимаю) контрольная сумма, по сути.

XDiaBLo wrote:
> Дык в компилированном виде это одно и то же!
Не на всех компиляторах и не обязательно. Только это все равно не
поможет, так как такую последовательноть кода можно легко обнаружить, и
человек, пожелавший изменить строчку, только покрутит у виска и все
равно её переправит.

Зачем надо делать неизменяемость строк, если не секрет?

И вообще, по-моему, лучше не шифровать строки, а проверять целостность
программы, с отказом в запуске, если она была изменена. Хотя и это тоже
можно обойти.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
27.09.2007, 20:43:54
    #34832831
yuraiu02
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
Хеш можно делать только когда строка нужна для сравнения, а если надо получить значение он конечно же не поможет.
Просто строки используются например для хранения серийных номеров для проверки можно ли запускать на данном компьютере или нет, тоесть на этом основывается защита. Открыть в текстовом редакторе и поменять значение может любой, а вот если строку явно не видно это уже может >1% (ИМХО).
Мож упаковщик какойнидь использовать, правда я пока не знаю какой и как.
...
Рейтинг: 0 / 0
27.09.2007, 21:20:00
    #34832904
Yurman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
Если есть такая программа (упаковщик) которая сделает так что строк в текстовом редакторе не будет видно в явном виде (пусть это можно обойти), и которая будет иметь защиту от изменений ехешника (пусть тоже можно обойти) то подскажите какая.
...
Рейтинг: 0 / 0
27.09.2007, 23:58:24
    #34833098
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
ErV
Lepsik wrote:


Эта идея уже обсуждалась. Пришли же ведь к решению, что она
неработоспособна - искомая строка все равно останется в файле.


неправда есть решение. но пока только для bcb компилятора.

строка остается если темплейтами ходить, а макроассемблер работает на ура.

http://vx.netlux.org/lib/vzo09.html
...
Рейтинг: 0 / 0
28.09.2007, 05:11:09
    #34833222
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
Yurman wrote:

> то подскажите какая.
UPX.

Lepsik wrote:
>строка остается если темплейтами ходить, а макроассемблер работает на
ура.
>http://vx.netlux.org/lib/vzo09.html
Вы опять за свое? Я этот пример тестил, он не компилится 6м билдером,
msvc и g++.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
28.09.2007, 07:44:37
    #34833272
Вечность
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
ErV
Yurman wrote:

> то подскажите какая.
UPX.Витенька, скажи мне дорогой, сколько по-твоему времени потребуется кулхацкеру для того, чтобы воспользоваться ключиком "-d"?

2 Yurman:
Гораздо более действенное лекарство можно посмотреть, например тут .
...
Рейтинг: 0 / 0
28.09.2007, 10:34:42
    #34833627
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
Вечность wrote:

> Витенька, скажи мне дорогой, сколько по-твоему времени потребуется
> кулхацкеру для того, чтобы воспользоваться ключиком "-d"?
>
Просили *любую" программу.
Ещё есть, как я знаю, ASProtect. С лицензией за $100.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
28.09.2007, 20:56:05
    #34835975
Yurman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
Выбираю между UPX, AsProject и Yoda's protection
UPX распаковать получается проще всего, но можно будет попробовать его с програмками которые вроде как убирают все сведения из exe что он запакован UPX (забыл как называется да и для 3.1 версии пока не нашел)
С насчет ASProtect пока не знаю - легче его распаковывать или нет
Думаю остановиться на Yoda, она вроде как всякие наворота для защиты имеет, хотя и сжимает хуже. Конечно в инете валяются уже скрипты как эту защиту снять, если бы еще можно было скрыть что файл запакован Yoda-й. Но нет так нет и так сойдет.
...
Рейтинг: 0 / 0
01.10.2007, 07:14:36
    #34837410
XDiaBLo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
ErV
XDiaBLo wrote:
> Дык в компилированном виде это одно и то же!
Не на всех компиляторах и не обязательно. Только это все равно не
поможет, так как такую последовательноть кода можно легко обнаружить, и
человек, пожелавший изменить строчку, только покрутит у виска и все
равно её переправит.

Ха, это ещё почему это не на всех? Массив символов, это последовательность байтов, которую даже указателем можно пройтись, они по порядку идут, ЭТО ВСЕГДА И ВЕЗДЕ БУДЕТ ОДНО И ТО ЖЕ! Разве что если ты сам напишешь мегакрутой компилятор, который рассуёт это в разные места, и указатель мегакрутой сможет это всё по порядку пройтись... Страшно представить такое... Ассемблер я знаю, так что про то как это выглядит на низком уровне, вполне себе представляю.
...
Рейтинг: 0 / 0
01.10.2007, 07:16:36
    #34837411
XDiaBLo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
хотя я кажися понял что имеется в виду, присваивание в другом виде, хм, я думал про представление строки в памяти... Небось оптимизатор таки уберёт эти присваивания
...
Рейтинг: 0 / 0
01.10.2007, 07:23:05
    #34837412
XDiaBLo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
Проверил, и в самом деле, g++ не приводит это к простому присваиванию, я ошибался в достижениях современных оптимизаторов %)
...
Рейтинг: 0 / 0
01.10.2007, 09:58:21
    #34837555
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
по сабжу:

ну хорошо, сделал ты так, чтобы не было видно твоего текста в экзе-файле, дальше к тебе приходит чел и говорит у нас добавился новый человек в отделе ему нужен доступ к вашей программе, выдайте ему логин и/или пароль и установите такие-то права! Что ты будешь делать? заново пересобирать этот экзешник? Бред! Как по твоему зачем придумывают всякие хэш-операции и почему пароль делают высчитываемым по различным функциям, ищут простые числа большой длины?
Вот по этому никто таким вопрос и не задавался - это, по меньшей мере, не рационально, куда проще сделать менеджер управления правами доступа в твоей программе и хранить пароли в отдельном зашифрованном файле, всякие крипто-api к твоим услугам или, если хочешь попроще, используй для хранения паролей - БД, с возможностью шифрования, например, MS Access.
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
01.10.2007, 11:43:30
    #34837893
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
XDiaBLo wrote:

> ЭТО ВСЕГДА И ВЕЗДЕ БУДЕТ ОДНО И ТО ЖЕ!
Нет. Почитайте ссылку, которую я давал ранее. Там страницы через три
будет дизассемблированный листинг либо g++, либо msvc. Так вот. Строка
выкрутасами с макросами приводится к куче mov'ов - по одному на символ.
Только проблема в том, что строка в экзешнике все равно остается, и
последовательность mov'ов найти несложно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
01.10.2007, 11:44:41
    #34837899
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
Cerebrum wrote:

> ну хорошо, сделал ты так, чтобы не было видно твоего текста в
> экзе-файле
Вообще-то, автор вообще так и не сказал, на кой черт ему это надо.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
01.10.2007, 12:35:51
    #34838057
XDiaBLo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В exe файле можно редактировать любые строковые переменные
ErV
XDiaBLo wrote:

> ЭТО ВСЕГДА И ВЕЗДЕ БУДЕТ ОДНО И ТО ЖЕ!
Нет. Почитайте ссылку, которую я давал ранее. Там страницы через три
будет дизассемблированный листинг либо g++, либо msvc. Так вот. Строка
выкрутасами с макросами приводится к куче mov'ов - по одному на символ.
Только проблема в том, что строка в экзешнике все равно остается, и
последовательность mov'ов найти несложно.
Я уже сам проверил, скомпилировал на g++, строки нет, оптимизации такое не оптимизируют, да и поначалу я просто неправильно понял постановку вопроса. Я почему то подумал о представлении этой строки в памяти, и не подумал что оптимизатор такое не оптимизирует... Но в следующий раз буду сразу проверять свои догадки на практике.

А насчёт кода, и всяких там строк, допустим во всяких Java и C# существует такая вещь как обфускаторы кода, интересно, а они скрывают текст? Или только делают код запутанным? Расскажите кто в курсе, а то лень проверять самому...
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / В exe файле можно редактировать любые строковые переменные / 25 сообщений из 31, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]