| 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 програм | 










)

 






 Для печати