恶意软件分析示例[已关闭]

问题描述 投票:0回答:1

您的公司正在分析针对数字记录文件的恶意软件。

恶意软件在文件中的数字数组上使用滑动窗口,并尝试匹配以下模式:

T、-、-、X、-、-、-、T

位置“X”与每个位置“T”进行比较。窗口被移动,因此“X”穿过所有值。

该恶意软件具有以下规则:

.如果模式中的任何“T”位置大于或等于“X”,恶意软件会将“X”替换为 0。 如果图案中的“X”位置靠近左边界或右边界并且缺少“T”位置邻居,则仅考虑另一侧。 .恶意软件首先找到所有位置,然后将它们设置为 0。

例如,如果记录文件中的值如下:

[1, 2, 0, 5, 0, 2, 4, 3, 3, 3]

恶意软件运行后的预期值为: [1, 0, 0, 5, 0, 0, 0, 3, 3, 0]

在此示例中,数字 4 设置为 0,因为 5 是更大的数字。

实现模拟功能,以便复制恶意软件行为以供进一步研究。

analysis malware
1个回答
0
投票
function simulate(entries) {
    let simEntries = [...entries];
    let tempEntries = [];

    for (let i = 0; i < simEntries.length; i++) {
        let rightT;

        if (i >= simEntries.length - 4) {
            break;
        } else {
            rightT = i + 4;
            if (simEntries[i] <= simEntries[rightT]) {
                tempEntries.push(i);
            }
        }
    }

    for (let i = 0; i < simEntries.length; i++) {
        let leftT = i;

        if (leftT <= 2) {
            continue;
        } else {
            leftT = i - 3;
            if (simEntries[i] <= simEntries[leftT]) {
                tempEntries.push(i);
            }
        }
    }

    for (let i = 0; i < simEntries.length; i++) {
        if (tempEntries.includes(i)) {
            simEntries[i] = 0;
        }
    }

    return simEntries;
}

// Test the function
let result = simulate([1, 2, 0, 5, 0, 2, 4, 3, 3, 3]);
console.log(result);
// Expected output: [1, 0, 0, 5, 0, 0, 0, 3, 3, 0]
© www.soinside.com 2019 - 2024. All rights reserved.