
04.11.2006, 00:50
|
|
Постоянный
Регистрация: 22.04.2006
Сообщений: 566
Провел на форуме: 1325772
Репутация:
517
|
|
Раскрою секрет криптора-кашеварителя 
вся его суть заключается в изменении сигнатур программы 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. // завершаем работу)
|
|
|