# x2lib **Repository Path**: aas102400/x2lib ## Basic Information - **Project Name**: x2lib - **Description**: 一个C++基础库 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2022-04-21 - **Last Updated**: 2022-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### x2lib是什么 x2lib(原名[xlib](https://github.com/fakerXue/xlib),已弃用)是我个人自2016年以来形成的一个跨Linux和Window的C++基础库,封装了一些常用的C++操作,可分为工具类、工具函数、及框架。自2015年年底入行C++后,一直热衷于研究网络和逆向技术,因此业余时间总喜欢做一些相关的小工具,后来做的多了,发现经常会写一些重复代码,因此萌生了创建一个基础库的想法,x2lib因此诞生。起初只为了服务于个人项目Pocket,这是一个涉及网络和逆向工程套件。后来发现x2lib不仅对Pocket有用,在工作中也经常有机会用到,因此将其剥离出来,并进行了跨平台适配,目前已可以使用vs2019的CMake工程进行 跨平台 编译。 ### 代码出处 + 轻量的第三方开源库:有改动,以便跨平台或支持C++编译,后文有介绍。 + 网络搜集并加以优化。 + 基于学习和经验自创:主要位于x2lib/路径,除x2lib/open/depends路径。 其中自认为设计的比较好的有:AppLoad, DbgUtil, ISingleton, MemJson, Msger, Transceiver,当然仍然有很多不足之处,也希望各位大侠能在issue提供建议和反馈。 *另外还有部分源码涉及安全问题,暂未开源。* ### 主要模块
个人编写
* `AppLoad`:模块加载类(框架)。抽象类,用于多模块应用启动时规范化子模块的加载,可实现异步、同步、串行加载。 * `CrypUtil`:简易加密类。如:md5,base64,异或加密,增强型异或加密。 * `DbgUtil`:日志打印。信息详细,支持文件输出、控制台输出、回调输出,支持多线程,支持按级别输出。 * `FileUtil`:文件操作。一般的文件操作:读写、多级目录创建/删除、文件遍历等。 * `HttpUtil`:简易Http。http访问,http文件下载,有较大不足,不推荐使用,推荐使用附带的httplib(支持ssl)。 * `ISingleton`:模板单例(框架)。提供初始化/反初始化时机,使用可变参数提供自定义初始化。 * `MemJson`:内存Json。一种紧凑型内存结构,完美兼容标准json。 * `MixPool`:资源池。基于MemJson,我用来做资源加密的,将资源放在服务端,动态获取到本地端,通过lock/unlock使用,有效增加破解难度。 * `Msger`:订阅器(框架)。支持同步/异步/阻塞消息,推荐使用提供的消息宏定义消息。 * `ProcPiper`:管道封装。基于Transceiver框架,支持多个客户端连接一个服务端,使用异步模式收发数据,支持断线重连。 * `SqliteDB`:Sqlite3封装。基于sqlite3.1和sqlcipher,多线程安全,支持ssl加密,最大亮点是提供了一个数据库自动升级接口。 * `StrUtil`:字符串工具。常规操作:unicode/ansi/utf8互转,数字字符串互转,Trim,简易哈希,Format,Split等。 * `SysUtil`:系统工具类。时间获取/格式化,软件版本号设置/获取/比较,生成GUID/随机数,等。 * `TaskRunner`:任务机。支持串行、并行、延时、循环、跳转、任务卸载、事件通知,实用性不强,有待优化。 * `Transceiver`:通用收发器(框架)。一个基于通道理念的通信框架。可用于实现各种通信(比如管道、Socket、文件等)。 * `xCores`:多线程。互斥锁、信号量、消息泵、线程引擎等,正考虑是否用C++11替代。 * `xUtils`:杂函数(类)。暂未归类的函数、类,比如lambda2func:可将带捕获的lambda转为静态函数使用。 * `ZipUtil`:Zip封装。基于unzip实现,提供了一些便捷接口,如内存解压缩,添加/移除压缩项等,有已知bug待优化。 * `extra/`:MFC相关类。早期实现的一些辅助类,后续可能会删除。 * `其他`:其他未介绍的类不推荐使用,后续可能会删除。
第三方库
* `httplib`:一个极简http库,只有一个头文件,支持https。 * `movcrypto`:一个集合各种常用加密的开源库,如aes,des,md5,sha1,base64等。 * `sqlite3xx`:原名sqlcipher,支持ssl加密的sqlite3。【官方基于openssl,已被我改为基于wolfssl】 * `tinyxml2`:轻量xml解析库。 * `wolfssl`:轻量版的openssl,可用于嵌入式开发。【已经修改用于适配sqlite3xx】 * `cJSON`:一个纯C编写的json库。【略微改动】 * `cmdline`:解析命令行格式文本的库。 * `unzip`:zip解压缩库。【官方版只支持windows,已被修改适配linux】 ### 代码规范 * `尽可能的遵循这篇博客:[个人编码习惯](https://blog.csdn.net/xk641018299/article/details/121408129) ### 未来计划 目前有很多已知的问题和不足,但由于精力有限,我只能后续抽空逐步优化,但也正如我的学习过程一样,我希望这个库更多的是能给使用者提供一个思路,在使用的同时将其吸收,然后再创作出属于自己的代码。 我还不确定这个项目是否对各位有用,但如果有兴趣的话,期望能参与进来一起维护。 ### QQ群交流 * `1001680502