Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
417b17da98 | ||
|
|
4ca19a4eb0 | ||
|
|
e834dfb7ee | ||
|
|
5e1ff74fb3 | ||
|
|
7a1d0f2ca7 | ||
|
|
b305522106 | ||
|
|
ff3495645a | ||
|
|
ddc000321f | ||
|
|
fe4e6af3b9 | ||
|
|
a1a83cc32c | ||
|
|
e37665218b | ||
|
|
2a876f4136 | ||
|
|
290d8e8a64 | ||
|
|
121bce529f | ||
|
|
1232d98573 | ||
|
|
208d9150b0 | ||
|
|
351bf7725e | ||
|
|
a547776766 | ||
|
|
86a8d20757 | ||
|
|
760c420f95 | ||
|
|
44c2edf58e | ||
|
|
e88207c232 | ||
|
|
f6b2450fcd | ||
|
|
a124ecd3ed | ||
|
|
34fcc3d29e | ||
|
|
5f3011eebc | ||
|
|
d4464edb6c | ||
|
|
1dc89a80db | ||
|
|
bd23599770 | ||
|
|
bda6ff80da | ||
|
|
16bee9825f | ||
|
|
5e4a4c4e8f | ||
|
|
0a03093333 | ||
|
|
960b1d53f7 | ||
|
|
f09dee6a52 | ||
|
|
301e1e56d1 | ||
|
|
6b2dbd382d | ||
|
|
e6f526c766 | ||
|
|
06cca669a0 | ||
|
|
f89ccea208 | ||
|
|
0728f2d995 | ||
|
|
c7a7a61c9a | ||
|
|
aca11e66a8 | ||
|
|
46c7a001c2 | ||
|
|
d6aa3c50a3 | ||
|
|
caaadc5cf3 | ||
|
|
14d703903c | ||
|
|
76fa14ab01 | ||
|
|
d1afe255e5 | ||
|
|
8f27739331 | ||
|
|
7a6aba5a2a | ||
|
|
ca0ec1f99d | ||
|
|
4e167486a1 | ||
|
|
503bbcd995 | ||
|
|
b160d2f634 | ||
|
|
2e7628a837 | ||
|
|
1259948ed7 | ||
|
|
81881ae1a4 | ||
|
|
0b5c581aca | ||
|
|
eb3614ed0c | ||
|
|
eb50513277 | ||
|
|
c3af73b8cf | ||
|
|
b552164a13 | ||
|
|
b6dc9ecadb | ||
|
|
0723dc8dbb | ||
|
|
0b1fffb5bf | ||
|
|
a39d87e5c5 | ||
|
|
0b0c3310cf | ||
|
|
f75c3750a5 | ||
|
|
3da760721b | ||
|
|
a9ad3feeec | ||
|
|
479c4ade67 | ||
|
|
84afa3e714 | ||
|
|
9a69665bab | ||
|
|
fea34ee937 | ||
|
|
ff2412c65d | ||
|
|
658953860a | ||
|
|
b473783527 | ||
|
|
7e590d4925 | ||
|
|
232fd3e2f2 | ||
|
|
9ea25fb77c | ||
|
|
6c47136de3 | ||
|
|
6fae29b488 | ||
|
|
7ed8cc9380 | ||
|
|
142e9d1028 | ||
|
|
c96c30ff9a | ||
|
|
337f1cc100 | ||
|
|
c3cb89dbea | ||
|
|
445bd1f668 | ||
|
|
1bded908c1 | ||
|
|
8d9dea4b08 | ||
|
|
4e98d6d8ce | ||
|
|
55b5cd939e | ||
|
|
d72f5a43c8 | ||
|
|
b406d8d30b | ||
|
|
f9c91c9ba0 | ||
|
|
0213d7eeb4 | ||
|
|
048c5c0970 | ||
|
|
728542fce8 | ||
|
|
81ca24c7a2 | ||
|
|
32ec272253 | ||
|
|
758982b660 | ||
|
|
a83bba10e3 | ||
|
|
4b9342fa8b | ||
|
|
a48162cf4a | ||
|
|
3fa61e777c | ||
|
|
01a2c55207 | ||
|
|
1a2376e6b7 | ||
|
|
dab0d6a47f | ||
|
|
b5d90b5cb7 | ||
|
|
25fd0bd2af | ||
|
|
a4bb63fcd4 | ||
|
|
9d85785c27 | ||
|
|
4206242627 | ||
|
|
f0149be9ad | ||
|
|
5d56a1f0e0 | ||
|
|
ad06c75058 | ||
|
|
d5b6e17e59 | ||
|
|
ffe2514e11 | ||
|
|
8621bed5d4 | ||
|
|
634031e6dc | ||
|
|
11fae36469 | ||
|
|
3d01e36a71 | ||
|
|
c2082b1ac5 | ||
|
|
c94bbf84fe | ||
|
|
930363cd3f | ||
|
|
085ca9eb58 | ||
|
|
f486d44804 | ||
|
|
1b4fbd3449 | ||
|
|
43ad7bf646 | ||
|
|
64921c3308 | ||
|
|
7a0e6a00c5 | ||
|
|
1332dd2c0e | ||
|
|
d52628bed2 | ||
|
|
981ec006b2 | ||
|
|
7da05cf678 |
No files matched your search
@@ -1,34 +0,0 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
:: Check for permissions
|
||||
>nul 2>&1 "%SYSTEMROOT%\system32\icacls.exe" "%SYSTEMROOT%\system32\config\system"
|
||||
|
||||
if %errorlevel% NEQ 0 goto NoAdmin
|
||||
goto gotAdmin
|
||||
|
||||
:NoAdmin
|
||||
echo You do not have administrator rights, please run this script as administrator.
|
||||
pause
|
||||
exit /B
|
||||
|
||||
:gotAdmin
|
||||
if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs"
|
||||
|
||||
set "script_dir=%~dp0"
|
||||
set "script_dir=%script_dir:~0,-1%"
|
||||
|
||||
bcdedit -debug on
|
||||
bcdedit /set testsigning on
|
||||
bcdedit /deletevalue {current} safeboot
|
||||
|
||||
powershell.exe -ExecutionPolicy Bypass -Command ^
|
||||
"$endDate = (Get-Date).AddYears(100); ^
|
||||
$cert = New-SelfSignedCertificate -DnsName PYAS -CertStoreLocation cert:\LocalMachine\My -Type CodeSigning -NotAfter $endDate; ^
|
||||
$pwd = ConvertTo-SecureString -String 'PYAS' -Force -AsPlainText; ^
|
||||
Export-PfxCertificate -Cert $cert -FilePath '%script_dir%\PYAS.pfx' -Password $pwd;"
|
||||
"%script_dir%\signtool.exe" sign /f "%script_dir%\PYAS.pfx" /p PYAS "%script_dir%\PYAS_Driver.sys"
|
||||
sc create PYAS_Driver type= kernel start= demand binPath= "%script_dir%\PYAS_Driver.sys"
|
||||
|
||||
shutdown -r -t 0
|
||||
endlocal
|
||||
Whitespace-only changes.
Binary file not shown.
@@ -1,25 +0,0 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
:: Check for permissions
|
||||
>nul 2>&1 "%SYSTEMROOT%\system32\icacls.exe" "%SYSTEMROOT%\system32\config\system"
|
||||
|
||||
if %errorlevel% NEQ 0 goto NoAdmin
|
||||
goto gotAdmin
|
||||
|
||||
:NoAdmin
|
||||
echo You do not have administrator rights, please run this script as administrator.
|
||||
pause
|
||||
exit /B
|
||||
|
||||
:gotAdmin
|
||||
if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs"
|
||||
|
||||
sc stop PYAS_Driver
|
||||
sc delete PYAS_Driver
|
||||
|
||||
bcdedit /set testsigning off
|
||||
bcdedit -debug off
|
||||
|
||||
shutdown -r -t 0
|
||||
endlocal
|
||||
Binary file not shown.
@@ -0,0 +1,73 @@
|
||||
from PIL import Image
|
||||
import numpy, pefile, os
|
||||
|
||||
def file_to_images(file_data, output_dir, file_name, target_size=(224, 224)):#
|
||||
wah = int(numpy.ceil(numpy.sqrt(len(file_data))))
|
||||
file_data = numpy.frombuffer(file_data, dtype=numpy.uint8)
|
||||
image_array = numpy.zeros((wah * wah,), dtype=numpy.uint8)
|
||||
image_array[:len(file_data)] = file_data
|
||||
image = Image.fromarray(image_array.reshape((wah, wah)), 'L')
|
||||
image = image.resize(target_size, Image.Resampling.NEAREST)
|
||||
image.save(os.path.join(output_dir, f"{file_name}.png"))
|
||||
|
||||
def check_file_type(file_path):
|
||||
try:
|
||||
shell_section = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
|
||||
"cry", "tvm", "dec", "enc", "vmp", "upx", "aes", "lzma", "press",
|
||||
"pack", "enigma", "protect", "secur"]
|
||||
|
||||
unknown_section = ["asmstub", "base", "bss", "clr_uef", "cursors",
|
||||
"engine", "fio", "fothk", "h~;", "icapsec", "malloc_h", "miniex",
|
||||
"mssmixer", "ndr64", "nsys_wr", "obr", "wow", "wow64svc", "wpp_sf",
|
||||
"pad", "pgae", "poolmi", "proxy", "qihoo", "res", "retpol", "uedbg",
|
||||
"rwexec", "rygs", "s:@", "sanontcp", "segm", "test", "tracesup",
|
||||
"transit", "trs_age", "wisevec"]
|
||||
|
||||
unimportant_section = ["viahwaes", "orpc", "nep", "ace", "extjmp",
|
||||
"no_bbt", "data", "page", "hexpthk"]
|
||||
|
||||
shells = shell_section + unimportant_section + unknown_section
|
||||
|
||||
ftype = str(f".{file_path.split('.')[-1]}").lower()
|
||||
|
||||
if ftype in [".bat", ".cmd", ".ps1", ".vbs", ".wsf", ".js", ".html"]:
|
||||
with open(file_path, 'rb') as f:
|
||||
return [f.read()]
|
||||
|
||||
match_data = []
|
||||
if ftype in [".com", ".exe", ".dll", ".sys", ".scr"]:
|
||||
with pefile.PE(file_path, fast_load=True) as pe:
|
||||
for section in pe.sections:
|
||||
section_name = section.Name.rstrip(b'\x00').decode('latin1')
|
||||
#if (section.Characteristics & 0x00000020 and not
|
||||
#any(shell in section_name.lower() for shell in shells)):
|
||||
if section.Characteristics & 0x00000020:
|
||||
match_data.append(section.get_data())
|
||||
return match_data
|
||||
return False
|
||||
except Exception as e:
|
||||
print(e)
|
||||
return False
|
||||
|
||||
def batch_file_to_images(input_dir, output_dir):
|
||||
for root, dirs, files in os.walk(input_dir):
|
||||
for file in files:
|
||||
try:
|
||||
file_path = os.path.join(root, file)
|
||||
file_data = check_file_type(file_path)
|
||||
if file_data:
|
||||
for i, data in enumerate(file_data, 1):
|
||||
print(i, file_path)
|
||||
relative_path = os.path.relpath(root, input_dir)
|
||||
output_path_dir = os.path.join(output_dir, relative_path)
|
||||
if not os.path.exists(output_path_dir):
|
||||
os.makedirs(output_path_dir)
|
||||
file_to_images(data, output_path_dir, f"{i}_{file}")
|
||||
except Exception as e:
|
||||
print(e)
|
||||
pass
|
||||
|
||||
input_directory = input('Enter the folder path: ')
|
||||
output_directory = "./Image_File"
|
||||
batch_file_to_images(input_directory, output_directory)
|
||||
input('Conversion Complete')
|
||||
@@ -0,0 +1,111 @@
|
||||
import tensorflow as tf
|
||||
import os, tf2onnx, numpy, random
|
||||
from PIL import Image
|
||||
from tensorflow.keras import *
|
||||
|
||||
Image.MAX_IMAGE_PIXELS = None
|
||||
tf.keras.mixed_precision.set_global_policy('mixed_float16')
|
||||
|
||||
def get_file_list(directory):
|
||||
file_paths, labels, class_indices = [], [], {}
|
||||
for i, cls in enumerate(sorted([d for d in os.listdir(directory) if os.path.isdir(os.path.join(directory, d))])):
|
||||
class_indices[cls] = i
|
||||
cls_dir = os.path.join(directory, cls)
|
||||
for root, _, files in os.walk(cls_dir):
|
||||
for file in files:
|
||||
if file.lower().endswith(('.jpg', '.jpeg', '.png', '.bmp', '.gif')):
|
||||
file_paths.append(os.path.join(root, file))
|
||||
labels.append(i)
|
||||
return file_paths, labels, class_indices
|
||||
|
||||
def load_dataset(train_dir, val_dir, val_split=0.01, batch_size=128, color_mode="grayscale"):
|
||||
channels = 1 if color_mode == "grayscale" else 3
|
||||
if train_dir == val_dir:
|
||||
file_paths, labels, class_indices = get_file_list(train_dir)
|
||||
combined = list(zip(file_paths, labels))
|
||||
random.shuffle(combined)
|
||||
file_paths[:], labels[:] = zip(*combined)
|
||||
num_val = int(val_split * len(file_paths))
|
||||
train_files = file_paths[num_val:]
|
||||
train_labels = labels[num_val:]
|
||||
val_files = file_paths[:num_val]
|
||||
val_labels = labels[:num_val]
|
||||
else:
|
||||
train_files, train_labels, class_indices = get_file_list(train_dir)
|
||||
val_files, val_labels, _ = get_file_list(val_dir)
|
||||
num_classes = len(class_indices)
|
||||
|
||||
def parse_fn(filename, label):
|
||||
img = tf.io.read_file(filename)
|
||||
img = tf.image.decode_image(img, channels=channels, expand_animations=False)
|
||||
img = tf.cast(img, tf.float32) / 255.0
|
||||
label = tf.one_hot(label, depth=num_classes)
|
||||
return img, label
|
||||
|
||||
train_ds = tf.data.Dataset.from_tensor_slices((train_files, train_labels))
|
||||
train_ds = train_ds.map(parse_fn, num_parallel_calls=tf.data.AUTOTUNE)
|
||||
train_ds = train_ds.batch(batch_size).prefetch(tf.data.AUTOTUNE)
|
||||
val_ds = tf.data.Dataset.from_tensor_slices((val_files, val_labels))
|
||||
val_ds = val_ds.map(parse_fn, num_parallel_calls=tf.data.AUTOTUNE)
|
||||
val_ds = val_ds.batch(batch_size).prefetch(tf.data.AUTOTUNE)
|
||||
train_ds.class_indices = class_indices
|
||||
return train_ds, val_ds
|
||||
|
||||
def gated_conv(x, strides):
|
||||
c = layers.DepthwiseConv2D(3, strides=strides, padding='same', activation='gelu')(x)
|
||||
g = layers.DepthwiseConv2D(3, strides=strides, padding='same', activation='sigmoid')(x)
|
||||
return layers.Multiply()([c, g])
|
||||
|
||||
def multi_conv(x, strides):
|
||||
convs = [layers.DepthwiseConv2D(kernel_size=k, strides=strides, padding='same')(x) for k in [1, 3, 5, 7]]
|
||||
x = layers.Concatenate()(convs)
|
||||
x = layers.BatchNormalization()(x)
|
||||
return layers.Activation('gelu')(x)
|
||||
|
||||
def se_block(x, reduction):
|
||||
filters = x.shape[-1]
|
||||
s = layers.Conv2D(filters // reduction, 1, padding='same', activation='gelu')(x)
|
||||
s = layers.BatchNormalization()(s)
|
||||
s = layers.Conv2D(filters, 1, padding='same', activation='sigmoid')(s)
|
||||
s = layers.BatchNormalization()(s)
|
||||
return layers.multiply([x, s])
|
||||
|
||||
def build_model(input_shape, num_classes):
|
||||
i = layers.Input(shape=input_shape)
|
||||
x = multi_conv(i, strides=1)
|
||||
x = multi_conv(x, strides=2)
|
||||
x = gated_conv(x, strides=2)
|
||||
x = multi_conv(x, strides=2)
|
||||
x = multi_conv(x, strides=2)
|
||||
x = multi_conv(x, strides=2)
|
||||
x = se_block(x, reduction=2)
|
||||
x = layers.GlobalAveragePooling2D()(x)
|
||||
o = layers.Dense(num_classes, activation='softmax', dtype='float32')(x)
|
||||
return models.Model(i, o)
|
||||
|
||||
def lr_scheduler(epoch, lr):
|
||||
return 1e-3 * (0.7 ** epoch)
|
||||
|
||||
class CustomModelCheckpoint(callbacks.Callback):
|
||||
def on_epoch_end(self, epoch, logs=False):
|
||||
models.save_model(self.model, f"PYAS_Model_Epoch_{epoch + 1}.h5")
|
||||
spec = (tf.TensorSpec((None,) + train_ds.image_shape, tf.float32),)
|
||||
model_proto, _ = tf2onnx.convert.from_keras(self.model, input_signature=spec, opset=18)
|
||||
with open(f"PYAS_Model_Epoch_{epoch + 1}.onnx", "wb") as f:
|
||||
f.write(model_proto.SerializeToString())
|
||||
|
||||
train_ds, val_ds = load_dataset(r'./Image_File', r'./Image_File')
|
||||
for imgs, _ in train_ds.take(1):
|
||||
train_ds.image_shape = imgs.shape[1:]
|
||||
break
|
||||
strategy = tf.distribute.MirroredStrategy(cross_device_ops=tf.distribute.HierarchicalCopyAllReduce())
|
||||
with strategy.scope():
|
||||
try:
|
||||
model = models.load_model('PYAS_Model_Epoch_0.h5')
|
||||
print("Load model from disk")
|
||||
except:
|
||||
print("Creating a new model")
|
||||
model = build_model(train_ds.image_shape, len(train_ds.class_indices))
|
||||
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
|
||||
model.fit(train_ds, epochs=30, callbacks=[CustomModelCheckpoint(), callbacks.LearningRateScheduler(lr_scheduler)], validation_data=val_ds)
|
||||
input("Training complete.")
|
||||
@@ -1,8 +1,8 @@
|
||||
import "pe"
|
||||
|
||||
rule PYAS_Rules_A_1 {
|
||||
rule General_1 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_1"
|
||||
description = "1"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -57,9 +57,9 @@ rule PYAS_Rules_A_1 {
|
||||
1 of ($x*) and 8 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_2 {
|
||||
rule General_2 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_2"
|
||||
description = "2"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -82,9 +82,9 @@ rule PYAS_Rules_A_2 {
|
||||
8 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_3 {
|
||||
rule General_3 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_3"
|
||||
description = "3"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -106,7 +106,7 @@ rule PYAS_Rules_A_3 {
|
||||
$x1 and 8 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_4 {
|
||||
rule General_4 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A4"
|
||||
author = "PYAS Security"
|
||||
@@ -124,9 +124,9 @@ rule PYAS_Rules_A_4 {
|
||||
($x1 and $x2) and 5 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_5 {
|
||||
rule General_5 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_5"
|
||||
description = "5"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -147,9 +147,9 @@ rule PYAS_Rules_A_5 {
|
||||
$x1 and 3 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_6 {
|
||||
rule General_6 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_6"
|
||||
description = "6"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -214,9 +214,9 @@ rule PYAS_Rules_A_6 {
|
||||
1 of ($x*) and 5 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_7 {
|
||||
rule General_7 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_462"
|
||||
description = "7"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -247,9 +247,9 @@ rule PYAS_Rules_A_7 {
|
||||
10 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_8 {
|
||||
rule General_8 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_8"
|
||||
description = "8"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -278,9 +278,9 @@ rule PYAS_Rules_A_8 {
|
||||
2 of ($x*) and 6 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_9 {
|
||||
rule General_9 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_9"
|
||||
description = "9"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -303,9 +303,9 @@ rule PYAS_Rules_A_9 {
|
||||
6 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_10 {
|
||||
rule General_10 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_10"
|
||||
description = "10"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -329,9 +329,9 @@ rule PYAS_Rules_A_10 {
|
||||
($x1 and $x2) and 6 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_11 {
|
||||
rule General_11 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_11"
|
||||
description = "11"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -349,9 +349,9 @@ rule PYAS_Rules_A_11 {
|
||||
6 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_12 {
|
||||
rule General_12 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_12"
|
||||
description = "12"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -376,9 +376,9 @@ rule PYAS_Rules_A_12 {
|
||||
1 of ($x*) and 5 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_13 {
|
||||
rule General_13 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_13"
|
||||
description = "13"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -404,9 +404,9 @@ rule PYAS_Rules_A_13 {
|
||||
6 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_14 {
|
||||
rule General_14 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_14"
|
||||
description = "14"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -430,9 +430,9 @@ rule PYAS_Rules_A_14 {
|
||||
8 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_15 {
|
||||
rule General_15 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_15"
|
||||
description = "15"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -459,9 +459,9 @@ rule PYAS_Rules_A_15 {
|
||||
8 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_16 {
|
||||
rule General_16 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_16"
|
||||
description = "16"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -485,9 +485,9 @@ rule PYAS_Rules_A_16 {
|
||||
($x1 and $x2) and 6 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_17 {
|
||||
rule General_17 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_17"
|
||||
description = "17"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -508,9 +508,9 @@ rule PYAS_Rules_A_17 {
|
||||
$x1 and 8 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_18 {
|
||||
rule General_18 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_18"
|
||||
description = "18"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -531,9 +531,9 @@ rule PYAS_Rules_A_18 {
|
||||
6 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_19 {
|
||||
rule General_19 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_19"
|
||||
description = "19"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -560,9 +560,9 @@ rule PYAS_Rules_A_19 {
|
||||
($x1 and $x2) and 8 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_20 {
|
||||
rule General_20 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_20"
|
||||
description = "20"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -589,9 +589,9 @@ rule PYAS_Rules_A_20 {
|
||||
8 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_21 {
|
||||
rule General_21 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_21"
|
||||
description = "21"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -616,9 +616,9 @@ rule PYAS_Rules_A_21 {
|
||||
8 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_22 {
|
||||
rule General_22 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_22"
|
||||
description = "22"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -635,10 +635,9 @@ rule PYAS_Rules_A_22 {
|
||||
6 of them
|
||||
}
|
||||
|
||||
import "pe"
|
||||
rule PYAS_Rules_A_23 {
|
||||
rule General_23 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_23"
|
||||
description = "23"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -658,10 +657,9 @@ rule PYAS_Rules_A_23 {
|
||||
7 of them
|
||||
}
|
||||
|
||||
import "pe"
|
||||
rule PYAS_Rules_A_24 {
|
||||
rule General_24 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_24"
|
||||
description = "24"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -688,9 +686,9 @@ rule PYAS_Rules_A_24 {
|
||||
6 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_25 {
|
||||
rule General_25 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_25"
|
||||
description = "25"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -716,9 +714,9 @@ rule PYAS_Rules_A_25 {
|
||||
$x1 and 5 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_26 {
|
||||
rule General_26 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_26"
|
||||
description = "26"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -742,9 +740,9 @@ rule PYAS_Rules_A_26 {
|
||||
8 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_27 {
|
||||
rule General_27 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_27"
|
||||
description = "27"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -768,42 +766,37 @@ rule PYAS_Rules_A_27 {
|
||||
6 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_28 {
|
||||
rule General_28 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_28"
|
||||
description = "28"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
$s1 = "GNU C11 6.3.0" ascii
|
||||
$s2 = "GCC: (MinGW.org GCC-6.3.0-1) 6.3.0" fullword ascii
|
||||
$s3 = "___mingw_readdir" fullword ascii
|
||||
$s4 = "___mingw_closedir" fullword ascii
|
||||
$s5 = "___mingw_seekdir" fullword ascii
|
||||
$s6 = "%d is not a prime number." fullword ascii
|
||||
$s7 = "___mingw_rewinddir" fullword ascii
|
||||
$s8 = "__mingw32_init_mainargs" fullword ascii
|
||||
$s9 = "___mingw_telldir" fullword ascii
|
||||
$s10 = "Enter an integer: " fullword ascii
|
||||
$s11 = "___mingw_opendir" fullword ascii
|
||||
$s12 = "/home/keith/" ascii
|
||||
$s13 = "../../../src/gcc-6.3.0/libgcc" ascii
|
||||
$s14 = "___mingw_dirname" fullword ascii
|
||||
$s15 = "_isPrime`" fullword ascii
|
||||
$s16 = "%d is a prime number." fullword ascii
|
||||
$s17 = ".weak.__Jv_RegisterClasses.___EH_FRAME_BEGIN__" fullword ascii
|
||||
$s18 = "-mtune=generic" ascii
|
||||
$s19 = "-march=i586" ascii
|
||||
$s20 = "-g -g -g -O2 -O2 -O2" ascii
|
||||
$s21 = "-fbuilding-libgcc" ascii
|
||||
$s22 = "-fno-stack-protector" ascii
|
||||
$x1 = "schemas.microsoft.com" wide
|
||||
$x2 = "Client Worker Thread" ascii
|
||||
$s1 = "A6BFEA43-501F-456F-A845-983D3AD7B8F0" wide
|
||||
$s2 = "upgrader" wide
|
||||
$s3 = "rtvscan.exe" wide
|
||||
$s4 = "Enable-WindowsOptionalFeature -FeatureName" wide
|
||||
$s5 = "remupd.exe" fullword wide
|
||||
$s6 = "Mcshield.exe" fullword wide
|
||||
$s7 = "mssecess.exe" fullword wide
|
||||
$s8 = "RavMonD.exe" fullword wide
|
||||
$s9 = "KvMonXP.exe" fullword wide
|
||||
$s10 = "baiduSafeTray.exe" fullword wide
|
||||
$s11 = "Qavanijeb.exe" fullword wide
|
||||
$s12 = "%s --> Error: %d, EC: %d" fullword ascii
|
||||
$s13 = "wscript.exe //E:vbscript" wide
|
||||
$s14 = "upgrader_64" wide
|
||||
$s15 = "Process Data Error" fullword wide
|
||||
condition:
|
||||
uint16(0) == 0x5a4d and filesize < 500KB and
|
||||
8 of them
|
||||
uint16(0) == 0x5a4d and filesize < 1000KB and
|
||||
1 of ($x*) and 6 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_29 {
|
||||
rule General_29 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_29"
|
||||
description = "29"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -837,9 +830,9 @@ rule PYAS_Rules_A_29 {
|
||||
6 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_30 {
|
||||
rule General_30 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_30"
|
||||
description = "30"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -858,9 +851,9 @@ rule PYAS_Rules_A_30 {
|
||||
6 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_31 {
|
||||
rule General_31 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_31"
|
||||
description = "31"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -878,9 +871,9 @@ rule PYAS_Rules_A_31 {
|
||||
6 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_32 {
|
||||
rule General_32 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_32"
|
||||
description = "32"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -909,9 +902,9 @@ rule PYAS_Rules_A_32 {
|
||||
$x1 and 8 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_33 {
|
||||
rule General_33 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_33"
|
||||
description = "33"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -937,9 +930,9 @@ rule PYAS_Rules_A_33 {
|
||||
$x1 and 8 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_34 {
|
||||
rule General_34 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_30"
|
||||
description = "34"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -965,9 +958,9 @@ rule PYAS_Rules_A_34 {
|
||||
8 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_35 {
|
||||
rule General_35 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_35"
|
||||
description = "35"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -996,9 +989,9 @@ rule PYAS_Rules_A_35 {
|
||||
6 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_36 {
|
||||
rule General_36 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_36"
|
||||
description = "36"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -1023,9 +1016,9 @@ rule PYAS_Rules_A_36 {
|
||||
6 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_37 {
|
||||
rule General_37 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_37"
|
||||
description = "37"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -1053,9 +1046,9 @@ rule PYAS_Rules_A_37 {
|
||||
6 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_38 {
|
||||
rule General_38 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_38"
|
||||
description = "38"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -1083,9 +1076,9 @@ rule PYAS_Rules_A_38 {
|
||||
6 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_39 {
|
||||
rule General_39 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_39"
|
||||
description = "39"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -1104,9 +1097,9 @@ rule PYAS_Rules_A_39 {
|
||||
6 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_40 {
|
||||
rule General_40 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_40"
|
||||
description = "40"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -1136,9 +1129,9 @@ rule PYAS_Rules_A_40 {
|
||||
8 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_41 {
|
||||
rule General_41 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_41"
|
||||
description = "41"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -1160,9 +1153,9 @@ rule PYAS_Rules_A_41 {
|
||||
6 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_42 {
|
||||
rule General_42 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_42"
|
||||
description = "42"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -1182,9 +1175,9 @@ rule PYAS_Rules_A_42 {
|
||||
6 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_43 {
|
||||
rule General_43 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_43"
|
||||
description = "43"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -1209,9 +1202,9 @@ rule PYAS_Rules_A_43 {
|
||||
8 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_44 {
|
||||
rule General_44 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_44"
|
||||
description = "44"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -1239,9 +1232,9 @@ rule PYAS_Rules_A_44 {
|
||||
8 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_45 {
|
||||
rule General_45 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_45"
|
||||
description = "45"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -1268,9 +1261,9 @@ rule PYAS_Rules_A_45 {
|
||||
8 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_46 {
|
||||
rule General_46 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_46"
|
||||
description = "46"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -1298,9 +1291,9 @@ rule PYAS_Rules_A_46 {
|
||||
$x1 and 8 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_47 {
|
||||
rule General_47 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_47"
|
||||
description = "47"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -1329,9 +1322,9 @@ rule PYAS_Rules_A_47 {
|
||||
1 of ($x*) and 5 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_48 {
|
||||
rule General_48 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_48"
|
||||
description = "48"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -1350,9 +1343,9 @@ rule PYAS_Rules_A_48 {
|
||||
2 of ($x*) and 6 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_49 {
|
||||
rule General_49 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_49"
|
||||
description = "49"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -1378,9 +1371,9 @@ rule PYAS_Rules_A_49 {
|
||||
3 of ($x*) and 5 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_50 {
|
||||
rule General_50 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_50"
|
||||
description = "50"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -1400,9 +1393,9 @@ rule PYAS_Rules_A_50 {
|
||||
$x1 and 6 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_51 {
|
||||
rule General_51 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_51"
|
||||
description = "51"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
@@ -1420,9 +1413,9 @@ rule PYAS_Rules_A_51 {
|
||||
1 of ($x*) and 4 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_52 {
|
||||
rule General_52 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_52"
|
||||
description = "52"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-13"
|
||||
strings:
|
||||
@@ -1444,31 +1437,3 @@ rule PYAS_Rules_A_52 {
|
||||
uint16(0) == 0x5a4d and filesize < 2000KB and
|
||||
8 of them
|
||||
}
|
||||
|
||||
rule PYAS_Rules_A_53 {
|
||||
meta:
|
||||
description = "PYAS_Rules_A_53"
|
||||
author = "PYAS Security"
|
||||
date = "2024-06-12"
|
||||
strings:
|
||||
$x1 = "schemas.microsoft.com" wide
|
||||
$x2 = "Client Worker Thread" ascii
|
||||
$s1 = "A6BFEA43-501F-456F-A845-983D3AD7B8F0" wide
|
||||
$s2 = "upgrader" wide
|
||||
$s3 = "rtvscan.exe" wide
|
||||
$s4 = "Enable-WindowsOptionalFeature -FeatureName" wide
|
||||
$s5 = "remupd.exe" fullword wide
|
||||
$s6 = "Mcshield.exe" fullword wide
|
||||
$s7 = "mssecess.exe" fullword wide
|
||||
$s8 = "RavMonD.exe" fullword wide
|
||||
$s9 = "KvMonXP.exe" fullword wide
|
||||
$s10 = "baiduSafeTray.exe" fullword wide
|
||||
$s11 = "Qavanijeb.exe" fullword wide
|
||||
$s12 = "%s --> Error: %d, EC: %d" fullword ascii
|
||||
$s13 = "wscript.exe //E:vbscript" wide
|
||||
$s14 = "upgrader_64" wide
|
||||
$s15 = "Process Data Error" fullword wide
|
||||
condition:
|
||||
uint16(0) == 0x5a4d and filesize < 1000KB and
|
||||
1 of ($x*) and 6 of them
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
+1
-1
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020-2024 87owo (PYAS Security)
|
||||
Copyright (c) 2020-2025 87owo (PYAS Security)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"Labels": ["White/Pefile", "White/Script", "Virus/Pefile", "Virus/Script"],
|
||||
|
||||
"Detect": ["Virus/Pefile", "Virus/Script"],
|
||||
|
||||
"Pixels": [224, 224],
|
||||
|
||||
"Values": 95
|
||||
}
|
||||
Binary file not shown.
+128
@@ -0,0 +1,128 @@
|
||||
translate_dict = {
|
||||
"traditional_switch": {"开启":"開啟","关闭":"關閉","On":"開啟","Off":"關閉"},
|
||||
|
||||
"simplified_switch": {"開啟":"开启","關閉":"关闭","On":"开启","Off":"关闭",
|
||||
"錯誤":"错误","發現":"发现","關閉":"关闭","裝置":"设备","記憶體":"内存",
|
||||
"軟體":"软件","檔案":"文件","確定":"确认","設定":"设置","關於":"关于",
|
||||
"總數":"总数","註冊":"注册","圖標":"图标","路徑":"路径","網路":"网络",
|
||||
"位元":"字节","靈敏":"敏感","複製":"复制","開啟":"开启","靜態":"静态",
|
||||
"訊":"讯","項":"项","掃":"扫","試":"试","黃":"黄","嗎":"吗","防":"保",
|
||||
"鑰":"钥","當":"当","後":"后","護":"护","導":"导","區":"区","復":"复",
|
||||
"攔":"拦","請":"请","統":"统","刪":"删","進":"进","個":"个","選":"选",
|
||||
"啟":"启","監":"监","並":"并","徑":"径","盤":"盘","隱":"隐","動":"动",
|
||||
"狀":"状","誌":"志","這":"这","會":"会","題":"题","擇":"择","語":"语",
|
||||
"無":"无","顯":"显","變":"变","戶":"户","碼":"码","雲":"云","介":"界",
|
||||
"稱":"称","類":"类","輸":"输","執":"执","數":"数","尋":"寻","網":"网",
|
||||
"詢":"询","製":"制","員":"员","許":"许","條":"条","藍":"蓝","紅":"红",
|
||||
"綠":"绿","態":"态","務":"务","連":"连","檢":"检","測":"测","關":"关",
|
||||
"強":"强","驅":"驱","為":"为","腳":"脚","單":"单","開":"开","擴":"扩",
|
||||
"惡":"恶","據":"据","庫":"库","經":"经","敗":"败","謝":"谢","別":"别",
|
||||
"載":"载","誤":"误","報":"报","鏈":"链","竄":"窜","蹤":"踪","與":"与",
|
||||
"異":"异","實":"实","時":"时","彈":"弹","窗":"窗","暫":"暂","訂":"订",
|
||||
"資":"资","產":"产","金":"密","離":"离","規":"规","則":"则","來":"来",
|
||||
"殼":"壳","碼":"码","線":"线",},
|
||||
|
||||
"english_switch": {"開啟":"On","關閉":"Off","开启":"On","关闭":"Off",",":", ",
|
||||
"立即刪除":"Delete Now","安全模式":"Safe Mode","官方網站":"Official Website ",
|
||||
"腳本":"Script ","鏈式":"Chain ","記憶體":"Memory ","加載":"Load ",
|
||||
"行為":"Behavior ","可疑":"Suspicious ","勒索":"Ransom ","主要":"Main ",
|
||||
"許可條款":"License Terms ","惡意":"Malicious", "開發":"Developers ",
|
||||
"啟用":"Enable ","禁用":"Disable ","正在初始化中":"Initializing ",
|
||||
"正在掃描":"Scanning ","正在刪除":"Deleting ","正在追蹤":"Tracking ",
|
||||
"最小化到":"Minimize To ","靈敏度":"Sensitivity ","正在檢查":"Checking ",
|
||||
"確定要":"Sure Want To ","引擎靈敏度":"Sensitivity ","更新":"Update ",
|
||||
"白色主題":"White","黃色主題":"Yellow","紅色主題":"Red","語言":"Language ",
|
||||
"藍色主題":"Blue","綠色主題":"Green","自訂主題":"Custom","黑色主題":"Black",
|
||||
"特別感謝":"Contributors ","版本資訊":"Information","通訊":"Connect ",
|
||||
"註冊":"Registry ","退出":"Quit ","檔案":"File ","當前":"Currently ",
|
||||
"狀態":"State ","掃描":"Scan ","工具":"Tools ","防護":"Protect ",
|
||||
"失敗":"Failed ","請":"Please ","路徑":"Path ","方式":"Method ",
|
||||
"需要":"Need ","病毒":"Virus ","選擇":"Select ","返回":"Back",
|
||||
"受到":"Been ","錯誤":"Error","完成":"Complete ","引擎":"Engine ",
|
||||
"托盤":"Tray ","圖標":"Icon ","不安全":"Unsafe","增強":"Enhance ",
|
||||
"系統":"System ","雲端":"Cloud ","重啟":"Reboot ","修復":"Repair ",
|
||||
"裝置":"Device ","發現":"Found ","成功":"Success ","清理":"Cleanup ",
|
||||
"確定":"OK","執行":"Execute ","警告":"Warning ","使用":"Use ",
|
||||
"網路":"Network ","變更":"Change ","總數":"Total","結束":"End ",
|
||||
"選項":"Options ","監控":"Monitor ","連接":"Connect ","可以":"Can ",
|
||||
"進程":"Process ","攔截":"Block ","引導":"Boot ","刪除":"Delete ",
|
||||
"分區":"Partition ","設定":"Setting ","關於":"About","模式":"Mode ",
|
||||
"提高":"Improve ","安全":"Security ","顯色":"Color ","顏色":"Color ",
|
||||
"主題":"Theme ", "回收":"Collect ", "無用":"Useless ","導入":"Import ",
|
||||
"風險":"Risk ","介面":"UI ","核心":"Core ","服務":"Services ",
|
||||
"管理":"Manage","所有":"All ","您":"You ","取消":"Cancel ","未":"Not ",
|
||||
"垃圾":"Junk ","位元":"byte ","本機":"Computer ","停止":"Stop ",
|
||||
"到":"To ","白名單":"White List ","軟體":"Software ","正在":"",
|
||||
"增加":"Add ","移除":"Delete ","項目":"Items ","生成":"Create ","稱":"",
|
||||
"複製":"Copy ","此":"This ","並":"And ","全盤":"Full ","最新":"Latest ",
|
||||
"已存在":"Already ","數據庫":"Database ","誤報":"False Positive ",
|
||||
"高":"High ","新":"New ","和":"And ","可能會":"Possible ","會":"Can ",
|
||||
"日誌":"Log","已":"Has ","彈窗":"Window ","要":"To ","驅動":"Driver ",
|
||||
"的":"","顯示":"","個":"","嗎":"","了":"","行":"","立即":"","規則":"Rule ",
|
||||
"密鑰":"Key ","檢測":"Detect ","製作":"Maker ","運行":"Running",
|
||||
"擴展":"Extension ","套件":"Kit ","自動":"Auto ","上報":"Report ",
|
||||
"分析":"Analysis ","自身":"Self ","其他":"Other ","配置":"Config ",
|
||||
"丟失":"Lost ","網站":"Website ","不兼容":"Not Compatible ","列表":"List ",
|
||||
"竄改":"Tamper ","第三方":"Other ","實時":"Real Time ","查看":"View ",
|
||||
"指定":"Specify ","清空":"Empty ","資源回收桶":"Recycle Bin ", "無法":"Cannot ",
|
||||
"與":"With ","當":"When ","功能":"Function ","異常":"Abnormal ", "來":"To ",
|
||||
"重置":"Reset ","窗口":"Window ","暫存":"Temp ","自訂":"Custom ",
|
||||
"不支持":"Not Support ","共":"Total ","秒":"Seconds ","耗時":"Takes ",
|
||||
"沙箱":"Sandbox ", "虛擬":"Virtual ", "隔離":"Quarantine ", "時":"",
|
||||
"建立":"Create ","環境":"Environment ","沙箱":"Sandbox ","化":"", "表":"",
|
||||
"達":"Reached ", "上限":"Limit ", "區":"", "金鑰":"Key ", "產品":"Product ",
|
||||
"托管":"CLR ","殼碼":"Shellcode ","線程":"Thread ","注入":"Inject ",
|
||||
"前往":"Go ","檢查":"Check ","可用":"Available ","靜態":"Static ", " ":" "},
|
||||
|
||||
"white_switch": {
|
||||
"_white": "_black",},
|
||||
"red_switch": {
|
||||
"235, 235, 235": "255, 235, 235",
|
||||
"245, 245, 245": "255, 225, 225",
|
||||
"255, 255, 255": "255, 245, 245",
|
||||
"240, 240, 240": "255, 220, 220",
|
||||
"250, 250, 250": "255, 210, 210",
|
||||
"220, 255, 220": "255, 220, 220",
|
||||
"210, 255, 210": "255, 210, 210",
|
||||
"_white": "_black"
|
||||
},
|
||||
"yellow_switch": {
|
||||
"235, 235, 235": "255, 255, 235",
|
||||
"245, 245, 245": "255, 255, 225",
|
||||
"255, 255, 255": "255, 255, 245",
|
||||
"240, 240, 240": "255, 255, 220",
|
||||
"250, 250, 250": "255, 255, 210",
|
||||
"220, 255, 220": "255, 255, 220",
|
||||
"210, 255, 210": "255, 255, 210",
|
||||
"_white": "_black"
|
||||
},
|
||||
"green_switch": {
|
||||
"235, 235, 235": "235, 255, 235",
|
||||
"245, 245, 245": "225, 255, 225",
|
||||
"255, 255, 255": "245, 255, 245",
|
||||
"240, 240, 240": "220, 255, 220",
|
||||
"250, 250, 250": "210, 255, 210",
|
||||
"_white": "_black"
|
||||
},
|
||||
"blue_switch": {
|
||||
"235, 235, 235": "235, 235, 255",
|
||||
"245, 245, 245": "225, 225, 255",
|
||||
"255, 255, 255": "245, 245, 255",
|
||||
"240, 240, 240": "220, 220, 255",
|
||||
"250, 250, 250": "210, 210, 255",
|
||||
"220, 255, 220": "220, 220, 255",
|
||||
"210, 255, 210": "210, 210, 255",
|
||||
"_white": "_black"
|
||||
},
|
||||
"black_switch": {
|
||||
"255, 255, 255": "55, 55, 55",
|
||||
"245, 245, 245": "75, 75, 75",
|
||||
"235, 235, 235": "65, 65, 65",
|
||||
"240, 240, 240": "80, 80, 80",
|
||||
"250, 250, 250": "90, 90, 90",
|
||||
"220, 255, 220": "80, 80, 80",
|
||||
"210, 255, 210": "90, 90, 90",
|
||||
"0, 0, 0": "255, 255, 255",
|
||||
"_black": "_white"
|
||||
}
|
||||
}
|
||||
+130
-91
@@ -1,111 +1,150 @@
|
||||
import os, io, sys, time, json, yara
|
||||
import numpy, pefile, onnxruntime
|
||||
from PIL import Image, ImageShow
|
||||
import os, yara, numpy, locale, pefile, onnxruntime
|
||||
from PIL import Image
|
||||
|
||||
class YRScan:
|
||||
class rule_scanner:
|
||||
def __init__(self):
|
||||
self.rules = {}
|
||||
self.network = []
|
||||
|
||||
def load_rules(self, file_path):
|
||||
try:
|
||||
ftype = str(f".{file_path.split('.')[-1]}").lower()
|
||||
if ftype in [".yara", ".yar"]:
|
||||
self.rules[file_path] = yara.compile(file_path)
|
||||
elif ftype in [".yc", ".yrc"]:
|
||||
self.rules[file_path] = yara.load(file_path)
|
||||
elif ftype in [".ip", ".ips"]:
|
||||
with open(file_path, "r") as f:
|
||||
self.network += [l.strip() for l in f.readlines()]
|
||||
except:
|
||||
pass
|
||||
def load_path(self, path):
|
||||
for root, _, files in os.walk(path):
|
||||
for file in files:
|
||||
self.load_file(os.path.join(root, file))
|
||||
|
||||
def yr_scan(self, file_path):
|
||||
def load_file(self, file):
|
||||
ext = os.path.splitext(file)[1].lower()
|
||||
try:
|
||||
if isinstance(file_path, str):
|
||||
with open(file_path, "rb") as f:
|
||||
file_path = f.read()
|
||||
for name, rules in self.rules.items():
|
||||
matchs_rules = rules.match(data=file_path)
|
||||
if matchs_rules:
|
||||
return "Virus/Rules", matchs_rules
|
||||
if ext in ('.yara', '.yar'):
|
||||
self.rules[file] = yara.compile(file)
|
||||
elif ext in ('.yc', '.yrc'):
|
||||
self.rules[file] = yara.load(file)
|
||||
elif ext in ('.ip', '.txt'):
|
||||
with open(file, "r", encoding="utf-8", errors="ignore") as f:
|
||||
self.network.extend(line.strip() for line in f if line.strip())
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
def yara_scan(self, file_path):
|
||||
try:
|
||||
data = open(file_path, "rb").read() if isinstance(file_path, str) else file_path
|
||||
for rules in self.rules.values():
|
||||
matches = rules.match(data=data)
|
||||
if matches:
|
||||
rule_name = str(matches[0])
|
||||
label = rule_name.split("_")[0]
|
||||
level = rule_name.split("_")[-1]
|
||||
return f"Rules/{label}", level
|
||||
return False, False
|
||||
except:
|
||||
except Exception:
|
||||
return False, False
|
||||
|
||||
class DLScan:
|
||||
class model_scanner:
|
||||
SHELLS = {
|
||||
"0","1","2","3","4","5","6","7","8","9","cry","tvm","dec","enc","vmp","upx","aes","lzma","press","pack",
|
||||
"enigma","protect","secur","asmstub","base","bss","clr_uef","cursors","transit","trs_age","engine","fio",
|
||||
"fothk","h~;","icapsec","malloc_h","miniex","mssmixer","ndr64","nsys_wr","obr","wow","wow64svc","wpp_sf",
|
||||
"pad","pgae","poolmi","proxy","qihoo","retpol","uedbg","tracesup","rwexec","rygs","s:@","sanontcp","segm",
|
||||
"test","res","wisevec","viahwaes","orpc","nep","ace","extjmp","no_bbt","data","page","hexpthk"}
|
||||
|
||||
def __init__(self):
|
||||
self.models = {}
|
||||
self.shells = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '!o',
|
||||
'cry', 'test', 'ace', 'yg', 'obr', 'tvm', 'dec', 'enc', 'b1_', 'base',
|
||||
'bss', 'clr_uef', 'cursors', 'trs_age', 'engine', 'enigma', 'protect',
|
||||
'nep', 'no_bbt', 'wpp_sf', 'retpol', 'rt', 'rwexec', 'rygs', 'poolmi',
|
||||
's:@', 'pgae', 'proxy', 'wisevec', 'segm', 'transit', 'vmp', 'extjmp',
|
||||
'upx', 'tracesup', 'res', 'lzma', 'malloc_h', 'miniex', 'ndr64', 'be',
|
||||
'mssmixer', 'wow', 'press', 'fio', 'pad', 'hexpthk', 'h~;', 'icapsec',
|
||||
'sanontcp', 'secur', 'asmstub', 'nsys_wr', 'orpc', 'pack', 'wow64svc',
|
||||
'uedbg', 'viahw', 'data', 'zk', 'fothk', 'qihoo']
|
||||
self.suffix = {".com", ".exe", ".dll", ".sys", ".scr", ".bat", ".cmd", ".ps1", ".vbs", ".wsf"}
|
||||
self.labels = ["Pefile/White", "Script/White", "Pefile/General", "Script/General"]
|
||||
self.detect = {"Pefile/General", "Script/General"}
|
||||
self.resize = (224, 224)
|
||||
|
||||
def load_model(self, file_path):
|
||||
try:
|
||||
ftype = str(f".{file_path.split('.')[-1]}").lower()
|
||||
if ftype in [".json", ".txt"]:
|
||||
with open(file_path, 'r') as f:
|
||||
self.class_names = json.load(f)
|
||||
elif ftype in [".onnx"]:
|
||||
self.models[file_path] = onnxruntime.InferenceSession(file_path)
|
||||
self.labels = self.class_names['Labels']
|
||||
self.detect = self.class_names['Detect']
|
||||
self.pixels = self.class_names['Pixels']
|
||||
self.values = self.class_names['Values']
|
||||
except Exception as e:
|
||||
pass
|
||||
def load_path(self, path):
|
||||
for root, _, files in os.walk(path):
|
||||
for file in files:
|
||||
self.load_file(os.path.join(root, file))
|
||||
|
||||
def dl_scan(self, file_data):
|
||||
def load_file(self, file):
|
||||
if file.lower().endswith('.onnx'):
|
||||
try:
|
||||
self.models[file] = onnxruntime.InferenceSession(file)
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
def is_valid_suffix(self, file_path):
|
||||
return os.path.splitext(file_path)[-1].lower() in self.suffix
|
||||
|
||||
def model_scan(self, file_path):
|
||||
try:
|
||||
target_size, sim = tuple(self.pixels), {}
|
||||
image = self.preprocess_image(file_data, target_size)
|
||||
image_array = numpy.array(image).astype('float32') / 255.0
|
||||
image_expand = numpy.expand_dims(image_array, axis=0)
|
||||
for model_name, model in self.models.items():
|
||||
input_name = model.get_inputs()[0].name
|
||||
pre_answer = model.run(None, {input_name: image_expand})[0][0]
|
||||
number = numpy.argmax(pre_answer)
|
||||
label = self.labels[number].replace("\n", "")
|
||||
sim[label] = sim.setdefault(label, 0) + pre_answer[number]
|
||||
for local_label, sim_sum in sim.items():
|
||||
if sim_sum > len(self.models) / 2:
|
||||
local_level = sim_sum / len(self.models)
|
||||
print(local_label, local_level * 100)
|
||||
return local_label, local_level * 100
|
||||
if not self.models or not self.is_valid_suffix(file_path):
|
||||
return False, False
|
||||
|
||||
model = next(iter(self.models.values()))
|
||||
shape = model.get_inputs()[0].shape
|
||||
channels = shape[-1] if shape[-1] in (1, 3) else (shape[1] if shape[1] in (1, 3) else 1)
|
||||
|
||||
file_sections = self.get_type(file_path)
|
||||
if not file_sections:
|
||||
return False, False
|
||||
|
||||
batch_images = [self.preprocess_image(data, self.resize, channels) for data in file_sections.values()]
|
||||
arr = numpy.stack([numpy.asarray(img).astype('float32') / 255.0 for img in batch_images])
|
||||
if arr.ndim == 3:
|
||||
arr = arr[..., None]
|
||||
if shape[-1] in (1, 3):
|
||||
model_input = arr
|
||||
elif shape[1] in (1, 3):
|
||||
model_input = arr.transpose(0, 3, 1, 2)
|
||||
else:
|
||||
return False, False
|
||||
|
||||
input_name = model.get_inputs()[0].name
|
||||
predictions = model.run(None, {input_name: model_input})[0]
|
||||
|
||||
label_scores = {label: [] for label in self.labels}
|
||||
for pre_answers in predictions:
|
||||
for k, score in enumerate(pre_answers):
|
||||
label_scores[self.labels[k]].append(score)
|
||||
label_percentage = {label: (sum(scores)/len(scores))*100 for label, scores in label_scores.items() if scores}
|
||||
if not label_percentage:
|
||||
return False, False
|
||||
best_label, best_conf = max(label_percentage.items(), key=lambda x: x[1])
|
||||
if best_label in self.detect:
|
||||
return best_label, int(best_conf)
|
||||
return False, False
|
||||
except Exception as e:
|
||||
except Exception:
|
||||
return False, False
|
||||
|
||||
def preprocess_image(self, file_data, size, channels=1):
|
||||
width, height = size
|
||||
wah = int(numpy.ceil(numpy.sqrt(len(file_data) / channels)))
|
||||
arr = numpy.frombuffer(file_data, dtype=numpy.uint8)
|
||||
img = numpy.zeros(wah*wah*channels, dtype=numpy.uint8)
|
||||
img[:len(file_data)] = arr
|
||||
if channels == 1:
|
||||
image = Image.fromarray(img.reshape((wah, wah)), 'L')
|
||||
else:
|
||||
image = Image.fromarray(img.reshape((wah, wah, channels)), 'RGB')
|
||||
return image.resize((width, height), Image.Resampling.NEAREST)
|
||||
|
||||
def is_text_file(self, content, sample_size=1024):
|
||||
raw = content[:sample_size]
|
||||
if not raw:
|
||||
return False
|
||||
text_char = set(range(32, 127)) | {9, 10, 13}
|
||||
nontext = sum(b not in text_char for b in raw)
|
||||
return nontext / len(raw) < 0.15
|
||||
|
||||
def get_type(self, file_path):
|
||||
try:
|
||||
match_data = {}
|
||||
ftype = str(f".{file_path.split('.')[-1]}").lower()
|
||||
if ftype in [".exe", ".dll", ".sys", ".scr", ".com"]:
|
||||
with pefile.PE(file_path, fast_load=True) as pe:
|
||||
for section in pe.sections:
|
||||
section_name = section.Name.rstrip(b'\x00').decode('latin1')
|
||||
if (section.Characteristics & 0x00000020 and not
|
||||
any(shell in section_name.lower() for shell in self.shells)):
|
||||
match_data[section_name] = section.get_data()
|
||||
elif ftype in [".bat", ".vbs", ".ps1", ".cmd", ".js"]:
|
||||
with open(file_path, 'rb') as file:
|
||||
match_data[ftype] = file.read()
|
||||
match_data = {}
|
||||
if not self.is_valid_suffix(file_path):
|
||||
return match_data
|
||||
except:
|
||||
return {}
|
||||
|
||||
def preprocess_image(self, file_data, target_size):
|
||||
file_data = numpy.frombuffer(file_data, dtype=numpy.uint8)
|
||||
data_count = len(file_data)
|
||||
wah = int(numpy.ceil(numpy.sqrt((data_count + 2) // 3)))
|
||||
image_array = numpy.zeros((wah * wah * 3,), dtype=numpy.uint8)
|
||||
image_array[:data_count] = file_data
|
||||
image_array = image_array.reshape((wah, wah, 3))
|
||||
image = Image.fromarray(image_array)
|
||||
return image.resize(target_size, Image.Resampling.LANCZOS)
|
||||
try:
|
||||
with pefile.PE(file_path, fast_load=True) as pe:
|
||||
sec = pe.OPTIONAL_HEADER.DATA_DIRECTORY[pefile.DIRECTORY_ENTRY['IMAGE_DIRECTORY_ENTRY_SECURITY']]
|
||||
if bool(sec.VirtualAddress and sec.Size):
|
||||
return {}
|
||||
for section in pe.sections:
|
||||
name = section.Name.rstrip(b'\x00').decode('latin1').lower()
|
||||
if (section.Characteristics & 0x00000020) and name not in self.SHELLS:
|
||||
match_data[name] = section.get_data()
|
||||
except pefile.PEFormatError:
|
||||
with open(file_path, 'rb') as f:
|
||||
file_content = f.read()
|
||||
if self.is_text_file(file_content):
|
||||
match_data[os.path.splitext(file_path)[-1].lower()] = file_content
|
||||
return match_data
|
||||
+1539
-1877
File diff suppressed because it is too large.
Load diff
@@ -1,60 +0,0 @@
|
||||
translate_dict = {
|
||||
"zh_TW": {"已开启":"已開啟","已关闭":"已關閉","On":"已開啟","Off":"已關閉"},
|
||||
"zh_CN": {"已開啟":"已开启","已關閉":"已关闭","On":"已开启","Off":"已关闭",
|
||||
"軟體":"软件","檔案":"文件","確定":"确认","設定":"设置","關於":"关于",
|
||||
"錯誤":"错误","實時":"实时","發現":"发现","關閉":"关闭","裝置":"设备",
|
||||
"總數":"总数","註冊":"注册","圖標":"图标","路徑":"路径","網路":"网络",
|
||||
"位元":"字节","彈窗":"弹窗","靈敏":"敏感","複製":"复制","開啟":"开启",
|
||||
"訊":"讯","項":"项","掃":"扫","試":"试","黃":"黄","嗎":"吗","防":"保",
|
||||
"鑰":"钥","當":"当","後":"后","護":"护","導":"导","區":"区","復":"复",
|
||||
"攔":"拦","請":"请","統":"统","刪":"删","進":"进","個":"个","選":"选",
|
||||
"啟":"启","監":"监","並":"并","徑":"径","盤":"盘","隱":"隐","動":"动",
|
||||
"狀":"状","誌":"志","這":"这","會":"会","題":"题","擇":"择","語":"语",
|
||||
"無":"无","顯":"显","變":"变","戶":"户","碼":"码","雲":"云","介":"界",
|
||||
"稱":"称","類":"类","輸":"输","執":"执","數":"数","尋":"寻","網":"网",
|
||||
"詢":"询","製":"制","員":"员","許":"许","條":"条","藍":"蓝","紅":"红",
|
||||
"綠":"绿","態":"态","務":"务","連":"连","檢":"检","測":"测","關":"关",
|
||||
"強":"强","驅":"驱","為":"为","腳":"脚","單":"单","開":"开","擴":"扩",
|
||||
"惡":"恶","據":"据","庫":"库","經":"经","敗":"败","謝":"谢","別":"别",
|
||||
"載":"载","誤":"误","報":"报","鏈":"链","竄":"窜","蹤":"踪","記憶體":"内存",},
|
||||
"en_US": {"已開啟":"On","已關閉":"Off","已开启":"On","已关闭":"Off",",":", ",
|
||||
"立即刪除":"Delete Now","安全模式":"Safe Mode","官方網站":"Website ",
|
||||
"腳本":"Script ","鏈式":"Chain ","記憶體":"Memory ","加載":"Load ",
|
||||
"行為":"Behavior ","可疑":"Suspicious ","勒索":"Ransom ",
|
||||
"許可條款":"License Terms ","惡意":"Malicious","可疑":"Suspicious",
|
||||
"啟用":"Enable ","禁用":"Disable ","正在初始化中":"Initializing ",
|
||||
"正在掃描":"Scanning ","正在刪除":"Deleting ","正在追蹤":"Tracking ",
|
||||
"最小化到":"Minimize To ","靈敏度":"Sensitivity ","正在檢查":"Checking ",
|
||||
"確定要":"Sure Want To ","引擎靈敏度":"Sensitivity ","更新":"Update ",
|
||||
"白色主題":"White","黃色主題":"Yellow","紅色主題":"Red","語言":"Language ",
|
||||
"藍色主題":"Blue","綠色主題":"Green","自定主題":"Custom","最新":"Latest ",
|
||||
"特別感謝":"Contributors ","版本資訊":"Information","通訊":"Connect ",
|
||||
"註冊表":"Registry ","退出":"Quit ","檔案":"File ","當前":"Currently ",
|
||||
"狀態":"State ","掃描":"Scan ","工具":"Tools ","防護":"Protect ",
|
||||
"失敗":"Failed ","請":"Please ","路徑":"Path ","方式":"Method ",
|
||||
"需要":"Need ","病毒":"Virus ","選擇":"Select ","返回":"Back",
|
||||
"受到":"Been ","錯誤":"Error","完成":"Complete ","引擎":"Engine ",
|
||||
"托盤":"Tray ","圖標":"Icon ","不安全":"Unsafe","增強":"Enhance ",
|
||||
"系統":"System ","雲端":"Cloud ","重啟":"Reboot ","修復":"Repair ",
|
||||
"裝置":"Device ","發現":"Found ","成功":"Success ","清理":"Cleanup ",
|
||||
"確定":"OK","執行":"Execute ","警告":"Warning ","使用":"Use ",
|
||||
"網路":"Network ","變更":"Change ","總數":"Total","結束":"End ",
|
||||
"選項":"Options ","監控":"Monitor ","連接":"Connect ","可以":"To ",
|
||||
"進程":"Process ","攔截":"Block ","引導":"Boot ","刪除":"Delete ",
|
||||
"分區":"Partition ","設定":"Settings","關於":"About","模式":"Mode ",
|
||||
"提高":"Improve ","安全":"Security ","顯色":"Color ","主題":"Themes ",
|
||||
"風險":"Risk ","介面":"GUI ","核心":"Core ","服務":"Services ",
|
||||
"管理":"Manage","所有":"All ","您":"You ","取消":"Cancel ","未":"Not ",
|
||||
"垃圾":"Junk ","位元":"byte ","本機":"Computer ","停止":"Stop ",
|
||||
"增加到":"Add To ","白名單":"White List ","軟體":"Software ","正在":"",
|
||||
"增加":"Add ","移除":"Delete","項目":"Items ","生成":"Create ","稱":"",
|
||||
"複製":"Copy ","開啟":"Open ","此":"This ","並":"And ","全盤":"Full ",
|
||||
"已經在":"Already ","數據庫":"Database ","誤報":"False Positive ",
|
||||
"高":"High ","新":"New ","和":"And ","可能會":"Possible ","會":"Can ",
|
||||
"日誌":"Log","已":"Has ","彈窗":"Window ","要":"To ","驅動":"Driver ",
|
||||
"的":"","顯示":"","個":"","嗎":"","中":"","了":"","行":"","立即":"",
|
||||
"密鑰":"Key ","檢測":"Detect ","製作":"Maker ","運行":"Running",
|
||||
"擴展":"Extension ","套件":"Kit ","自動":"Auto ","上報":"Report ",
|
||||
"分析":"Analysis ","自身":"Self ","其他":"Other ","配置":"Config ",
|
||||
"丟失":"Lost ","網站":"Website ","不兼容":"Not Compatible ",
|
||||
"竄改":"Tamper ","第三方":"Other ","與":"With "," ":" "}}
|
||||
+14450
-9866
File diff suppressed because it is too large.
Load diff
@@ -1,12 +0,0 @@
|
||||
slist = [".exe",".dll",".sys",".com",".scr",
|
||||
".bat",".ps1",".vbs",".cmd",".js"]
|
||||
|
||||
alist = [".exe",".dll",".sys",".com",".scr",
|
||||
".zip",".7z",".rar",".tar",".gz",
|
||||
".js",".bat",".cmd",".ps1",".vbs",
|
||||
".ppt",".pptx",".wps",".txt",".rtf",
|
||||
".pdf",".xls",".xlsx",".doc",".docx",
|
||||
".jpg",".jpeg",".png",".webp",".gif",
|
||||
".mp3",".wav",".aac",".ogg",".flac",
|
||||
".mp4",".avi",".mov",".wmv",".mkv",
|
||||
".aux",".cur",".mui",".ttf",".efi"]
|
||||
+1
-1
@@ -2,7 +2,7 @@ import pyinstaller_versionfile
|
||||
|
||||
pyinstaller_versionfile.create_versionfile(
|
||||
output_file="versionfile.txt",
|
||||
version='3.2.1',
|
||||
version='3.3.3',
|
||||
company_name="PYAS Security",
|
||||
file_description="Python Antivirus Software",
|
||||
internal_name="PYAS",
|
||||
|
||||
Binary file not shown.
@@ -1,81 +1,72 @@
|
||||
# PYAS (Python Antivirus Software)
|
||||
# PYAS
|
||||
|
||||

|
||||
Python antivirus software uses deep learning and behavioral monitoring to block threats!
|
||||
|
||||

|
||||
|
||||
## Readme Language
|
||||
|
||||
English : https://github.com/87owo/PYAS/blob/main/README.md
|
||||
|
||||
繁體中文 : https://github.com/87owo/PYAS/blob/main/README_zh_TW.md
|
||||
|
||||
简体中文 : https://github.com/87owo/PYAS/blob/main/README_zh_CN.md
|
||||
|
||||
## Requirements
|
||||
|
||||
Python 3.10 is recommended. Other Python versions may require different pip commands.
|
||||
|
||||
```
|
||||
pip install psutil==5.9.5
|
||||
pip install pefile==2023.2.7
|
||||
pip install requests==2.31.0
|
||||
pip install pyperclip==1.8.2
|
||||
pip install pywin32==306
|
||||
pip install PyQt5==5.15.9
|
||||
pip install yara-python==4.5.1
|
||||
pip install numpy==2.1.1
|
||||
pip install numpy==1.26.4
|
||||
pip install onnxruntime==1.18.1
|
||||
pip install pillow==10.4.0
|
||||
pip install pefile==2023.2.7
|
||||
pip install Pillow==11.0.0
|
||||
pip install pyperclip==1.9.0
|
||||
pip install PySide6==6.9.1
|
||||
pip install requests==2.32.4
|
||||
pip install yara-python==4.5.4
|
||||
```
|
||||
|
||||
## File Information
|
||||
|
||||
The following lists the storage locations of all relevant code and other related documents.
|
||||
|
||||
```
|
||||
PYAS/
|
||||
├── Driver/
|
||||
│ ├── PYAS_Driver.sys -------> Driver Protect (self protection driver for pyas by 0sha0)
|
||||
│ └── ...
|
||||
├── Engine/
|
||||
│ ├── Models/ # Directory for ONNX AI models
|
||||
│ └── Rules/ # Directory for YARA and network rules
|
||||
│
|
||||
├── Model/
|
||||
│ ├── PYAS_Model.json -------> Virus Database (the database must be in the specified dir)
|
||||
│ └── ...
|
||||
├── Plugins/
|
||||
│ └── Filter/ # Windows kernel driver for security protection
|
||||
│
|
||||
├── Rules/
|
||||
│ ├── Yara_Rules.yar ---------> Yara Rules (yara rules in plain text format)
|
||||
│ ├── Yara_Rules.yrc ---------> Compile Rules (yara rules in compiled format)
|
||||
│ └── ...
|
||||
│
|
||||
├── PYAS.py ---------------------> Main PYAS Program (including animation, scan, protect functions, ...)
|
||||
├── PYAS_Engine.py -------------> Conversion Database (used to transform profiles and forecast data)
|
||||
├── PYAS_Suffixes.py -----------> File Suffixes (including scanned file suffixes and common suffixes)
|
||||
├── PYAS_Interface.py ----------> PyQt5 Interface (use QT designer, must be matched with the main program)
|
||||
├── PYAS_Resource.py -----------> PyQt5 Resource (status pictures, icon packages, button icons, ...)
|
||||
├── PYAS_Language.py -----------> Translate Dict (Traditional Chinese, Simplified Chinese, English)
|
||||
├── PYAS_Version.py ------------> Pyinstaller (file information, version information, original name, ...)
|
||||
└── ...
|
||||
├── PYAS.py # Main application and GUI interface
|
||||
├── PYAS_Config.py # Configuration handling and global parameters
|
||||
├── PYAS_Engine.py # YARA and ONNX Scanning engine
|
||||
├── PYAS_Interface.py # User interface definitions and widget logic
|
||||
├── PYAS_Resource.py # Static picture resource management
|
||||
├── PYAS_Version.py # Packaging and version info
|
||||
└── ... # Other supplementary folders and files
|
||||
```
|
||||
|
||||
## Official Website
|
||||
## Packaged Releases
|
||||
|
||||
https://pyantivirus.wixsite.com/pyas
|
||||
|
||||
https://github.com/87owo/PYAS
|
||||
|
||||
## Microsoft Runtime
|
||||
|
||||
https://github.com/87owo/Microsoft_Runtime/releases
|
||||
|
||||
## PYAS Driver
|
||||
|
||||
https://github.com/0sha0/PYAS_Protection
|
||||
|
||||
## MIT license
|
||||
|
||||
https://github.com/87owo/PYAS/blob/main/LICENSE.md
|
||||
Packaged Releases Download: https://github.com/87owo/PYAS/releases
|
||||
|
||||
## Support System
|
||||
|
||||
Windows 8.1, 10, 11 (64-bit), Ram 500MB, Rom 200MB or higher
|
||||
| Config | Permissions | System version | Available memory | Available storage |
|
||||
|-----------|---------------|----------------|------------------|-------------------|
|
||||
| Minimum | Administrator | Windows 10 | 200MB | 100MB |
|
||||
| Recommend | Administrator | Windows 10 | 300MB | 200MB |
|
||||
| Optimal | Administrator | Windows 11 | 500MB | 200MB |
|
||||
|
||||
Other systems may experience software malfunctions or crash
|
||||
## Official Website
|
||||
|
||||
## Special Thanks
|
||||
Official Website : https://pyantivirus.wixsite.com/pyas
|
||||
|
||||
Wix, 0sha0, mtkiao129, AV-T Team of LisectGroup
|
||||
Open Source Website : https://github.com/87owo/PYAS
|
||||
|
||||
Copyright© 2020~2024 PYAS Security By 87owo
|
||||
## Project License
|
||||
|
||||
https://github.com/87owo/PYAS/blob/main/LICENSE.md
|
||||
+49
-52
@@ -1,75 +1,72 @@
|
||||
# PYAS (Python 杀毒软件)
|
||||
# PYAS
|
||||
|
||||

|
||||
以 Python 开发的杀毒软件,结合深度学习与行为监控来阻挡威胁!
|
||||
|
||||
## 安装要求
|
||||

|
||||
|
||||
## 说明语言
|
||||
|
||||
English : https://github.com/87owo/PYAS/blob/main/README.md
|
||||
|
||||
繁體中文 : https://github.com/87owo/PYAS/blob/main/README_zh_TW.md
|
||||
|
||||
简体中文 : https://github.com/87owo/PYAS/blob/main/README_zh_CN.md
|
||||
|
||||
## 安装需求
|
||||
|
||||
建议使用 Python 3.10。其他版本的 Python 可能需要不同的 pip 指令。
|
||||
|
||||
```
|
||||
pip install psutil==5.9.5
|
||||
pip install pefile==2023.2.7
|
||||
pip install requests==2.31.0
|
||||
pip install pyperclip==1.8.2
|
||||
pip install pywin32==306
|
||||
pip install PyQt5==5.15.9
|
||||
pip install yara-python==4.5.1
|
||||
pip install numpy==2.1.1
|
||||
pip install numpy==1.26.4
|
||||
pip install onnxruntime==1.18.1
|
||||
pip install pillow==10.4.0
|
||||
pip install pefile==2023.2.7
|
||||
pip install Pillow==11.0.0
|
||||
pip install pyperclip==1.9.0
|
||||
pip install PySide6==6.9.1
|
||||
pip install requests==2.32.4
|
||||
pip install yara-python==4.5.4
|
||||
```
|
||||
|
||||
## 文件信息
|
||||
## 文件讯息
|
||||
|
||||
以下列出所有相关代码与文件的存放位置。
|
||||
|
||||
```
|
||||
PYAS/
|
||||
├── Driver/
|
||||
│ ├── PYAS_Driver.sys -------> 驱动程序 (0sha0 为 pyas 提供的自我保护驱动程序)
|
||||
│ └── ...
|
||||
├── Engine/
|
||||
│ ├── Models/ # ONNX 深度学习模型目录
|
||||
│ └── Rules/ # YARA 与网络规则目录
|
||||
│
|
||||
├── Model/
|
||||
│ ├── PYAS_Model.json -------> 病毒数据库 (数据库必须位于指定目录中)
|
||||
│ └── ...
|
||||
├── Plugins/
|
||||
│ └── Filter/ # 用于安全防护的 Windows 核心驱动
|
||||
│
|
||||
├── Rules/
|
||||
│ ├── Yara_Rules.yar ---------> Yara 规则 (纯文本格式的 yara 规则)
|
||||
│ ├── Yara_Rules.yrc ---------> 编译规则 (编译格式的 yara 规则)
|
||||
│ └── ...
|
||||
│
|
||||
├── PYAS.py ---------------------> PYAS主程序(包含动画、扫描、保护等功能...)
|
||||
├── PYAS_Engine.py -------------> 转换数据库(用于转换剖面图和预报数据)
|
||||
├── PYAS_Suffixes.py -----------> 文件后缀(包含扫描文件后缀和常用后缀)
|
||||
├── PYAS_Interface.py ----------> PyQt5界面(使用QT设计器,需与主程序搭配使用)
|
||||
├── PYAS_Resource.py -----------> PyQt5资源(状态图片、图标包、按钮图标...)
|
||||
├── PYAS_Language.py -----------> 翻译词典(繁体中文、简体中文、英文)
|
||||
├── PYAS_Version.py ------------> 安裝信息(文件信息、版本信息、原名...)
|
||||
└── ...
|
||||
├── PYAS.py # 主程式与图形界面 (GUI)
|
||||
├── PYAS_Config.py # 组态处理与全域参数
|
||||
├── PYAS_Engine.py # YARA 与 ONNX 扫描引擎
|
||||
├── PYAS_Interface.py # 使用者介面定义与元件逻辑
|
||||
├── PYAS_Resource.py # 静态图片资源管理
|
||||
├── PYAS_Version.py # 打包与版本资讯
|
||||
└── ... # 其他补充文件夹与文件
|
||||
```
|
||||
|
||||
## 官方网页
|
||||
## 安装版本
|
||||
|
||||
https://pyantivirus.wixsite.com/pyas
|
||||
打包发行版下载:https://github.com/87owo/PYAS/releases
|
||||
|
||||
https://github.com/87owo/PYAS
|
||||
## 系统需求
|
||||
|
||||
## 微软运行库
|
||||
| 配置需求 | 权限需求 | 系统需求 | 可用內存 | 可用储存空间 |
|
||||
| ---- | ------- | ----------- | ----- | ------ |
|
||||
| 最低 | 系统管理员 | Windows 10 | 200MB | 100MB |
|
||||
| 建议 | 系统管理员 | Windows 10 | 300MB | 200MB |
|
||||
| 最佳 | 系统管理员 | Windows 11 | 500MB | 200MB |
|
||||
|
||||
https://github.com/87owo/Microsoft_Runtime/releases
|
||||
## 官方网站
|
||||
|
||||
## 驱动程序
|
||||
官方网站 : https://pyantivirus.wixsite.com/pyas
|
||||
|
||||
https://github.com/0sha0/PYAS_Protection
|
||||
开源网站 : https://github.com/87owo/PYAS
|
||||
|
||||
## 开源协议
|
||||
## 授权条款
|
||||
|
||||
https://github.com/87owo/PYAS/blob/main/LICENSE.md
|
||||
|
||||
## 支援系统
|
||||
|
||||
Windows 8.1, 10, 11 (64-bit), 内存 500MB, 存储 200MB 或更高
|
||||
|
||||
其他系统或版本可能会遇到软体功能故障或程序崩溃
|
||||
|
||||
## 特别感谢
|
||||
|
||||
360, Wix, VirusShare, mtkiao129, AV-T Team of LisectGroup
|
||||
|
||||
Copyright© 2020~2024 PYAS Security By 87owo
|
||||
+48
-51
@@ -1,75 +1,72 @@
|
||||
# PYAS (Python 防毒軟體)
|
||||
# PYAS
|
||||
|
||||

|
||||
以 Python 開發的防毒軟體,結合深度學習與行為監控來阻擋威脅!
|
||||
|
||||
## 安裝要求
|
||||

|
||||
|
||||
## 說明語言
|
||||
|
||||
English : https://github.com/87owo/PYAS/blob/main/README.md
|
||||
|
||||
繁體中文 : https://github.com/87owo/PYAS/blob/main/README_zh_TW.md
|
||||
|
||||
简体中文 : https://github.com/87owo/PYAS/blob/main/README_zh_CN.md
|
||||
|
||||
## 安裝需求
|
||||
|
||||
建議使用 Python 3.10。其他版本的 Python 可能需要不同的 pip 指令。
|
||||
|
||||
```
|
||||
pip install psutil==5.9.5
|
||||
pip install pefile==2023.2.7
|
||||
pip install requests==2.31.0
|
||||
pip install pyperclip==1.8.2
|
||||
pip install pywin32==306
|
||||
pip install PyQt5==5.15.9
|
||||
pip install yara-python==4.5.1
|
||||
pip install numpy==2.1.1
|
||||
pip install numpy==1.26.4
|
||||
pip install onnxruntime==1.18.1
|
||||
pip install pillow==10.4.0
|
||||
pip install pefile==2023.2.7
|
||||
pip install Pillow==11.0.0
|
||||
pip install pyperclip==1.9.0
|
||||
pip install PySide6==6.9.1
|
||||
pip install requests==2.32.4
|
||||
pip install yara-python==4.5.4
|
||||
```
|
||||
|
||||
## 檔案資訊
|
||||
|
||||
以下列出所有相關程式碼與文件的存放位置。
|
||||
|
||||
```
|
||||
PYAS/
|
||||
├── Driver/
|
||||
│ ├── PYAS_Driver.sys -------> 驅動程式 (0sha0 為 pyas 提供的自我保護驅動程式)
|
||||
│ └── ...
|
||||
├── Engine/
|
||||
│ ├── Models/ # ONNX 深度學習模型目錄
|
||||
│ └── Rules/ # YARA 與網路規則目錄
|
||||
│
|
||||
├── Model/
|
||||
│ ├── PYAS_Model.json -------> 病毒資料庫 (資料庫必須位於指定目錄)
|
||||
│ └── ...
|
||||
├── Plugins/
|
||||
│ └── Filter/ # 用於安全防護的 Windows 核心驅動程式
|
||||
│
|
||||
├── Rules/
|
||||
│ ├── Yara_Rules.yar ---------> Yara 規則 (純文字格式的 yara 規則)
|
||||
│ ├── Yara_Rules.yrc ---------> 編譯規則 (編譯格式的 yara 規則)
|
||||
│ └── ...
|
||||
│
|
||||
├── PYAS.py ---------------------> PYAS主程式(包含動畫、掃描、保護等功能...)
|
||||
├── PYAS_Engine.py -------------> 轉換資料庫(用於轉換剖面圖和預報資料)
|
||||
├── PYAS_Suffixes.py -----------> 文件後綴(包含掃描文件後綴和常用後綴)
|
||||
├── PYAS_Interface.py ----------> PyQt5介面(使用QT設計器,需與主程式搭配使用)
|
||||
├── PYAS_Resource.py -----------> PyQt5資源(狀態圖片、圖示包、按鈕圖示...)
|
||||
├── PYAS_Language.py -----------> 翻譯字典(繁體中文、簡體中文、英文)
|
||||
├── PYAS_Version.py ------------> 安裝資訊(檔案資訊、版本資訊、原名...)
|
||||
└── ...
|
||||
├── PYAS.py # 主程式與圖形介面 (GUI)
|
||||
├── PYAS_Config.py # 組態處理與全域參數
|
||||
├── PYAS_Engine.py # YARA 與 ONNX 掃描引擎
|
||||
├── PYAS_Interface.py # 使用者介面定義與元件邏輯
|
||||
├── PYAS_Resource.py # 靜態圖片資源管理
|
||||
├── PYAS_Version.py # 打包與版本資訊
|
||||
└── ... # 其他補充資料夾與檔案
|
||||
```
|
||||
|
||||
## 官方網頁
|
||||
## 安裝版本
|
||||
|
||||
https://pyantivirus.wixsite.com/pyas
|
||||
打包發行版下載:https://github.com/87owo/PYAS/releases
|
||||
|
||||
https://github.com/87owo/PYAS
|
||||
## 系統需求
|
||||
|
||||
## 微軟運行庫
|
||||
| 配置需求 | 權限需求 | 系統需求 | 可用記憶體 | 可用儲存空間 |
|
||||
| ---- | ------- | ----------- | ----- | ------ |
|
||||
| 最低 | 系統管理員 | Windows 10 | 200MB | 100MB |
|
||||
| 建議 | 系統管理員 | Windows 10 | 300MB | 200MB |
|
||||
| 最佳 | 系統管理員 | Windows 11 | 500MB | 200MB |
|
||||
|
||||
https://github.com/87owo/Microsoft_Runtime/releases
|
||||
## 官方網站
|
||||
|
||||
## 驅動程式
|
||||
官方網站 : https://pyantivirus.wixsite.com/pyas
|
||||
|
||||
https://github.com/0sha0/PYAS_Protection
|
||||
開源網站 : https://github.com/87owo/PYAS
|
||||
|
||||
## 開源協議
|
||||
## 授權條款
|
||||
|
||||
https://github.com/87owo/PYAS/blob/main/LICENSE.md
|
||||
|
||||
## 支援系統
|
||||
|
||||
Windows 8.1, 10, 11 (64-bit),記憶體 500MB, 磁碟容量 200MB 或更高
|
||||
|
||||
其他系統或版本可能會遇到軟體功能故障或程序崩潰
|
||||
|
||||
## 特別感謝
|
||||
|
||||
Wix, 0sha0, mtkiao129, AV-T Team of LisectGroup
|
||||
|
||||
Copyright© 2020~2024 PYAS Security By 87owo
|
||||
Reference in new issue
Block a user