Сейчас на форуме: hgdagon, asfa, bartolomeo (+5 невидимых)

 eXeL@B —› Программирование —› Криптование EXE
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 260.2 (наставник)
Активность: 0.190
Статус: Участник

Создано: 17 августа 2006 21:16
· Личное сообщение · #1

Написал два Project'а.
Один ксорит файл,а второй запускает с пом. Debug Api и расксорит.
Если ксорить первые $200 байт то работает, а секцию-нет.
EXE в аттаче, т.к я многое упростил.
В чём трабла?

d230_17.08.2006_CRACKLAB.rU.tgz - Project.rar



Ранг: 260.2 (наставник)
Активность: 0.190
Статус: Участник

Создано: 18 августа 2006 11:29
· Личное сообщение · #2

Текст Crypt'а.

var
Form1: TForm1;
dos: TImageDosHeader;
nt:TImageNTHeaders;
sh:array[0..15] of TImageSectionHeader;
f:file;
i: integer;

implementation

{$R *.dfm}

function Crypt(cr:char):char;
begin
result:=chr(ord(cr) xor $FF);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
if OD.Execute then
Edit.Text:=OD.filename;
end;

procedure TForm1.Button2Click(Sender: TObject);
Var
buf:array[0..$200] of char;
n: integer;
begin
AssignFile(f,edit.text);
Reset(f,1);
BlockRead(f,dos,SizeOf(dos));
Seek(f,dos._lfanew);
BlockRead(f,nt,SizeOf(nt));
for i:=0 to (NT.FileHeader.NumberOfSections-1) do
BlockRead(f,sh[i],SizeOf(TImageSectionHeader));
Seek(f,sh[0].PointerToRawData);
i:=0;
for i:=0 to (sh[0].SizeOfRawData div $200) do
begin
BlockRead(f,buf,SizeOf(buf));
for n:=0 to $200 do
buf[n]:=crypt(buf[n]);
Seek(f,sh[0].PointerToRawData+(i*($200+1)));
BlockWrite(f,buf,SizeOf(buf));
end;
CloseFile(f);
end;

end.

Текст Decrypt'а:

function Crypt(cr:char):char;
begin
result:=chr(ord(cr) xor $FF);
end;


procedure TForm1.Button1Click(Sender: TObject);
Var
SI: TStartUpInfo;
PI: TProcessInformation;
DE: TDebugEvent;
buf:PChar;
bsize, bw: cardinal;
n:integer;
begin
ZeroMemory(@SI,SizeOf(TStartUpInfo));
GetStartupInfo(SI);
CreateProcess(PChar(Edit.Text),nil,nil,nil,false,DEBUG_ONLY_THIS_PROCE SS,
nil,nil,SI,PI);
bsize:=$200;
GetMem(buf,bsize);
While true do
begin
WaitForDebugEvent(DE,INFINITE);
if DE.dwDebugEventCode=EXCEPTION_DEBUG_EVENT then
begin
ReadProcessMemory(PI.hProcess,ptr($401000),buf,bsize,bw);
for n:=0 to bsize do
buf[n]:=Crypt(buf[n]);
WriteProcessMemory(PI.hProcess,ptr($401000),Buf,bsize,bw);
ContinueDebugEvent(DE.dwProcessId,DE.dwThreadId,DBG_CONTINUE);
end;
if DE.dwDebugEventCode=EXIT_PROCESS_DEBUG_EVENT then
exit;
ContinueDebugEvent(DE.dwProcessId,DE.dwThreadId,DBG_CONTINUE);
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if OD.Execute then
Edit.Text:=OD.FileName;
end;

end.




Ранг: 216.9 (наставник), 85thx
Активность: 0.310.15
Статус: Участник
X-Literator

Создано: 18 августа 2006 12:50
· Личное сообщение · #3

Ксор - это плохой способ защиты.

-----
Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей.





Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 18 августа 2006 13:13
· Личное сообщение · #4

sniperZ
Для шифрования файлов ксор - наихудший вариант, лучше юзать сразу несколько крипто алго.

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 18 августа 2006 13:16
· Личное сообщение · #5

4kusNick
Ну не хрена себе наихудший вариант! Что-то я не видел не одного взлома ГОСТ28147-89 , или я плохо искал?

Нет уж, от того как xor применишь так и будет!!!

-----
My love is very cool girl.




Ранг: 15.0 (новичок)
Активность: 0.010
Статус: Участник

Создано: 18 августа 2006 14:23
· Личное сообщение · #6

theCollision
искал хорошо. Только разве в упомянутом госте используется банальный ксор?




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 18 августа 2006 15:09
· Личное сообщение · #7

