Bootstrap

二进制明文字符串加密:实现原理_明文加密形成比较简短的字符串

char strArray[] = { 'c' + 1, 'o' + 1, 'n' + 1, 'v' + 1, 'e' + 1, 'n' + 1, 't' + 1,
    'i' + 1, 'o' + 1, 'n' + 1, 'a' + 1, 'l' + 1, '.' + 1, '.' + 1, '.' + 1, '\n' + 1, '\0' + 1 };
for (unsigned int index = 0; index < sizeof(strArray); index++)
{
    strArray[index] -= 1;
}
printf(strArray);

在这里插入图片描述

可以看到实际每个字符以+1的模式存储,在使用前进行解密,从而实现明文字符串隐藏,同时这里的核心在于依靠编译器优化使得加密过程(这里指+1)在编译期可以直接算出加密后的结果,从而在编译完成的二进制中直接保存密文,而运行时进行解密从而使得实际结果保持不变。这里的两个需求非常重要,如果有一个不满足即会导致失败,这里将这两个总目标单独列出

  1. 编译期可以直接算出加密后的结果
  2. 运行时进行解密
实现上述过程

当然我们不可能每次隐藏字符串的时候都要手动去编写类似上述的代码,而希望有一个自动生成上述代码的方式。所以xorstr的核心目的就是如果将上面的写法用C++模板自动生成,并且确保总结出的两个核心目标{编译期可以直接算出加密后的结果}和{运行时进行解密}

两个开源实现如:andrivet/ADVobfuscator以及JustasMasiulis/xorstr

两个实现都稍显复杂,下面写个最小概念代码验证可行性

**我们需要的使用形式:**我们希望使用起来和正常字符串使用差不多,代码如下

#define Enc(str) EncryptString(str).decrypt()
printf(Enc("encrypt string?"));

因此我们需要EncryptString返回一个类的实例化对象,然后调用该对象的decrypt成员函数完成解密,代码如下

template<size_t N>
class EncryptString
{
public:
    template<size_t... Index>
    constexpr EncryptString(const char\* plainString, std::index_sequence<Index...>)
        : encBuffer{ (plainString[Index] + 1)... }
    {}

    __forceinline char\* decrypt()
    {
        for (auto index = 0; index < N; index++)
        {
            encBuffer[index] -= 1;
        }
        return encBuffer;
    }
private:
    char encBuffer[N];
};

#define Enc(str) EncryptString<sizeof(str)>(str, std::make\_index\_sequence<sizeof(str)>{}).decrypt()

printf(Enc("conventional...\n"));

在这里插入图片描述

可以看到上述代码成功实现了我们的预定目标,实现方式概述:编译期求解字符串数组长度利用模板技术生成一个该字符串数组的加解密类,类的构造函数使用C++变参模板展开和std::index_sequence的方法实现对字符串中每个元素的提取和加密,同时保障上述过程编译时完成。同时解释下为什么这里既然所有字符串的decrypt的逻辑都是一样的,为什么还要把他实现成类的成员函数呢?因为如果设计成统一的外部解密函数会被反编译引用查找的方式找到统一的入口,大大降低分析的难度

对抗

本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。

最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。

最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。

作者徽是vip1024c
学习路线图

其中最为瞩目也是最为基础的就是网络安全学习路线图,这里我给大家分享一份打磨了3个月,已经更新到4.0版本的网络安全学习路线图。

相比起繁琐的文字,还是生动的视频教程更加适合零基础的同学们学习,这里也是整理了一份与上述学习路线一一对应的网络安全视频教程。

网络安全工具箱

当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,你肯定需要学习各种工具的使用以及大量的实战项目,这里也分享一份我自己整理的网络安全入门工具以及使用教程和实战。

项目实战

最后就是项目实战,这里带来的是SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~

面试题

归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!

;