Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.03.29;
Скачать: CL | DM;

Вниз

Скрыть строку от отладчика и хекс-редактора   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.022 c
15-1232457697
Ketty
2009-01-20 16:21
2009.03.29
Скачать BBC фильмы на Английском...


15-1232632612
Sha
2009-01-22 16:56
2009.03.29
Завтра пятница. Просто задумался :)


2-1233404283
Новичек
2009-01-31 15:18
2009.03.29
Очистка окна средствами WinAPI


6-1201453017
XakeP
2008-01-27 19:56
2009.03.29
Как написать прокси-сервер


2-1233739538
zorik
2009-02-04 12:25
2009.03.29
Смена типа на ходу