Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
2-1234257405
Scot Storch
2009-02-10 12:16
2009.03.29
службы (сервисы)


15-1232691373
Труп Васи Доброго
2009-01-23 09:16
2009.03.29
Поиск по "иерархической" БД


2-1233924528
bioss
2009-02-06 15:48
2009.03.29
Работа с кодировками в Delphi


2-1233838460
Allizar
2009-02-05 15:54
2009.03.29
1C и Delphi 7


15-1232560546
Михаил2
2009-01-21 20:55
2009.03.29
маленький вопрос по си





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский