![]() |
eXeL@B —› Основной форум —› Защита от анализа delphi програм |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 18 августа 2006 10:19 · Личное сообщение · #1 |
|
Создано: 18 августа 2006 10:24 · Личное сообщение · #2 |
|
Создано: 18 августа 2006 10:53 · Личное сообщение · #3 |
|
Создано: 18 августа 2006 12:18 · Личное сообщение · #4 |
|
Создано: 18 августа 2006 12:47 · Личное сообщение · #5 nope пишет: после снятия прота все имена как на ладони Вроде как на ладони Лучше кодить на C++, и вставлять в компилированный код антиотладку на асм (например, основываясь на командах переменной длины и т.п). А на Делфи код легко анализировать после распаковки. ----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. ![]() |
|
Создано: 18 августа 2006 13:09 · Личное сообщение · #6 Crawler Это ещё спорно, что легче анализировать, Delphi или С++ код после распаковки, преимущество анализа кода делфи программ только в том, что там проще найти обработчики, но зато делфи так засоряет код своими процедурами, иногда полсотни ret'ов пройдёшь и всё равно никуда не выйдешь... так что спорно это, спорно... ![]() |
|
Создано: 19 августа 2006 05:20 · Личное сообщение · #7 |
|
Создано: 19 августа 2006 06:48 · Личное сообщение · #8 |
|
Создано: 19 августа 2006 07:29 · Поправил: Paxan · Личное сообщение · #9 NaumLeNet ты уверен? возмём кусок дампа из dede rbNotEqu: TRadioButton; rbMoreEqu: TRadioButton; rbLessEqu: TRadioButton; Splitter3: TSplitter; paVisible: TPanel; btVisPanel: TSpeedButton; acAddDisk: TAction; Adddiskwizard1: TMenuItem; gbActors: TGroupBox; JvEnterAsTab: TJvEnterAsTab; ppGetInfo: TPopupMenu; Scanneddisk1: TMenuItem; FromInternet1: TMenuItem; Cancel1: TMenuItem; acGetInfoNet: TAction; fromfile1: TMenuItem; FromInternet2: TMenuItem; paPictureMain: TPanel; acFormRegister: TAction; Register1: TMenuItem; miNew: TMenuItem; N4: TMenuItem; miOpen: TMenuItem; acNewBase: TAction; procedure acFormFirmExecute(Sender : TObject); procedure acFormFamilyExecute(Sender : TObject); procedure acFormJanreExecute(Sender : TObject); procedure acFormCodecExecute(Sender : TObject); procedure miExitClick(Sender : TObject); procedure acFormCategoryExecute(Sender : TObject); procedure FormShow(Sender : TObject); procedure cbCategoryChange(Sender : TObject); procedure grDisksExit(Sender : TObject); procedure grDisksEnter(Sender : TObject); procedure grMoviesEnter(Sender : TObject); procedure grMoviesKeyDown(Sender : TObject); procedure acSortJanreExecute(Sender : TObject); procedure PageControlChange(Sender : TObject); procedure cbJanreChange(Sender : TObject); procedure grDisksTitleClick(Sender : TObject); procedure grMoviesTitleClick(Sender : TObject); ![]() |
|
Создано: 19 августа 2006 07:30 · Личное сообщение · #10 |
|
Создано: 19 августа 2006 08:35 · Личное сообщение · #11 |
|
Создано: 19 августа 2006 08:43 · Личное сообщение · #12 |
|
Создано: 19 августа 2006 11:52 · Личное сообщение · #13 |
|
Создано: 19 августа 2006 13:40 · Личное сообщение · #14 |
|
Создано: 19 августа 2006 18:56 · Личное сообщение · #15 |
|
Создано: 19 августа 2006 19:10 · Личное сообщение · #16 |
|
Создано: 24 августа 2006 16:34 · Личное сообщение · #17 |
|
Создано: 31 августа 2006 08:58 · Личное сообщение · #18 |
|
Создано: 02 октября 2006 02:18 · Личное сообщение · #19 |
|
Создано: 02 октября 2006 02:42 · Поправил: KingSise · Личное сообщение · #20 Вот еще одна методика строки шифровать, на мой взгляд, довольно удачная реализвция. Цитата: Delphi String Protect осуществляет защиту строк в исходниках, что после компиляции защитит программу от крэкеров. Строки в исходниках превращаются в зашифрованный массив байт, который расшифровывается по мере необходимости во время работы скомпилированной программы, таким образом, сам исполянемый файл не содержит строк в открытом виде и тем самым сильно противодействует взлому программ путем дизассемблирования и анализа кода программы. "расшифровывается по мере необходимости" - вот это мне больше всего понравилось в Delphi String Protect --> СКАЧАТЬ (541 Кб, Версия 1.1) <-- http://bgsopt.com/dsp10.zip ----- -=истина где-то рядом=- ![]() |
|
Создано: 02 октября 2006 04:17 · Личное сообщение · #21 |
|
Создано: 02 октября 2006 06:04 · Личное сообщение · #22 я про этот Delphi String Protect и говорил, попалась прога-лажа-2003годаб10;стоит ,а мучался дня 3. вот кстати ссылка http://exelab.ru/f/action=vthread&topic=6198&forum=5&page= -1 ![]() |
|
Создано: 03 октября 2006 02:13 · Личное сообщение · #23 sats, тоже ее есследовал, только вот сложного там ничего не нашол. Шифрование строк там впринцепе и не нужно, процедура проверки находится очень легко... MiHaN пишет: Единственный выход - шифрование важных функций, причём желательно с привязкой к ID Сильно сказано (!), только вот грамотных реализаций я пока еще не встречал. Возможно все сведется к тому, что просто понадобится один(!) валедный ключ. _________________________ Незнаю насколько ниже написанное будет по теме, вобщем встретил вот электронную книжку, защищенную протектором с COINSOFT.RU Но даже при наличии верного ключа, но с другого компа - книгу открыть не удалось пока. Вот и случайно пришла в голову мысль, может таким способом можно также исполняемые файлы защищать? Если кому интересно - могу залить книгу с ключами... ----- -=истина где-то рядом=- ![]() |
|
Создано: 03 октября 2006 21:02 · Личное сообщение · #24 |
|
Создано: 03 октября 2006 21:11 · Личное сообщение · #25 |
|
Создано: 03 октября 2006 21:57 · Личное сообщение · #26 |
|
Создано: 03 октября 2006 22:25 · Личное сообщение · #27 sats пишет: как я понимаю для дешифрования необходимо знать алгоритм шифрования Этот алгоритм будет 'привязан' к каждой зашифрованной строке. Обычно, это код вида: PUSH Encrypted_String CALL Decoder // Do smth with EAX here Другой частый трюк - вызов декодера в начале функции и энкодера - в конце. При вызове зашифрованная функция расшифровывает себя в памяти, выполняется - и снова зашифровывает (обычно, через ROL/ROR). В любом случае, зашифрованные куски видны в дампе даже невооруженным глазом - они просто КРИЧАТ о том, что зашифрованы, а так как дешифровщик чаще всего один на все строки (с кодом, обычно, не так), то пройдясь по перекрестным ссылкам моментально обнаруживаешь все статические вызовы. Дополнительный брэйк на вход в дешифровщик позволит отловить и динамические ссылки. Понимать сам алгоритм (де)шифрования обычно нет необходимости - либо RIP кода в собственный дешифровщик, либо брэйк на выходе - и хватвем дешифрованную строку 'тепленькой'. Стойкость алгоритма не имеет значения - ключ всегда 'под ковриком'. ![]() |
|
Создано: 04 октября 2006 01:49 · Личное сообщение · #28 |
|
Создано: 04 октября 2006 02:30 · Личное сообщение · #29 |
|
Создано: 04 октября 2006 04:41 · Личное сообщение · #30 MiHaN Для танкистов ...... вопрос был поставлен так: nope пишет: После компиляции в среде delphi/builder и последующей декомпиляции программами аля DeDe, в файле многое становится понятно - название используемых компонентов, переменных и т.д. Существую ли средства, которые изменяют эти имена на неосмысленный мусор сохраняя работоспособность программы? какие API ? какой GetWindowText ? ![]() |
. 1 . 2 . >> |
![]() |
eXeL@B —› Основной форум —› Защита от анализа delphi програм |