Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2013, 12:42   #1
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию Шифрования exe внешней утилитой между метками.

Здравствуйте, помогите пожалуйста сделать код для шифрования между метками внешней утилитой, пытаюсь сделать защиту как описано в данной статье http://www.delphikingdom.com/asp/vie...?catalogid=846 , написал саму процедуру, function CheckFileLabel, внешняя утилита находит метку в программе, я вот не могу понять как сделать шифрования между этими метками внешней утилитой, помогите чайнику
Winexcel вне форума Ответить с цитированием
Старый 28.08.2013, 13:54   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

В статье все описано и даны 2 великолепных примера, а под конец даже проверка CRC. Что не ясно?
Человек_Борща вне форума Ответить с цитированием
Старый 28.08.2013, 14:41   #3
asmprog
Пользователь
 
Регистрация: 10.08.2013
Сообщений: 67
По умолчанию

Втыкать в программу защиту, основанную на статье(тем более 2003 года)? Смело.

Последний раз редактировалось asmprog; 28.08.2013 в 19:53.
asmprog вне форума Ответить с цитированием
Старый 28.08.2013, 18:31   #4
IvaniuS
Форумчанин
 
Аватар для IvaniuS
 
Регистрация: 16.04.2007
Сообщений: 225
По умолчанию

а в делфи 7й какого года? и что там очень много изменений? в основах программирования и алгоритмизации что-то поменялось? стандарты ИСО когда были приняты? так что вопрос не к месту
IvaniuS вне форума Ответить с цитированием
Старый 28.08.2013, 18:41   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

IvaniuS, он это к тому, что описанную в статье, защиту очень легко обойти.
Человек_Борща вне форума Ответить с цитированием
Старый 28.08.2013, 19:56   #6
asmprog
Пользователь
 
Регистрация: 10.08.2013
Сообщений: 67
По умолчанию

IvaniuS, Человек_Борща прав, хотя я мысль не совсем точно передал(подредактировал). Ну, а если стандарты любите, криптографию и все новое - нынче модно с эллиптическими кривыми заморачиваться.
asmprog вне форума Ответить с цитированием
Старый 28.08.2013, 20:42   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
модно с эллиптическими кривыми заморачиваться
Каким боком это чудо к защите ПО?
Человек_Борща вне форума Ответить с цитированием
Старый 28.08.2013, 20:47   #8
asmprog
Пользователь
 
Регистрация: 10.08.2013
Сообщений: 67
По умолчанию

была бы фантазия, можно хоть прерывания от кофеварки использовать для выбора вектора инициализации, который потом для дешифровки секции(части) кода присобачить.
asmprog вне форума Ответить с цитированием
Старый 29.08.2013, 10:12   #9
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию

Вот что и куда нужно добавить в эту процедуру:
Код:
function CheckFileLabel(FileName: string; strlabel: string; var point: LongInt): boolean;
var
 F: file;
 currarray: array [1..8] of byte;
 lookarray: array [1..8] of byte;
 i: integer;
begin
 Result := false;
 point := -1;
 //Load labels
 for i := 1 to 8 do
 begin
  lookarray[i] := HexToByte(strlabel[pos('H',UpperCase(strlabel)) - 2] + 
                  strlabel[pos('H',UpperCase(strlabel)) - 1]);
  currarray[i] := 0;
  Delete(strlabel,1,pos('H',UpperCase(strlabel)));
 end;
 //Look for label
 AssignFile(F,FileName);
 FileMode := fmOpenRead;
 Reset(F,1);
 Seek(F,0);
 while not EOF(F) do
 begin
  for i := 1 to 7 do
   currarray[i] := currarray[i + 1];
  BlockRead(F,currarray[8],1);
  Result := true;
  for i := 1 to 8 do
   Result := Result and (currarray[i] = lookarray[i]);
  if Result then
  begin
   //point points to the last byte of label
   point := FilePos(F) - 1;
   break;
  end;
 end;
 CloseFile(F);
end;
Чтобы она шифровала вот таким методом:

Код:
var
 ptrAddr: Pointer; {Адрес процедуры CheckTrial}
 aByte: Byte; {Байт процедуры}
 dwOldProtect: DWORD;
begin
 ptrAddr := @CheckTrial;
 VirtualProtect(@CheckTrial, 4096, PAGE_READWRITE, @dwOldProtect);
 while ptrAddr <> @EndCheckTrial do
 begin
  Byte(ptrAddr^) := Byte(ptrAddr^) xor $25;
  aByte := Byte(ptrAddr^);
  Memo1.Lines.Add('0' + IntToHex(aByte, 2) + 'h');
  inc(Integer(ptrAddr));
 end;
end;
Winexcel вне форума Ответить с цитированием
Старый 29.08.2013, 11:20   #10
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

А вы статейку то дочитайте. И Все сразу будет понятно.
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с утилитой Dialog Linux Spb Фриланс 1 24.12.2011 21:44
Вызов внешней программы Macmeprag C# (си шарп) 1 14.05.2011 16:19
Подсчет контрольной суммы кода между метками Napkin Общие вопросы C/C++ 5 15.11.2010 18:54
Связывание с внешней БД voam Microsoft Office Access 11 30.12.2009 18:25
Помогите с метками в TAsm Mixim Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 21.12.2009 15:39