Показать сообщение отдельно

  #8  
Старый 04.11.2006, 00:50
Talisman
Постоянный
Регистрация: 22.04.2006
Сообщений: 566
Провел на форуме:
1325772

Репутация: 517


Отправить сообщение для Talisman с помощью ICQ
По умолчанию

Раскрою секрет криптора-кашеварителя
вся его суть заключается в изменении сигнатур программы 1.exe - чтобы не палили антивири, как это проще всего сделать? менять местами байты экзешника, причем чтобы не гемороится - симметричным менять алгоритмом - запустил криптор четное число раз - ничего не изменилось, а нечетное - прога превратилась в мусор.
Вот код на Делфи:
Код:
program krip;
uses
  SysUtils, Classes; // минимальный "карсет" программы
var
  f:tfileStream; // переменная, в которую поместим криптуемый файл
  s1,s2:byte; // перемещаемые байты
  s,ss:int64; // адреса в 64 ричной системе
  i:integer; // просто счетчик)
begin
 f:=tfilestream.create('1.exe', fmOpenReadWrite); // грузим файл на чтение и запись
 i:=222; // устанавливаем начальное значение счетчика в 222, чтобы не затереть PE - заголовок (хотя можно и затирать ) )
  while i<int(f.Size) do begin // пускаем цикл до длины файла
   s:=int64(i); // преобразуем счетчик в адрес типа int64
   ss:=int64(i+1); //получаем адрес следующего байта
   f.seek(s, soFromBeginning); // переходим в файле на s байт с начала файла
   f.read(s1,sizeof(s1)); // читаем значение байта в  s1
   f.seek(ss, soFromBeginning); // переходим в байт ss (следующий за s)
   f.read(s2,sizeof(s2)); // считываем s2
   f.seek(s, soFromBeginning); // переходим на s
   f.Write(s2,sizeof(s2)); // пишем s2
   f.seek(ss, soFromBeginning); // переходим на ss
   f.Write(s1,sizeof(s1)); // пишем s1
       // т.е. мы поменяли местами 2 идущих подряд байта
   i:=i+2; // увеличиваем счетчик на 2, чтобы менять байты парами, а не "лесенкой"
  end; // идем в начало цикла while
 f.free; // освобождаем файл
end. // завершаем работу)