# mod **Repository Path**: zjcm/mod ## Basic Information - **Project Name**: mod - **Description**: No description available - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-01-03 - **Last Updated**: 2021-01-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # mod ## C++11常用类库封装. ## 目录 - [any](##mod::any) - [string](##mod::string) - [binary](##mod::binary) - [codecvt](##mod::codecvt) - [format](##mod::format) - [json](##mod::json) - [log](##mod::log) - [test](##mod::test) - [time](##mod::time) - [env](##mod::env) - [memory](##mod::memory) - [hook](##mod::hook) # 类库方法 ## mod::any - #include "mod/any/any.hpp" - 通用类型容器,any.cast() 取值,类型必须一致 否则抛出异常 ## mod::string - #include "mod/string/string.hpp" - string.compress() 压缩数据(清除多余的内存空间) - string.length() 重写length 获取以0结束的长度 - string.to_upper() 到大写 - string.to_lower() 到小写 - string.equal(_Right) 是否相等 - string.iequal(_Right) 是否相等(不限大小写) - string.split(pattern) 分割字符串 - string.trim() 删首尾空 - string.ltrim() 删首空 - string.rtrim() 删尾空 - string.contains(str) 是否包含数据 - string.icontains(str) 是否包含数据(不限大小写) - string.replace(src,dst,off,count) 替换字符串 ## mod::binary - #include "mod/binary/binary.hpp" - binary.loadfile(_Filename, _Mode, _Prot) 将文件载入到数据 - binary.writefile(_Filename, _Mode, _Prot) 将数据写出到文件 - binary.equal(_Right) 判断数据是否相等 - binary.append(_Right) 添加数据 - binary.find(_Right, _Off) 正序查找数据位置 - binary.rfind(_Right, _Off) 反序查找数据位置 - binary.search(_Right, _Off) 模糊查找数据{ 4,256,256,7 } 256为模糊码 - binary.mid(_Off, _Count) 取中间数据 - binary.left(_Count) 取左边数据 - binary.right(_Count) 取右边数据 - binary.first_with(_Right) 判断头数据是否一致 - binary.last_with(_Right) 判断尾数据是否一致 - binary.contains(_Right) 判断是否包含数据 - binary.erase(_Off, _Count) 删除数据 - 其它方法请参考 std::vector ## mod::codecvt - #include "mod/codecvt/codecvt.hpp" - codecvt::wstring_to_string(src) UNICODE转ANSI - codecvt::wstring_to_u8string(src) UNICODE转UTF8 - codecvt::string_to_wstring(src) ANSI转UNICODE - codecvt::string_to_u8string(src) ANSI转UTF8 - codecvt::u8string_to_string(src) UTF8转ANSI - codecvt::u8string_to_wstring(src) UTF8转UNICODE ## mod::format - #include "mod/format/format.hpp" - format::format(fmt, ...) 格式化字符串 - format::print(fmt, ...) 打印字符串 ## mod::json - #include "mod/json/json.hpp" - json::parse(src, object) 解析JSON数据 - json::dump(object) 将JSON对象打包成字符串 - json::Value json对象 ## mod::log - #include "mod/log/log.hpp" - log::info(fmt, ...) 输出信息 - log::warn(fmt, ...) 输出警告信息 - log::critical(fmt, ...) 输出危险信息 - log::debug(fmt, ...) 输出调试信息 - log::set_pattern(fmt) 设置输出格式 - log::set_level(lvl) 设置输出等级 ## mod::test - #include "mod/test/test.hpp" - mod_test(name, enable) 测试架框 - mod_test(Test,true) - { - printf("test\n"); - } ## mod::time - #include "mod/time/time.hpp" - execchrono.start() 开始计时 - execchrono.stop() 停止计时 - execchrono.microseconds() 获取已用微妙 - execchrono.milliseconds() 获取已用毫秒 - execchrono.sec() 获取已用秒 - execchrono.minutes() 获取已用分钟 - execchrono.hours() 获取已用小时 - mod::chrono = std::chrono ## mod::env - #include "mod/env/env.hpp" - env::get(key, res) 获取程序环境变量 - env::set(key, value) 设置程序环境变量 ## mod::memory - #include "mod/memory/memory.hpp" - memory(hProcess) 初始化进程句柄 - memory.process 设置进程句柄 - memory.alloc(...) 分配内存 - memory.free(Pointer) 释放内存 - memory.read(Pointer, ...).int8() 读内存字节型 - memory.read(Pointer, ...).int16() 读内存短整数型 - memory.read(Pointer, ...).int32() 读内存整数型 - memory.read(Pointer, ...).int64() 读内存长整数型 - memory.read(Pointer, ...).float32() 读内存小数型 - memory.read(Pointer, ...).float64() 读内存双精度小数型 - memory.read(Pointer, ...).string(size) 读内存文本型 - memory.read(Pointer, ...).wstring(size) 读内存宽文本型 - memory.read(Pointer, ...).binary(size) 读内存字节集 - memory.write(Pointer, ...).int8(value) 写内存字节型 - memory.write(Pointer, ...).int16(value) 写内存短整数型 - memory.write(Pointer, ...).int32(value) 写内存整数型 - memory.write(Pointer, ...).int64(value) 写内存长整数型 - memory.write(Pointer, ...).float32(value) 写内存小数型 - memory.write(Pointer, ...).float64(value) 写内存双精度小数型 - memory.write(Pointer, ...).string(value) 写内存文本型 - memory.write(Pointer, ...).wstring(value) 写内存宽文本型 - memory.write(Pointer, ...).binary(value) 写内存字节集 ## mod::hook - hook:create(pTarget, pDetour, hEnable) 根据地址创建HOOK - hook:create(pszModule, pszProcName, pDetour, ppTarget, hEnable) 根据DLL函数创建HOOK - hook:enable(ppTarget, hEnable) 启用或禁用HOOK - hook:destroy(ppTarget) 销毁HOOK - hook:error() 获取操作错误码 - hook:stdcall(pTarget, ...) 以stdcall约定调用函数 - hook:cdeclcall(pTarget, ...) 以cdeclcall约定调用函数 - hook:thiscall(pTarget, this_, ...) 以thiscall约定调用函数 #### 代码示例 ```C++ void* OldMessageBoxA; int __stdcall HookMessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType) { return mod::hook::stdcall(OldMessageBoxA, hWnd, "我被HOOK啦", lpCaption, uType); } mod_test(TestHook, true) { OldMessageBoxA = mod::hook::create("user32.dll", "MessageBoxA", HookMessageBoxA, 0, true); MessageBoxA((HWND)0, "消息框", "标题:", MB_OK); } ``` # 后续计划