Форум: "Прочее";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];
ВнизСкрыть строку от отладчика и хекс-редактора Найти похожие ветки
← →
Eraser © (2009-01-27 22:29) [0]Допустим в программе есть определенная строка или несколько строк, которые не желательно видеть остальным из отладчика или хекс-редактора, но эта строка используется в программе. каким образом её можно скрыть от посторонних глаз?
понимаю, что можно зашифровать и уже в зашифрованном виде вставить в исходный код, расшифровывать уже в рантайм. но может есть другие способы?
PS упаковать программу спец. упаковищиком (Execryptor и т.п.) не предлагать.
← →
KilkennyCat © (2009-01-27 22:50) [1]
> или хекс-редактора
Каким макаром ты его обойдешь без шифрации?
← →
Eraser © (2009-01-27 23:36) [2]> [1] KilkennyCat © (27.01.09 22:50)
вот и мне интересно.
может можно каким-то хитрым способом записать символы.
← →
Кое кто (2009-01-27 23:46) [3]Нарисовать в виде картинки...Вставить в программу опознователь символов...
← →
Eraser © (2009-01-27 23:51) [4]> [3] Кое кто (27.01.09 23:46)
для этого нужно предварительно эту картинку нарисовать в граф. редакторе.
поясню задачу.
хотелось бы, чтобы в исходном коде было видно надпись в том или ином виде (пусть даже и передавая отдельные буквы какой-то функции), а в exe-не было видно.
← →
Городской Шаман (2009-01-28 00:22) [5]
> Eraser © (27.01.09 22:29)
>
> Допустим в программе есть определенная строка или несколько
> строк, которые не желательно видеть остальным из отладчика
> или хекс-редактора, но эта строка используется в программе.
> каким образом её можно скрыть от посторонних глаз?
JMP + $03(или не помню как, делал такое только для dos) и в разрыв вставить символ чтобы код интерпретировался по другому, как другие команды.
Ну и защита от отладчика перед началом выполнения функции.
Все равно профи даже зашифрованный код хакнет, доказано взломами StarForce.
← →
Andy BitOff © (2009-01-28 00:24) [6]> Eraser © (27.01.09 23:51) [4]
Вставить зашифрованную, а в коменте написать реальную строку.
← →
Германн © (2009-01-28 01:18) [7]
>
> Eraser © (27.01.09 22:29)
>
> Допустим в программе есть определенная строка или несколько
> строк, которые не желательно видеть остальным из отладчика
> или хекс-редактора, но эта строка используется в программе.
> каким образом её можно скрыть от посторонних глаз?
>
> понимаю, что можно зашифровать и уже в зашифрованном виде
> вставить в исходный код, расшифровывать уже в рантайм. но
> может есть другие способы?
>
> поясню задачу.
> хотелось бы, чтобы в исходном коде было видно надпись в
> том или ином виде (пусть даже и передавая отдельные буквы
> какой-то функции), а в exe-не было видно.
Ну и чем простой XOR не устоил?
Лёш, ты ведь не новичок. Или ты что-то не договариваешь?
← →
KilkennyCat © (2009-01-28 01:32) [8]
> Eraser © (27.01.09 23:51) [4]
>
(пусть даже и передавая отдельные буквы
> какой-то функции
Это частный случай шифрации...
Можешь тупо собрать ее из экзешника. Т.е уже в компилированном находишь те байты, котрые составят строку, и описываешь их места. Но это один хрен, шифрация. Спасет только от редактора.
← →
KilkennyCat © (2009-01-28 01:35) [9]
> Германн © (28.01.09 01:18) [7]
Бывает, мозги заклинивает... У меня, бывало, возникнет подобная проблема, нутром чую - неверно мыслю, а доказательства сам себе найти не могу.
← →
Германн © (2009-01-28 01:57) [10]
> KilkennyCat © (28.01.09 01:35) [9]
>
>
С AVR"ами реально работал?
← →
ketmar © (2009-01-28 01:59) [11]предлагаю скачивать её из интернета.
---
All Your Base Are Belong to Us
← →
Eraser © (2009-01-28 04:28) [12]> [5] Городской Шаман (28.01.09 00:22)
> JMP + $03(или не помню как, делал такое только для dos)
> и в разрыв вставить символ чтобы код интерпретировался по
> другому, как другие команды.
>
> Ну и защита от отладчика перед началом выполнения функции.
>
>
> Все равно профи даже зашифрованный код хакнет, доказано
> взломами StarForce.
да дело не в защите кода. кстати JMP + $03 не спасет от того, что строки прекрасно видно в хекс-редакторе, не говоря уж о спец. средаствах типа Иды.
> [7] Германн © (28.01.09 01:18)
да никакого секрета нет, просто хотелось бы автоматизировать процесс. дело не срочное вот и решил поинтересоваться, мож у кого хитрые наработки есть.
> [10] Германн © (28.01.09 01:57)
неа.
думаю все таки прийдется не изобретать велосипед (раз до меня не изобрели), а заксорить да и все. или в виде Base64 записать.
← →
test (2009-01-28 05:27) [13]Стеганография? Берем картинку и в конец дописываем инфу.
← →
Eraser © (2009-01-28 05:33) [14]> [13] test (28.01.09 05:27)
внимательно почитайте ветку. я не спрашивал о том, как можно зашифровать строку.
← →
Riply © (2009-01-28 06:12) [15]{$IFDEF DEBUG}
const
MySuperPuperString: string = "Hello Dolly !";
{$ELSE}
{$INCLUDE MySuperPuperString.inc} // в нем абракадабра
function MySuperPuperString: string; // конвертирует абракадабру в строку
{$ENDIF}
:) ?
← →
test (2009-01-28 06:42) [16]Eraser © (28.01.09 05:33) [14]
Стеганография, как раз изучает куда спрятать так чтобы не видно было.
← →
KilkennyCat © (2009-01-28 09:15) [17]
> Германн © (28.01.09 01:57) [10]
Да.
← →
Eraser © (2009-01-28 17:03) [18]> [15] Riply © (28.01.09 06:12)
да эт понятно. с этим проблем нет, даже без проверки на дебаг можно.
← →
Slym © (2009-01-29 13:07) [19]Не хранить строку целиком...
Собирать строку в рантайме в разных местах, но перед последним прыжком видна в памяти вся строка
← →
KSergey © (2009-01-29 13:48) [20]Использовать такой класс, который хранит строки зашифровано (не важно как) и/или (того лучше) ракидано по памяти, кусками (или перемешано все строки вместе, в том числе темповые).
Использовать такой компилятор, который при нормальном написании в исходниках строки раскидает ее нужным образом. Вероятно можно на стандартном колмпиляторе post-build обработкой.
Это все просто фантазии в разрезе "чтобы и в памяти целиком строку не было видно".
Как реализовать на паскале - не знаю.
← →
ketmar © (2009-01-29 14:15) [21]ладно, раз моя идея со скачиванием из интернетов не прокатила, дарю вторую: код-метаморф. (Розыч, ау! давай развлечёмся! %-)
---
All Your Base Are Belong to Us
← →
Rouse_ © (2009-01-29 14:51) [22]
> код-метаморф. (Розыч, ау! давай развлечёмся! %-)
Кстати о морфах, я тут давеча наткнулся на презабавнейший "метаморф" (lol), отсмеявшись даже ссылку на всякий запомнил, вот даж пригодилась :)
http://interpol.blog.ru/22694915.html
← →
ketmar © (2009-01-29 14:59) [23]>[22] Rouse_ © (2009-01-29 14:51:00)
мда. влияние журнала «хацкир» на неокрепший детский моск? (ну, и грамотность автора — в русском, не асме — тоже очень порадовала %-)
---
Understanding is not required. Only obedience.
← →
SP (2009-01-29 15:10) [24]
> хотелось бы, чтобы в исходном коде было видно надпись в
> том или ином виде (пусть даже и передавая отдельные буквы
> какой-то функции), а в exe-не было видно.
т.е. нужно чтобы в исходнике строка была нормальной, а в ехе-шнике уже зашифрованной...
Хм...
Например с integer можно было бы сделать так:
const ss:integer = 123456 xor 456752; типа в исходнике 123456, а в ехешнике уже нечто другое.
Нельзя ли также сделать и со строкой?
← →
Rouse_ © (2009-01-29 15:11) [25]А вообще постановка задачи плана "не желательно видеть остальным из отладчика " просто не выполнима :) Точнее выполнима, но только в случае отсутствия самой строки, в противном случае ее всегда можно увидеть :)
ЗЫ: пароль хочешь спрятать? :))
← →
KSergey © (2009-01-29 15:23) [26]> SP (29.01.09 15:10) [24]
> типа в исходнике 123456, а в ехешнике уже нечто другое.
Да и в переменной тоже :)
← →
ketmar © (2009-01-29 15:36) [27]>[25] Rouse_ © (2009-01-29 15:11:00)
дык я же сказал: из интернетов качать. %-)
---
Do what thou wilt shall be the whole of the Law.
← →
ketmar © (2009-01-29 15:37) [28]>[24] SP (2009-01-29 15:10:00)
>Нельзя ли также сделать и со строкой?
можно. проще всего написать для этого препроцессор.
---
All Your Base Are Belong to Us
← →
AndreyV © (2009-01-29 15:42) [29]> [27] ketmar © (29.01.09 15:36)
> >[25] Rouse_ © (2009-01-29 15:11:00)
> дык я же сказал: из интернетов качать. %-)
Тогда строку с URL придётся прятать.
← →
ketmar © (2009-01-29 15:46) [30]>[29] AndreyV © (2009-01-29 15:42:00)
>Тогда строку с URL придётся прятать.
чОрт! да, не подумал, извиняюсь… но тем не менее ответ соответствует условиям — оригинальной-то строки нет, и даже в отладчике не видно!
---
Understanding is not required. Only obedience.
← →
ketmar © (2009-01-29 15:47) [31]>[28] ketmar © (2009-01-29 15:37:00)
по поводу препроцессоров: когда я писал ALISP, у меня препроцессором из «однодвижковой» версии с глобальными переменными генерилась «многодвижковая» версия с локальными. весьма удобно — отлаживаешь глобальную, и потом магически получаешь отлаженую локальную.
вообще, в Delphi как-то overlooked тема source code massagers.
---
Do what thou wilt shall be the whole of the Law.
← →
Eraser © (2009-01-29 16:51) [32]> [25] Rouse_ © (29.01.09 15:11)
> Точнее выполнима, но только в случае отсутствия самой строки,
> в противном случае ее всегда можно увидеть :)
> ЗЫ: пароль хочешь спрятать? :))
нет, название ключа реестра.
> [31] ketmar © (29.01.09 15:47)
препроцессор...вот это ближе к теме )
года два назад, если не ошибаюсь, Джо выкладывал на форуме пример, который использовал какой-то специализированный делфевский API для изменения исходного кода перед компиляцией (или что то в этом роде).
повторю - вопрос скорее больше теоретический, чем практический... на практике не составит труда вручную зашифровать какую-то конретную строку и вставить в исходный код.
> [20] KSergey © (29.01.09 13:48)
кстати этот пост навел на мысль, что сабж можно реализовать, написав нечто вроде своего редактора свойств и грузить данные непосредственно в дизайнере форм, соответсвенно при загрузке в дизайн-тайм их и шифровать... интересно.
← →
ketmar © (2009-01-29 16:53) [33]>[32] Eraser © (2009-01-29 16:51:00)
ну, я проекты из консоли собирал завсегда, так что препроцессор у меня был обычный .exe.
---
Understanding is not required. Only obedience.
← →
Rouse_ © (2009-01-29 17:19) [34]
> нет, название ключа реестра.
А смысл? При первом же обращении к реестру это имя без всякого отладчика будет как на ладони, благо утилиты от Руссиновича в наличии имеются...
← →
Eraser © (2009-01-29 17:28) [35]> [34] Rouse_ © (29.01.09 17:19)
безусловно.
если говорить о данном конкретном случае, то название ключа реестра может смутить исследователя и он разберется, каким образом функционирует некое ноу-хау. а если исследователь это название не увидит в коде, то он и не подумает, что нужно отслеживать реестр ;-)
но не суть важно.
← →
Rouse_ © (2009-01-29 17:58) [36]
> а если исследователь это название не увидит в коде
эээ... да кто-ж так сразу с нахрапа в код-то лезет? :)
Сначала снимается полный лог, что куда обращается, по CallStack-у разворачиваются адреса вызовов и только потом приступают к анализу кода :)
← →
Eraser © (2009-01-29 21:35) [37]> [36] Rouse_ © (29.01.09 17:58)
> Сначала снимается полный лог, что куда обращается, по CallStack-
> у разворачиваются адреса вызовов и только потом приступают
> к анализу кода :)
надесюсь, кстати не беспочвенно, что интересующиеся не в курсе насчет того, как надо :) ну если профи возьмется за дело, то уж ничего не спасет, но и нет задачи сделать панацею против всех. хотя бы просто против большинства, чтобы явно в глаза не бросалось.
← →
KilkennyCat © (2009-01-29 21:50) [38]
>
> эээ... да кто-ж так сразу с нахрапа в код-то лезет? :)
Я :)
← →
brother © (2009-01-30 03:59) [39]когдато делал так:
const st="qwe1233werrtt"; //по алгоритму xor или еще какому шифрованная строка
...
label1.caption:=Decode(st); //где decode функция декодирования
← →
brother © (2009-01-30 04:06) [40]или даже так:
const st1="qwe123"; //по алгоритму xor или еще какому шифрованная строка
st2="3werrtt"; //по алгоритму xor или еще какому шифрованная строка
...
label1.caption:=Decode(st1+st2); //где decode функция декодирования
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.049 c