x2lib——一个C++基础库(整合了一些工具类、框架类、轻量开源库)

x2lib是一个从2016年开始发展的C++基础库,支持Linux、Windows和Macos,提供了工具类、工具函数和框架。主要包括AppLoad模块加载、DbgUtil日志、HttpUtil简易HTTP、SqliteDB数据库、TranCodec通信等模块。此外,还整合了第三方库如httplib、sqlite3xx等。该库适用于网络和逆向工程,部分源码涉及安全未开源。
仓库地址在文末

x2lib是什么

x2lib(原名xlib,已弃用)是我个人自2016年以来形成的一个跨Linux和Window的C++基础库(目前已支持Macos),封装了一些常用的C++操作,可分为工具类、工具函数、及框架。自2015年年底入行C++后,一直热衷于研究网络和逆向技术,因此业余时间总喜欢做一些相关的小工具,后来做的多了,发现经常会写一些重复代码,因此萌生了创建一个基础库的想法,x2lib因此诞生。起初只为了服务于个人项目Pocket,这是一个涉及网络和逆向工程套件。后来发现x2lib不仅对Pocket有用,在工作中也经常有机会用到,因此将其剥离出来,现开源以便集思广益。

代码出处

  • 轻量的第三方开源库:有改动,以便跨平台和支持C++编译,后文有介绍。
  • 网络搜集并加以优化。
  • 基于学习和经验自创:主要位于x2lib/路径,除x2lib/open/depends路径。

其中自认为设计的比较好的有:AppLoad, DbgUtil, ISingleton, MemJson, Msger, TranCodec,SqliteDB,ZipUtil,maplist,stringx。当然仍然有很多不足之处,也希望各位大侠能在issue提供建议和反馈。

另外还有部分源码涉及安全问题,暂未开源。

主要模块

个人编写
  • AppLoad:模块加载框架。抽象类,用于多模块应用启动时规范化子模块的加载,可实现异步、同步、串行加载。
  • CrypUtil:简易加密类。如:md5,base64,异或加密,增强型异或加密。
  • DbgUtil:日志打印。信息详细,支持文件输出、控制台输出、回调输出,支持多线程,支持按级别输出。
  • FileUtil:文件操作。一般的文件操作:读写、多级目录创建/删除、文件遍历等。
  • HttpUtil:简易Http。http访问,http文件下载,有较大不足,不推荐使用,推荐使用附带的httplib(支持ssl和中文url)。
  • 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:任务机。支持串行、并行、延时、循环、跳转、任务卸载、事件通知,实用性不强,有待优化。
  • TranCodec:通用收发器(框架)。一个基于通道理念的抽象通信框架。可用于实现各种通信(比如管道、Socket、文件等)。
  • xCores:多线程。互斥锁、信号量、消息泵、线程引擎等,正考虑是否用C++11替代。
  • xUtils:杂函数(类)。暂未归类的函数、类,比如lambda2func:可将带捕获的lambda转为静态函数使用。
  • ZipUtil:Zip封装。基于unzip实现,提供了一些便捷接口,如内存解压缩,添加/移除压缩项等,有已知bug待优化。
  • maplist:基于std::list实现的一个无序map,功能上类似unordered_map,(能够保持元素插入的顺序)。
  • stringx:基于std::string进行拓展,支持int/float转换、字符串replace、format、get_left/right/mid,compare等常用功能。
  • 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】

仓库地址:x2lib: 一个C++基础库

另外还开源了一个基于x2lib的跨平台(Windows/Linux/Macos)小工具:
https://gitee.com/xktesla/draw-client

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xktesla

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值