eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС
выпущен 4 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: stronglogic (+3 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Основной форум —› Как инвертировать крипто-функцию
Посл.ответ Сообщение

Ранг: 8.0 (гость)
Статус: Участник

Создано: 1 сентября 2004 01:15 New!
Цитата · Личное сообщение · #1

Есть крипто-функция в программе, для примера я ее перевел в дельфи:
допустим я ввожу код 1122334455667788
дальше этот код поступает в функцию

begin
var
const1, const2, const3,const4, eax, ebx, ecx, edx, edi, vved1, vved2, k : Integer;
begin
const1:= $E6D287D1; // это четыре постоянный константы
const2:= $A749C7C3; //
const3:= $A85E0BE3; //
const4:= $C2B6FA05; //
vved1 := $44332211; // первая часть введенного кода
vved2 := $88776655; // вторая часть введенного кода
k := 1;
// cript1
while k < 5 do
begin
edx := vved1;
case k of
1:
begin
ecx := const1;
eax := const4;
ebx := const2;
end;
2:
begin
ecx := const3;
eax := const2;
ebx := const4;
end;
3:
begin
ecx := const2;
eax := const1;
ebx := const3;
end;
4:
begin
ecx := const4;
eax := const3;
ebx := const1;
end;
end;
//cript
edx := edx + ebx;
ebx := ebx + edx;
edi := edx;
edi := edi shr $7;
edx := edx xor edi;
ecx := ecx + edx;
edx := edx + ecx;
edi := ecx;
edi := edi shl $0D;
ecx := ecx xor edi;
eax := eax + ecx;
ecx := ecx + eax;
edi := eax;
edi := edi shr $11;
eax := eax xor edi;
ebx := ebx + eax;
eax := eax + ebx;
edi := ebx;
edi := edi shl $9;
ebx := ebx xor edi;
edx := edx + ebx;
ebx := ebx + edx;
edi := edx;
edi := edi shr $3;
edx := edx xor edi;
ecx := ecx + edx;
edx := ecx;
edx := edx shl $7;
ecx := ecx xor edx;
eax := eax + ecx;
edx := ebx;
edx := edx shr $0F;
eax := eax xor edx;
ebx := ebx + eax;
eax := ebx;
eax := eax shl $0B;
ebx := ebx xor eax;
///////////////////
eax := vved2 xor ebx;
edx := vved1;
vved2 := edx;
vved1 := eax;
k := k+1;
end;

на выходе из функции вторая половина
vved2 должна получиться D9F6!

может кто подскажет новичку как переделать функцию чтобы получать правильный входящий код!

Ранг: 1.2 (гость)
Статус: Участник

Создано: 1 сентября 2004 05:23 New!
Цитата · Личное сообщение · #2

сделай сам удовольствие от результата гарантирую

Ранг: 192.3 (ветеран)
Статус: Участник
stoned machine-gunner

Создано: 1 сентября 2004 06:41 New!
Цитата · Личное сообщение · #3

Да, помнится давно это было, Funbit мне дал прогу с этой хнёй, тогда я подзапарился и забил... =)
А так тут всё оччень легко.
З.Ы. Используется ArgoSoft'овская компонента.

Ранг: 1.2 (гость)
Статус: Участник

Создано: 1 сентября 2004 07:29 New!
Цитата · Личное сообщение · #4

ну не чтобы ооччень легко,

у меня ушло где-то часов 5-6, если не путаю
(разбор+написание генерации)

Ранг: 203.3 (наставник)
Статус: Участник
UPX Killer -d

Создано: 1 сентября 2004 07:41 · Поправил: AlexZ New!
Цитата · Личное сообщение · #5

Код Neo2002 мне наверное не по силам, но я вот тоже хотел-бы узнать (код для примера, выдуманный мной):

mov eax, input
mov edx, eax
add eax, 30
xor eax, edx
mov output, eax

Значит,
outpit=(input+30) xor input
input=(input+30) xor output //брутфорсить уравнение
Или есть ещё способы? Не очень люблю математику.

Ранг: 8.0 (гость)
Статус: Участник

Создано: 1 сентября 2004 09:08 New!
Цитата · Личное сообщение · #6

переделал - точнее упростил алгоритм,
сделал его без циклов ...
_________________________________________
c1= $E6D287D1;
c2= $A749C7C3;
c3= $A85E0BE3;
c4= $C2B6FA05;
vved01 = 44332211;
vved02 = 88776655;
//первый цикл
vved11 = vved02 xor cript(vvde01, c1, c4, c2)
vved12 = vved01;
//второй цикл
vved21 = vved12 xor cript(vvde11, c3, c2, c4)
vved22 = vved11;
//третий цикл
vved31 = vved22 xor cript(vvde21, c2, c1, c3)
vved32 = vved21;
//четвертый цикл
vved41 = vved32 xor cript(vvde31, c4, c3, c1)
vved42 = vved31;

vved42 - должен быть XXXXD9F6
XXXX - это любое число
______________________________________
вот теперь можно анализировать !!!

Ранг: 192.3 (ветеран)
Статус: Участник
stoned machine-gunner

Создано: 1 сентября 2004 15:45 New!
Цитата · Личное сообщение · #7

Ну реверси ты её реверсни! Вдумайся в значение этого слова

Ранг: 8.0 (гость)
Статус: Участник

Создано: 2 сентября 2004 03:43 New!
Цитата · Личное сообщение · #8

ну рреверснул!
c1= $E6D287D1;
c2= $A749C7C3;
c3= $A85E0BE3;
c4= $C2B6FA05;
vved31 = vved42;
vved32= vved41 xor crypt(vved42, c4, c3, c1);
vved21 = vved32;
vved22= vved31 xor crypt(vved32, c2, c1, c3);
vved11 = vved22;
vved12= vved21 xor crypt(vved22, c3, c2, c4);
vved01 = vved12;
vved02= vved11 xor crypt(vved12, c1, c4, c2);

действительно все просто!

Ранг: 8.0 (гость)
Статус: Участник

Создано: 2 сентября 2004 03:43 · Поправил: Neo2002 New!
Цитата · Личное сообщение · #9

Осталось только выставить правильные параметры c
при вызове Cript()


Ранг: 533.8 (!)
Статус: Администратор
Создатель CRACKL@B

Создано: 2 сентября 2004 08:31 New!
Цитата · Личное сообщение · #10

Neo2002 пишет:
Осталось только выставить правильные параметры c
при вызове Cript()

Неа, если идти назад от желаемого результата нужно и y = crypt(x,a,b,c) обратить в x = decrypt (y,a,b,c);

Ранг: 8.0 (гость)
Статус: Участник

Создано: 3 сентября 2004 00:24 New!
Цитата · Личное сообщение · #11

Bad_guy пишет:
Неа, если идти назад от желаемого результата нужно и y = crypt(x,a,b,c) обратить в x = decrypt (y,a,b,c);

Неа, ты не прав! Все прекрасно кейгенится по моей формуле!

.... Все по теме вопросов нет!!!
 eXeL@B —› Основной форум —› Как инвертировать крипто-функцию
Эта тема закрыта. Ответы больше не принимаются.

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS