• XSS.stack #1 – первый литературный журнал от юзеров форума

Лагоритм действий...

DarckSol

(L1) cache
Пользователь
Регистрация
17.03.2008
Сообщения
894
Реакции
182
Такой вопрос... Не могу никак догнать, как сделать так, что бы зашифрованная функция исполнялась...
Ситуация такая... Есть функция в открытом виде... Шифруем её ну скажем функцией StrToCript пох с каким алгоритмом, есть обратная функция расшифровки....CriptToStr... Так вот... как сделать что бы ну скажем написанная отдельно функция исполняла зашифрованную.... не могу никак догнать...
Покажите на простейшем примере ShowMessage('Iap..');
Среда разработки Delphi
 
очень некорректный вопрос ... в первую очередь вызванный из-за отсутсвия базовых знаний PE формата и алгоритма работы системного загрузчика...
так как это видишь ты - есть способ написания этой функции в виде шеллкода , расшифровка его во время выполнения и передача управления на него.
Или после компиляции проги - ручной крипт, что требует тоже неслабой подготовки...

смотря что ты имеешь ввиду - если ты хочешь во время выполнения программы зашифровать в памяти а потом прии определенном расшифровать это немного полегче
 
Написав функцию его нужно зашифровать... после этого во время работы программы эту функцию нужно вызвать, но она зашифрована полностью... нужно использовать функцию для расшифровки и выполнить саму функцию, PE тут не причём, исходник открыт, сам пишу сижу...
 
Я выдумал алгоритм шифрования... придумал функцию которая ну что то делает............. Дальше я её шифрую этим алгоритмом, пишу функцию взаимно обратную для её расшифровки... Вопрос... как выполнить функцию....
пример....
Код:
...
var
s: String;
...
function strtoblabla (...):...
begin
end;
...
s:='!@#$%^&&**(!@!@';//НУ как то так...
showmessage(blablatostr(s));
Тут всё ясно... расшифровываем и показываем сообщение зашифрованное ранее... полная бессмыслица...
Но суть, если зашифровать целиком функцию... как её выполнить в таком виде на примере выше указанного.... То бишь надо довести до того, что бы при ну скажем нажатии кнопки, функция расшифровалась и выполнилась...
 
просто имей ввиду что то что ты пишешь на делфи это абстрактный язык понятный для тебя , компилятор
строчку типа ShowMessage('string') переводит в ассемблерный код и именно асм-код зашивает в екзешник

push 0
push Caption
push AdrString
call MessageBoxA

а в самом екзешние будет типа такого


push 0
push 404035 // адрес в секции данных гдележит строка
push 404080 // это тоже
call 406015 // адрес в секции импорта на ascii строку функции MessageBoxA или на прямой адрес в памяти где находится MessageBoxA то есть adr = GetProcAddress(GetModuleHandle('user32'),'MessageBoxA')

ето в .Net можно выполнять код так как ты хочешь
 
то есть ты шифруешь сам строковый вид функции ? smile.gif жесть...
Охренеть я подстолом :)
Короче для того чтобы "зашифровать функцию" надо ее сначала скомпилировать
(это типа шелл получить). Потом пройтись по результатам бинарным XOR например,
и наконец скормить получившийся набор бинарных данных функции дешифратору в сорце (причем надо учесть чтобы не произошло сдвига адресов всех апи и прочего используемого в получившемся после компиления функи исходной шелле).
В результате работы дешифратора получится опять таки бинарь, но он будет понимать процессор как набор инструкций. Необходимо этот вновь обретенный шелл выложить в удобное место в памяти и заставить проц его обработать типа такой командой на асме:
Код:
push <параметр 2>
push <параметр 1>
push <параметр 0>
call <адрес шелла в памяти>
pop eax // теперь в eax код возврата
Это все конечно условно написано, но в общих чертах как то так...
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх