Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Разное > Флейм
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #46  
Старый 10.03.2011, 15:10
TotKtoNado TotKtoNado вне форума
Начинающий
 
Регистрация: 28.12.2010
Адрес: Сургут
Сообщения: 103
Версия Delphi: 2010
Репутация: -3238
По умолчанию

Цитата:
Сообщение от Duss
А какие средства анти отладки можно разработать средствами Delphi?

Мне в голову приходят 2 способа:
1) Поиск в системе запущенных отладочных программ.
2) Запустить таймер и сравнивать его время с системным, если разница будет существенной- идет отладка или прога зависла
Подводных камней много как в том, так и в другом случае)

Как еще можно защитить программу? Скажим используется ключ, которым шифруются все сообщения передаваемые по сети. Ключ вшит в программу. Как его обезопасить от взлома?

Хороший способ защиты, но как находить в системе отладочники?
Я предлагаю сделать так чтоб программа автоматически запускалась при запуске виндовс и каждые 55 мс она удаляла отладчики и желательно чтоб программа не была видна ни в панели задач, ни в трее ни в списке процессов. Как это в все можно сделать?
Ответить с цитированием
  #47  
Старый 10.03.2011, 15:12
Duss Duss вне форума
Прохожий
 
Регистрация: 09.03.2011
Адрес: СПб
Сообщения: 12
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от ChinYan
ISQ? Мило. В этом случае можно использовать шифрование только передаваемых данных. Использовать что-то вроде AES или что-то в этом роде, и стоит забывать про Принцип Керкгоффса

Я, сначала хотел использовать XOR шифр, один ключ вшит в приложение, второй выдает сервер и периодически меняет. Так вот первый ключ можно узнать взломав программу, второй - запросив с сервера, он выдает ключ все, кто попросит, но в закодированном первым ключем виде. Не очень надежная система получается, вот и хотел посмотреть в сторону защиты от взлома.
В сторону AES тоже смотрел да, большой + в том, что можно зашифровывать все с помощью открытого ключа и расшифровать будет очень сложно и сможет это только сервер, знающий закрытый ключ, но как серверу посылать сообщения клиентам? А их бы хотелось закодировать и скрыть от посторонних в первую очередь! Получается клиенты должны знать закрытый ключ!? Получается их можно взломать и посмотреть ключ!? Опять наводит на мысли об анти отладке))
Ответить с цитированием
  #48  
Старый 10.03.2011, 15:17
Duss Duss вне форума
Прохожий
 
Регистрация: 09.03.2011
Адрес: СПб
Сообщения: 12
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от TotKtoNado
Хороший способ защиты, но как находить в системе отладочники?
Я предлагаю сделать так чтоб программа автоматически запускалась при запуске виндовс и каждые 55 мс она удаляла отладчики и желательно чтоб программа не была видна ни в панели задач, ни в трее ни в списке процессов. Как это в все можно сделать?

Что-то удалять- по моему это через чур, но, найдя в память отладочный процесс- завершить свою работу и наругаться на пользователя- это можно)
Посмотреть програмно диспетчер задачь и все запущенные приложения- не сложно, узнать названия отладочного ПО с помощью гугла или поставив на виртуальную машину тоже не проблема.
Ответить с цитированием
  #49  
Старый 10.03.2011, 16:35
Аватар для BoRoV
BoRoV BoRoV вне форума
Начинающий
 
Регистрация: 08.09.2008
Сообщения: 193
Репутация: 12694
По умолчанию

Цитата:
Сообщение от Duss
А если пишется чат, что -то вроде ISQ или скайпа и цель защиты- не вытянуть побольше денег с продажи, а скрыть информацию, передаваемую по сети?
Тогда при чем тут антиотладка о которой вы говорили?
__________________
Меня греют ваши плюсы к моей репутации...
Ответить с цитированием
  #50  
Старый 10.03.2011, 16:44
ChinYan ChinYan вне форума
Тыкаю клавиши
 
Регистрация: 13.07.2009
Сообщения: 804
Версия Delphi:
Репутация: 48633
По умолчанию

Цитата:
сначала хотел использовать XOR шифр
Тогда уж совсем без шифрования - толку будет столько же, а ресурсы сэкономите
Ответить с цитированием
  #51  
Старый 10.03.2011, 17:02
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
По умолчанию

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
function AntiThreatExpert: bool;
var
  Handle: THandle;
begin
   Handle := GetModuleHandle('dbghelp.dll');
  if Handle <> 0  then Result := True;
end
 
function IsInSandbox(Serial: string):boolean;
var
  hOpen:     HKEY;
  sBuff:    array[0..256] of char;
  BuffSize: integer;
begin
   if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,  PChar('Software\Microsoft\Windows\CurrentVersion'), 0, KEY_QUERY_VALUE,  hOpen)) = ERROR_SUCCESS then begin
    BuffSize := SizeOf(sBuff);
     RegQueryValueEx(hOpen, PChar('ProductId'), nil, nil, @sBuff,  @BuffSize);
    if sBuff = Serial then  Result := True;
 
     RegCloseKey(hOpen);
  end;
end
 
CW SANDBOX
IF IsInSandBox('76487-644-3177037-23510') then  ExitProcess(0);
 
JOEBOX
IsInSandBox('55274-640-2673064-23950'then ExitProcess(0);
 
ANUBIS
IF  IsInSandBox('76487-337-8429955-22614')) then ExitProcess(0);
 
function AntiBitDefender():boolean;
begin
OutputDebugString(PChar('Super'));  //Hi
if GetLastError = 00000006 then
Result := TRUE
else
Result  := FALSE;
end
 
Function AntiEmulaters:Boolean;
Var
UpTime             :DWORD;
UpTimeAfterSleep  :Dword;
Begin
   UpTime  :=  GetTickCount;
   Sleep(500);
   UpTimeAfterSleep := GetTickCount;
    if ( UpTimeAfterSleep - UpTime ) < 500 Then
   Result:= True  Else Result:= False;
end;
 
function DebuggerPresent : boolean;
type
  TDebugProc =  function : boolean;
    stdcall;
var
  Kernel32: HMODULE;
   DebugProc: TDebugProc;
begin
  Result := False;
  Kernel32 :=  GetModuleHandle('kernel32');
  if Kernel32<>0 then
  begin
     @DebugProc := GetProcAddress(Kernel32, 'IsDebuggerPresent');
     if Assigned(DebugProc) then
      Result := DebugProc
  end;
end;
 
program IsInVM;
 
{$APPTYPE CONSOLE}
 
uses
   windows;
 
function InVMware: Boolean;
asm
    XOR     EAX,  EAX
 
    PUSH    OFFSET @@Handler
    PUSH    DWORD PTR  FS:[EAX]
    MOV     DWORD PTR FS:[EAX], ESP
    MOV     EAX,  564D5868h
    MOV     EBX, 3c6cf712h
    MOV     ECX, 0Ah
     MOV     DX, 5658h
    IN      EAX, DX
    MOV     EAX, True
     JMP     @@NotHandle
@@Handler:
    MOV     EAX, [ESP+$C]
     MOV     TContext(EAX).EIP, OFFSET @@Handled
    XOR     EAX, EAX
     RET
@@Handled:
    XOR     EAX, EAX
@@NotHandle:
    XOR      EBX, EBX
    POP     DWORD PTR FS:[EBX]
    ADD     ESP, 4
end;
 
 function  IsInVPC: boolean; assembler;
asm
  push ebp
 
  mov  ecx,  offset @@exception_handler
  mov  ebp, esp
 
  push ebx
   push ecx
  push dword ptr fs:[0]
  mov  dword ptr fs:[0], esp
 
   mov  ebx, 0 // flag
  mov  eax, 1 // VPC function number
 
  //  call VPC
  db 00Fh, 03Fh, 007h, 00Bh
 
  mov eax, dword ptr  ss:[esp]
  mov dword ptr fs:[0], eax
  add esp, 8
 
  test  ebx, ebx
  setz al
  lea esp, dword ptr ss:[ebp-4]
  mov ebx,  dword ptr ss:[esp]
  mov ebp, dword ptr ss:[esp+4]
  add esp, 8
   jmp @@ret
  @@exception_handler:
  mov ecx, [esp+0Ch]
  mov  dword ptr [ecx+0A4h], -1
  add dword ptr [ecx+0B8h], 4
  xor eax,  eax
  ret
  @@ret:
end;
 
begin
 
 
if IsInVPC then  writeln('Virtual PC detected') else writeln('Virtual Pc not detected');
if  InVMware then writeln('VMWare Machine detected') else writeln('VMWare  Machine not detected');
 
readln;
 
end.

Может кому и пригодится )
Ответить с цитированием
  #52  
Старый 10.03.2011, 17:16
Duss Duss вне форума
Прохожий
 
Регистрация: 09.03.2011
Адрес: СПб
Сообщения: 12
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от BoRoV
Тогда при чем тут антиотладка о которой вы говорили?
Почитакйте этот пост.
http://www.delphisources.ru/forum/sh...9&postcount=47
С помощью отладчика можно добраться до закрытых в программе ключей шифрования, тогда толку от них становится 0.
Ответить с цитированием
  #53  
Старый 10.03.2011, 17:24
Duss Duss вне форума
Прохожий
 
Регистрация: 09.03.2011
Адрес: СПб
Сообщения: 12
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от ChinYan
Тогда уж совсем без шифрования - толку будет столько же, а ресурсы сэкономите

Не соглашусь, с грамотным подходом можно и XOR-ом довольно неплохо зашифровать. Конечно при условии длинных ключей и конечно не банальным XOR а комбинацией либо нескольких хоров, либо денамически изменяемым ключем хора.
Основой расшифровки ХОR алгоритма является словарь!=) Также легко найти ключ заранее зная отправленное сообщение. А если зашифровать XOR-ом не текст? Например MD5 ? Кто сможет найти хешь, зашифрованный банальным хором не зная ключа?
Ответить с цитированием
  #54  
Старый 10.03.2011, 19:18
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Шифрование ассиметричным алгоритмом?
При отсутствии ключа просто нечего взламывать, а подбирать приватный ключ по известному паблику просто не хватит ресурсов (при длинных ключах, конечно).
Ответить с цитированием
  #55  
Старый 10.03.2011, 19:44
Duss Duss вне форума
Прохожий
 
Регистрация: 09.03.2011
Адрес: СПб
Сообщения: 12
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Шифрование ассиметричным алгоритмом?
При отсутствии ключа просто нечего взламывать, а подбирать приватный ключ по известному паблику просто не хватит ресурсов (при длинных ключах, конечно).

Это конечно хорошо, но еще раз объясню свою мысль:
Сообщение зашифровано публичным ключем асимметричного алгоритма.
Сообщение отправлено, чтобы его расшифровать нужно что? Правильно, приватный ключ. Сервер отправляет сообщение клиенту. Значит у клиента есть приватный ключ, чтобы его расшифровать. Значит клиентскую программу можно взломать и вытащить из нее приватные ключи.

Но мы как-то ушли в сторону от темы защиты. Криптография- это конечно интересно, но тема посещена другому.
Ответить с цитированием
  #56  
Старый 10.03.2011, 21:14
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

У меня раньше тоже был батхёрт по этой теме, ну и что в итоге, защитить то защитил, а прогой кроме 3-х человек никто не пользуется, ито исполдьзуют на 15% ее функционал.


Вот напишешь ты программу для управления хирургическим манипулятором, вот защитишь ты ее МегаЧудо протектором, вот даст твоя программа сбой во время операции, тебе твою прогу и этот Мега протектор вместе с манипулятором затолкают в ... (как в анекдоте про лесорубов и японскую бензопилу)
Да и тырить ее никто не будет даже даром)) без манипулятора и знаний медицины она не нужна будет.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию

Последний раз редактировалось M.A.D.M.A.N., 10.03.2011 в 21:24.
Ответить с цитированием
  #57  
Старый 10.04.2011, 18:11
Аватар для Dem0Men
Dem0Men Dem0Men вне форума
Прохожий
 
Регистрация: 06.02.2011
Адрес: г. Ярославль
Сообщения: 26
Версия Delphi: 2007, XE
Репутация: 10
Смех

Цитата:
Сообщение от Duss
А если пишется чат, что -то вроде ISQ или скайпа и цель защиты- не вытянуть побольше денег с продажи, а скрыть информацию, передаваемую по сети?
ICQ
__________________
Итерация от человека. Рекурсия — от Бога.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:09.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025