theCollision
Если ты прочтешь книгу по криптографии Брюса Шнайера - "Прикладная криптология", то узнаешь, что как бы ты не извращался с ксором, то, если ты используешь в алгоритме только его, опытный криптоаналитик сможет поломать твою систему даже не используя какие-либо программы, а прямо в голове.

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 260.2 (наставник)
Активность: 0.190
Статус: Участник

Создано: 18 августа 2006 15:14
· Личное сообщение · #8

Хорош разводить ОФФТОП!
Мне не важен способ криптографии,а важно чё не работает.




Ранг: 260.3 (наставник), 2thx
Активность: 0.120
Статус: Участник
PPC-PROTECT author

Создано: 18 августа 2006 15:36
· Личное сообщение · #9

sniperZ дурацкий код у тебя =) кто так учил делать ну заксорил ты его, а расшифровщик сделал?

-----
Пиво, сиськи, транс




Ранг: 260.2 (наставник)
Активность: 0.190
Статус: Участник

Создано: 18 августа 2006 16:35
· Личное сообщение · #10

Расшифровывает второй Project - Decrypt.
Выбираешь "заксореный EXE" и он запускается под Debug API и расшифровывается в памяти.
Но вопрос почему не работает?
Функция Crypt работает нормально.




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 18 августа 2006 16:40
· Личное сообщение · #11

sniperZ а ты релоки похерил?

-----
Yann Tiersen best and do not fuck




Ранг: 260.2 (наставник)
Активность: 0.190
Статус: Участник

Создано: 19 августа 2006 10:35
· Личное сообщение · #12

PE_Kill пишет:
а ты релоки похерил


Чё за релоки и зачем их херить.

Вы хоть код гляньте!




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 19 августа 2006 10:44
· Личное сообщение · #13

No comments!

-----
Yann Tiersen best and do not fuck




Ранг: 222.2 (наставник), 115thx
Активность: 0.140.01
Статус: Участник

Создано: 19 августа 2006 11:34
· Личное сообщение · #14

А зачем именно Debug Api, неужели ничего другого нельзя было приписать, например секцию с кодом разксорки и переходом к ОЕР ? Конечно, я понимаю тут много бредятины, но всё же... (смотрите аттач). Как приделаю секцию разксорки, - выложу куда-нить, если кому будет нужно это борохло

31de_19.08.2006_CRACKLAB.rU.tgz - SHProt.rar

-----
все багрепорты - в личные сообщения




Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 19 августа 2006 16:54
· Личное сообщение · #15

sniperZ пишет:
Выбираешь "заксореный EXE" и он запускается под Debug API и расшифровывается в памяти.
Но вопрос почему не работает

Ты заксорил все, в т.ч. и секцию импорта. Соответственно загрузчик не обработал ее.
Для таких задач тактика кавалерийского наскока не работает : надо сначала изучить опыт "прославленных полкодцев". Иначе получишь много раз старыми граблями



Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 19 августа 2006 17:01
· Личное сообщение · #16

Хакер - это человек умеющий наступить на грабли, даже если они в закрытом на ключ сарая

-----
My love is very cool girl.




Ранг: 260.2 (наставник)
Активность: 0.190
Статус: Участник

Создано: 19 августа 2006 17:09
· Личное сообщение · #17

Как заксорить тогда только код?




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 19 августа 2006 17:17
· Личное сообщение · #18

А никак. Надо грохнуть табличку импорта, TLS, если DLL, то релоки. И ксорь сколько влезет. Только потом надо самому всё че грохнеш обрабатывать.

-----
Yann Tiersen best and do not fuck




Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 19 августа 2006 17:18
· Личное сообщение · #19

sniperZ
Далай простеньку сеть Файстеля! На сайте есть статья от человека который ломал прогу в которой применялось шифрование по Des.

Left = buf[i] + key[j];
Right = Left

уже не банальный

-----
My love is very cool girl.




Ранг: 163.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 20 августа 2006 08:14
· Личное сообщение · #20

sniperZ пишет:
Как заксорить тогда только код?

