OberonCore https://forum.oberoncore.ru/ |
|
Хакеры тоже используют BlackBox? https://forum.oberoncore.ru/viewtopic.php?f=27&t=1791 |
Страница 1 из 1 |
Автор: | Rifat [ Вторник, 01 Сентябрь, 2009 12:27 ] |
Заголовок сообщения: | Хакеры тоже используют BlackBox? |
Это всего лишь предположение, на это меня натолкнул антивирус, установленный на моем компьютере. У меня на компьютере установлен антивирус Avira (я его выбрал в виду абсолютной его бесплатности для домашнего использования). Когда я работал в среде BlackBox и создавал консольную программу, то антивирус каждый раз извещал, что в только что созданном файле есть троян. Меня эта ситуация заинтересовала и я попытался сделать минимальную программу, которая вызывает сообщение о трояне. Оказалось, что Avira реагирует на 2 WinApi функции (GetStdHandle, GetFileType) и на подключенный модуль Strings. Далее я попытался найти минимальный набор от модуля Strings, который вызывает сообщение от трояне. Это оказались первые 3 функции из модуля Strings и раздел констант и переменных оттуда же. Вот эта программа: Код: MODULE ConsoleTest1; IMPORT SYSTEM, WinApi; CONST charCode* = -1; decimal* = 10; hexadecimal* = -2; roman*= -3; digitspace* = 08FX; showBase* = TRUE; hideBase* = FALSE; minLongIntRev = "8085774586302733229"; (* reversed string of -MIN(LONGINT) *) VAR maxExp: INTEGER; maxDig: INTEGER; factor: REAL; (* 10^maxDig *) digits: ARRAY 17 OF CHAR; toUpper, toLower: ARRAY 256 OF CHAR; PROCEDURE IntToString* (x: LONGINT; OUT s: ARRAY OF CHAR); VAR j, k: INTEGER; ch: CHAR; a: ARRAY 32 OF CHAR; BEGIN IF x # MIN(LONGINT) THEN IF x < 0 THEN s[0] := "-"; k := 1; x := -x ELSE k := 0 END; j := 0; REPEAT a[j] := CHR(x MOD 10 + ORD("0")); x := x DIV 10; INC(j) UNTIL x = 0 ELSE a := minLongIntRev; s[0] := "-"; k := 1; j := 0; WHILE a[j] # 0X DO INC(j) END END; ASSERT(k + j < LEN(s), 23); REPEAT DEC(j); ch := a[j]; s[k] := ch; INC(k) UNTIL j = 0; s[k] := 0X END IntToString; PROCEDURE IntToStringForm* (x: LONGINT; form, minWidth: INTEGER; fillCh: CHAR; showBase: BOOLEAN; OUT s: ARRAY OF CHAR); VAR base, i, j, k, si: INTEGER; mSign: BOOLEAN; a: ARRAY 128 OF CHAR; c1, c5, c10: CHAR; BEGIN ASSERT((form = charCode) OR (form = hexadecimal) OR (form = roman) OR ((form >= 2) & (form <= 16)), 20); ASSERT(minWidth >= 0, 22); IF form = charCode THEN base := 16 ELSIF form = hexadecimal THEN base := 16 ELSE base := form END; IF form = roman THEN ASSERT((x > 0) & (x < 3999), 21); base := 1000; i := 0; mSign := FALSE; WHILE (base > 0) & (x > 0) DO IF base = 1 THEN c1 := "I"; c5 := "V"; c10 := "X" ELSIF base = 10 THEN c1 := "X"; c5 := "L"; c10 := "C" ELSIF base = 100 THEN c1 := "C"; c5 := "D"; c10 := "M" ELSE c1 := "M" END; k := SHORT(x DIV base); x := x MOD base; IF k IN {4, 9} THEN a[i] := c1; INC(i) END; IF k IN {4 .. 8} THEN a[i] := c5; INC(i) END; IF k = 9 THEN a[i] := c10; INC(i) ELSIF k IN {1 .. 3, 6 .. 8} THEN j := k MOD 5; REPEAT a[i] := c1; INC(i); DEC(j) UNTIL j = 0 END; base := base DIV 10 END ELSIF (form = hexadecimal) OR (form = charCode) THEN i := 0; mSign := FALSE; IF showBase THEN DEC(minWidth) END; REPEAT a[i] := digits[x MOD base]; x := x DIV base; INC(i) UNTIL (x = 0) OR (x = -1) OR (i = LEN(a)); IF x = -1 THEN fillCh := "F" END ELSE IF x < 0 THEN i := 0; mSign := TRUE; DEC(minWidth); REPEAT IF x MOD base = 0 THEN a[i] := digits[0]; x := x DIV base ELSE a[i] := digits[base - x MOD base]; x := x DIV base + 1 END; INC(i) UNTIL (x = 0) OR (i = LEN(a)) ELSE i := 0; mSign := FALSE; REPEAT a[i] := digits[x MOD base]; x := x DIV base; INC(i) UNTIL (x = 0) OR (i = LEN(a)) END; IF showBase THEN DEC(minWidth); IF base < 10 THEN DEC(minWidth) ELSE DEC(minWidth,2) END END END; si := 0; IF mSign & (fillCh = "0") & (si < LEN(s)) THEN s[si] := "-"; INC(si); mSign := FALSE END; WHILE minWidth > i DO IF si < LEN(s) THEN s[si] := fillCh; INC(si) END; DEC(minWidth) END; IF mSign & (si < LEN(s)) THEN s[si] := "-"; INC(si) END; IF form = roman THEN j := 0; WHILE j < i DO IF si < LEN(s) THEN s[si] := a[j]; INC(si) END; INC(j) END ELSE REPEAT DEC(i); IF si < LEN(s) THEN s[si] := a[i]; INC(si) END UNTIL i = 0 END; IF showBase & (form # roman) THEN IF (form = charCode) & (si < LEN(s)) THEN s[si] := "X"; INC(si) ELSIF (form = hexadecimal) & (si < LEN(s)) THEN s[si] := "H"; INC(si) ELSIF (form < 10) & (si < LEN(s)-1) THEN s[si] := "%"; s[si+1] := digits[base]; INC(si, 2) ELSIF (si < LEN(s) - 2) THEN s[si] := "%"; s[si+1] := digits[base DIV 10]; s[si+2] := digits[base MOD 10]; INC(si, 3) END END; IF si < LEN(s) THEN s[si] := 0X ELSE HALT(23) END END IntToStringForm; PROCEDURE StringToInt* (IN s: ARRAY OF CHAR; OUT x: INTEGER; OUT res: INTEGER); CONST hexLimit = MAX(INTEGER) DIV 8 + 1; VAR i, j, k, digits: INTEGER; ch, top: CHAR; neg: BOOLEAN; base: INTEGER; BEGIN res := 0; i := 0; ch := s[0]; WHILE (ch # 0X) & (ch <= " ") OR (ch = 8BX) OR (ch = 8FX) OR (ch = 0A0X) DO (* ignore leading blanks *) INC(i); ch := s[i] END; j := i; top := "0"; WHILE (ch # 0X) & (ch # "H") & (ch # "X") & (ch # "%") DO IF ch > top THEN top := ch END; INC(j); ch := s[j] END; IF (ch = "H") OR (ch = "X") THEN x := 0; ch := s[i]; IF ("0" <= ch) & (ch <= "9") OR ("A" <= ch) & (ch <= "F") THEN WHILE ch = "0" DO INC(i); ch := s[i] END; digits := 0; WHILE (res = 0) & (("0" <= ch) & (ch <= "9") OR ("A" <= ch) & (ch <= "F")) DO IF ch < "A" THEN k := ORD(ch) - ORD("0") ELSE k := ORD(ch) - ORD("A") + 10 END; IF digits < 8 THEN x := x MOD hexLimit; IF x >= hexLimit DIV 2 THEN x := x - hexLimit END; x := x * 16 + k; INC(i); ch := s[i] ELSE res := 1 END; INC(digits) END; IF res = 0 THEN IF (ch # "H") & (ch # "X") OR (s[i+1] # 0X) THEN res := 2 END END ELSE res := 2 END ELSE IF ch = "%" THEN INC(j); ch := s[j]; base := 0; IF ("0" <= ch) & (ch <= "9") THEN k := ORD(ch) - ORD("0"); REPEAT base := base * 10 + k; INC(j); ch := s[j]; k := ORD(ch) - ORD("0") UNTIL (ch < "0") OR (ch > "9") OR (base > (MAX(INTEGER) - k) DIV 10); IF ("0" <= ch) & (ch <= "9") THEN base := 0 END END ELSE base := 10 END; IF (base < 2) OR (base > 16) THEN res := 2 ELSIF (base <= 10) & (ORD(top) < base + ORD("0")) OR (base > 10) & (ORD(top) < base - 10 + ORD("A")) THEN x := 0; ch := s[i]; neg := FALSE; IF ch = "-" THEN INC(i); ch := s[i]; neg := TRUE ELSIF ch = "+" THEN INC(i); ch := s[i] END; WHILE (ch # 0X) & (ch <= " ") DO INC(i); ch := s[i] END; IF ("0" <= ch) & (ch <= "9") OR ("A" <= ch) & (ch <= "F") THEN IF ch <= "9" THEN k := ORD(ch) - ORD("0") ELSE k := ORD(ch) - ORD("A") + 10 END; WHILE (("0" <= ch) & (ch <= "9") OR ("A" <= ch) & (ch <= "F")) & (res = 0) DO IF x >= (MIN(INTEGER) + (base - 1) + k) DIV base THEN x := x * base - k; INC(i); ch := s[i]; IF ch <= "9" THEN k := ORD(ch) - ORD("0") ELSE k := ORD(ch) - ORD("A") + 10 END ELSE res := 1 END END ELSE res := 2 END; IF res = 0 THEN IF ~neg THEN IF x > MIN(INTEGER) THEN x := -x ELSE res := 1 END END; IF (ch # 0X) & (ch # "%") THEN res := 2 END END ELSE res := 2 END END END StringToInt; PROCEDURE Api; VAR input, ft: INTEGER; BEGIN input := WinApi.GetStdHandle(WinApi.STD_INPUT_HANDLE); ft := WinApi.GetFileType(input); END Api; END ConsoleTest1. DevLinker.LinkExe dos test1.exe := ConsoleTest1~ При сборке этой программы в BlackBox 1.6 антивирус Avira выдает следующее сообщение: Вложение: К тому же, когда я искал информацию о трояне TR/Crypt.XPACK.Gen в Интернете, то находил информацию, что у некоторых этот троян встречается в файле blackbox.dll, который находится в папке System32. Похоже, что некоторые хакеры знают о BlackBox-е и разрабатывают на нем трояны. (модератор): см. также: viewtopic.php?p=62231#p62231 |
Автор: | Comdiv [ Вторник, 01 Сентябрь, 2009 14:05 ] |
Заголовок сообщения: | Re: Хакеры тоже используют BlackBox? |
У Авиры нервный эвристический анализ, у неё высокий процент обнаружения неизвестных зловредов, но и высокий процент ложных срабатываний. Точно такое же сообщение этот антивирус выдаёт на любой проект, скомпилированный Pow. И вообще, эти Обероны какие-то подозрительные |
Автор: | Rifat [ Вторник, 01 Сентябрь, 2009 16:48 ] |
Заголовок сообщения: | Re: Хакеры тоже используют BlackBox? |
Одно из объяснений, что какой-то троян или вирус был написан на BlackBox-е после чего, эвристический анализатор стал реагировать на программы написанные на BlackBox-е. Может действительно все это совпадение и просто анализатор слишком нервный. До этого в моей практике подобный случай был только 1 раз, писал какую-то программу на Turbo Pascal-е и Norton Antivirus ругнулся, что это возможно вирус. |
Автор: | Info21 [ Вторник, 01 Сентябрь, 2009 19:02 ] |
Заголовок сообщения: | Re: Хакеры тоже используют BlackBox? |
А не диверсия? Теоретически возможно. В конце концов, примеры закулисного гажения (от гадить) есть. |
Автор: | Vlad [ Вторник, 01 Сентябрь, 2009 19:03 ] |
Заголовок сообщения: | Re: Хакеры тоже используют BlackBox? |
Info21 писал(а): А не диверсия? Точно! И то что сайт висит время от времени - тоже дело рук ребят из M$! P.S. Неуловимый Джо, блин. |
Автор: | Info21 [ Вторник, 01 Сентябрь, 2009 22:21 ] |
Заголовок сообщения: | Re: Хакеры тоже используют BlackBox? |
Причем здесь M$. Есть молодые-глупые. |
Автор: | Galkov [ Среда, 02 Сентябрь, 2009 02:28 ] |
Заголовок сообщения: | Re: Хакеры тоже используют BlackBox? |
Уточнение - пакостливые. btw: Не представляете, как наш проект достали уже эти антивири... ((не постоянно, но очень регулярно)) Логика не прослеживается вообще. Один и тот же исходник, скомпилированный D4 - чистый, а FPC - самый страшный на свете троян. С теорией "пакостников" тоже не очень стыкуется: они же лицензионной чистотой не озабочены, а D4, в сравнение с FPC - во многие разы быстрее, легче, и качественней. Hook.dll - так это вообще перманентная сказка про белого бычка: KAV матерится => материмся на него в ответ => они правят базы => через месяц все по новой А там 132 байта кодов (если смотреть в дизасме), и использование SetWindowsHookEx (для клавы). Как будто есть альтернативы для "системных" хоткеев... |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |