Воскресенье, 22.12.2024, 09:02 Приветствую вас Гость | Группа "Гости" 
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: xXxSh@dowxXx, Anton93, Волк-1024  
Шифрование имени функции Delphi
toorookДата: Воскресенье, 26.10.2014, 07:59 | Сообщение # 1
Был не раз
Зарегистрирован: 04.09.2014
Группа: Пользователи
Сообщений: 11
Статус: Offline
Всем Hi! Итак, есть такой хук:
Код
k_OldKbhik := SetWindowsHookEx(WH_KEYBOARD, @KbHik, HInstance, 0);

Возможно ли SetWindowsHookEx зашифровать ксором, а при вызове расшифровывать обратно?
Например, как здесь, шифрование значения имени окна:
Код
FindWindow(nil, pchar(CodeS('аӇхЂГТӦЀӷ0ѫоЮҊЬ‘*et*6Mæ')));

В общем мне надо скрыть это от глаз АВ.
Еще видел в сети пример (не могу найти, вытаскивал его из кеша гугла.) - там чел на форуме, показывал исходник, где из функции вызывает функцию winapi с пошифрованым именем.
Хелп... smile
Как вызовы WinApi прячуться от АнтиВирей? В какую строну копать?


mr.toorook@jabber.ru
 
SlashДата: Воскресенье, 26.10.2014, 10:44 | Сообщение # 2
Постоянный
Зарегистрирован: 20.12.2012
Группа: Пользователи
Сообщений: 161
Статус: Offline
Я в этом деле не мастер, но мне кажется в этом толку не будет, у почти каждого АВ есть эвристика, которая сразу эти дела остановит.
 
Anton93Дата: Воскресенье, 26.10.2014, 15:02 | Сообщение # 3
Продвинутый
Зарегистрирован: 06.01.2010
Группа: Модераторы
Сообщений: 320
Статус: Offline
toorook, вот я как то объяснял http://delfcode.ru/forum/10-1148-8383-16-1388676469
но это очень примитивный метод. сейчас все намного сложнее вызывается, так как многое уже эмулируеся. для изучения сойдет. хотя для полного FUD есть очень много тонкостей вызова апи


ICQ: 41896
 
Anton93Дата: Воскресенье, 26.10.2014, 15:04 | Сообщение # 4
Продвинутый
Зарегистрирован: 06.01.2010
Группа: Модераторы
Сообщений: 320
Статус: Offline
Slash, толк есть. поверь. особенно эффективно используется при написании базонезависимого кода.

ICQ: 41896
 
toorookДата: Воскресенье, 26.10.2014, 16:03 | Сообщение # 5
Был не раз
Зарегистрирован: 04.09.2014
Группа: Пользователи
Сообщений: 11
Статус: Offline
Цитата Anton93 ()
Slash, толк есть. поверь. особенно эффективно используется при написании базонезависимого кода.

Спс тебе... я видать не доглядел. несколько часов форум ковырял... спс. Уже есть мысли по доработке))) Толк есть однозначно.


mr.toorook@jabber.ru
 
Волк-1024Дата: Воскресенье, 26.10.2014, 16:38 | Сообщение # 6
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
Пригодится думаю:
Код

type
    TByteArray = array of Byte;

procedure RC4(Data, Key: Pointer; DataSize: DWORD; KeySize: BYTE); overload;
var
    Temp: BYTE;
    Result: PBYTE;
    X, Y, Z: DWORD;
    RB: array[BYTE] of DWORD;
begin
    if Assigned(Data) and (Assigned(Key)) and (KeySize>0) then
    try
       for X:=0 to 255 do
          RB[X]:=X;
       X:=0;
       Y:=0;
       Z:=0;
       for X:=0 to 255 do
       begin
          Y:=(Y+RB[X]+(TByteArray(Key)[X mod KeySize])) mod 256;
          Temp:=RB[X];
          RB[X]:=RB[Y];
          RB[Y]:=Temp;
       end;
       X:=0;
       Y:=0;
       Z:=0;
       Result:=Data;
       for X:=0 to (DataSize-1) do
       begin
          Y:=(Y+1) mod 256;
          Z:=(Z+RB[Y]) mod 256;
          Temp:=RB[Y];
          RB[Y]:=RB[Z];
          RB[Z]:=Temp;
          Result^:=Result^ xor (RB[(RB[Y]+RB[Z]) mod 256]);
          Inc(Result);
       end;
    except
    end;
end;

function RC4(Str: string; Key: string): string; overload;
begin
    Result:=Str;
    RC4(@Result[1], @Key[1], (Length(Result)), (Length(Key)));
end;  


Pascal, C\C++, Assembler, Python
 
  • Страница 1 из 1
  • 1
Поиск:

delphicode.ru © 2008 - 2024 Хостинг от uCoz