Можно посмотреть поля BaseOfCode и SizeOfCode в IMAGE_OPTIONAL_HEADER (и вообще доку http://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx ). Но если есть релоки, то при их обработке загрузчик ОС модифицирует секцию.

4kusNick пишет:
как бы ты не извращался с ксором, то, если ты используешь в алгоритме только его, опытный криптоаналитик сможет поломать твою систему даже не используя какие-либо программы, а прямо в голове.

ИМХО ты Шнайера не так понял. Простейший пример: длина ключа равна длине шифротекста. Шифры придуманы, что бы ключ мог быть коротким.



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 20 августа 2006 09:13
· Личное сообщение · #21

theCollision пишет:
Далай простеньку сеть Файстел

sniperZ не слушай. Лучше почитай раздел "Новичку". А то получается так : заплываешь ты в самую глубину и кричишь караул. А с аквалангом проще будет




Ранг: 216.9 (наставник), 85thx
Активность: 0.310.15
Статус: Участник
X-Literator

Создано: 01 сентября 2006 06:40
· Личное сообщение · #22

sniperZ пишет:
Как заксорить тогда только код?

Пхххх! Легко. Вырезаешь в hiew код, сдвигаешь на 2 байта, вставляешь в начало jmp на декодер.Сдвигаешь Import Table, меняешь jmp, loop, .. переменные и т.д. Вот экзампл:


00401000:jmp 00401028 ;Hex - коды перехода - EB26h
00401002:..... ;Закодированные инструкции...
00401028:mov ecx, 27
0040102D:push edx
0040102E:push ecx
0040102F:mov edx, [ecx+00401000]
00401035:xor edx,35
00401038:mov [ecx+00401000], edx
0040103E:pop ecx
0040103F:pop edx
00401040:loop 0040102D
00401042:jmp 00401002

-----
Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей.




Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 01 сентября 2006 07:30 · Поправил: tundra37
· Личное сообщение · #23

Crawler
А ты что свою тему бросил ?!
http://www.exelab.ru/f/action=vthread&forum=5&topic=6038&p age=0#15
На хрена же push и pop в цикле делать - скорость в два раз падает.
И зачем ECX сохранять, когда loop его портит. 3-- вам по программированию




Ранг: 216.9 (наставник), 85thx
Активность: 0.310.15
Статус: Участник
X-Literator

Создано: 02 сентября 2006 12:28
· Личное сообщение · #24

Да ладно тебе, tundra37! Это издержки. А по поводу темы - спасибо, я уж разрулил. В натуре, перекоматозтило с ECX. И с пушад тоже. Сорри. Примите к сведению. А криптовать лучше готовыми пакерами, они не юзают ксор. По поводу ГОСТа хотел тоже сказать, что theCollision ошибается, если думает, что ГОСТ замешан на голом XORe. Сам читай шнайера и жельникова "от папируса до ПК" (Без обид!)

-----
Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей.




Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 03 сентября 2006 01:40
· Личное сообщение · #25

Crawler пишет:
А по поводу темы - спасибо, я уж разрулил.

Это понятно. Но ты бил себя в грудь и кричал - write enable. Нам тоже интересно, кто же был прав ?!
И про сдвиг на 2 байта всех секций "легким движением руки" - тоже хотелось бы узнать. А то люди мучаются, а у тебя все легко




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 03 сентября 2006 02:44
· Личное сообщение · #26

Тогда охрененный криптор можно накатать. Этож не надо никакой привязки и ImageBase, вот рулез. Ждем от кравлера крутейшего криптора всех времен и народов!

-----
Yann Tiersen best and do not fuck




Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 03 сентября 2006 03:36
· Личное сообщение · #27

Crawler пишет:
Ждем от кравлера

Напрасно. Он уже убедился
Crawler пишет:
А криптовать лучше готовыми пакерами, они не юзают ксор.

Но почему-то не уточнил, что они еще и с импортом нормально работают. Ну ничего - у него еще все впереди.




Ранг: 216.9 (наставник), 85thx
Активность: 0.310.15
Статус: Участник
X-Literator

Создано: 21 сентября 2006 12:14
· Личное сообщение · #28

Юмор ваш, господа, уместен как никогда. Особенно про имагебасе. %( А кто говорил про легкое движение руки. Чтой-то я такого не припомню. Путаетесь, гражданин ПЕ_Килл.

-----
Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей.




Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 22 сентября 2006 02:26 · Поправил: tundra37
· Личное сообщение · #29

Crawler пишет:
А кто говорил про легкое движение руки.

Наконец-то господин Crawler появился тут. Про легкое движение, конечно, Вы не говорили.
Но были слова в другой теме: сдвинул на два байта секцию кода и подредактировал импорт. И все ведь "работало", вот только violation был. Может там и не запись в секцию, а просто импрорт побит был.
Или мы так и не дождемся истины ....




Ранг: 216.9 (наставник), 85thx
Активность: 0.310.15
Статус: Участник
X-Literator

Создано: 29 сентября 2006 07:24
· Личное сообщение · #30

В личку я вам уже отправил мессаг с объяснительной, господин tundra37
И для публики: дело было в голимой функции, выставлявшей реадонли-аттрибут.
Спасибо всем.
А про двигание кода - в данном примере все работает без перебивки импорта и прочего геморроя. Само собой, в другом случае все гораздо сложнее

-----
Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей.



. 1 . 2 . >>
 eXeL@B —› Программирование —› Криптование EXE
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати