C++
文章平均质量分 55
魔法狮子
这是一只魔法师子
展开
-
windows 下编译libcurl openssl
perlpath 设置为perl路径。-VSpath 设置为你的vs路径。建议指定为最新的发布版本。建议指定为最新的发布版本。原创 2023-10-11 13:50:40 · 564 阅读 · 0 评论 -
DUILIB 内存加载时异常问题,模块内存加载异常出错总结
hack手段中内存加载(无模块)是常规操作,近期写了个小小的通知消息组件的玩具。·出人意料的是,这样一个小小玩具竟然在内存加载时无法正常运行。百思不得其解,且在修复了MFC dll内存加载后对dui依旧不行。原创 2023-06-16 17:24:07 · 118 阅读 · 0 评论 -
如何写出高效率的C++代码
宇宙第一IDE有个东东叫做诊断工具,你只需要打开他,打开cpu分析和内存分析。然后在你需要的地方下断点,开调。他能干啥呢,能帮你看看你的代码里每个函数,甚至每行代码占用了多少cpu,用了多少内存。原创 2022-12-26 18:34:29 · 98 阅读 · 0 评论 -
一份代码,几份编译,到处运行
123原创 2022-11-16 17:50:41 · 92 阅读 · 0 评论 -
C++ 继承之栈溢出对象大小涉及的编程规范
在驱动用上C++的第 N+1天,我的驱动发生了双重异常1、传参和返回时尽量使用引用,或者使用较小的对象2、在类内部不应该直接定义过多的类属性,而是使用单独的类或结构体,并在构造中new,使其存在于堆栈上。原创 2022-11-11 11:46:19 · 469 阅读 · 0 评论 -
一个成熟的自旋锁总是默默沾满100%
wu原创 2022-11-07 00:51:19 · 74 阅读 · 0 评论 -
反击一些嘴比手硬的菜菜adc
轻轻的反击一的five。不要破防原创 2022-11-01 10:39:17 · 78 阅读 · 0 评论 -
Pe文件自定义区段||Pe区段内存属性
这个这个程序编译链接生成PE文件中关于 .rdata的属性(Characteristics)描述。我们将这个属性使用WinHex工具修改成.rdata为可写区域 是不是 str就可以更改了呢?所以这个程序的.rdata的默认的属性为 可读块 已初始化数据块。由于测试机器是Little-Endian 所以。转载 2022-10-25 20:35:11 · 241 阅读 · 0 评论 -
笔记-设备相关知识
在单独的进程中,Windows 搜索与从驱动程序存储区中安装的驱动程序更匹配的驱动程序 Windows 更新和 DevicePath。例如,可以装载的磁盘的驱动程序应注册其磁盘接口类 (GUID_DEVINTERFACE_DISK) 和可装载设备类 (MOUNTDEV_MOUNTED_DEVICE_GUID)。Windows驱动程序存储中开始搜索与设备的硬件 D 之一匹配的驱动程序包。如果在其他位置找到了匹配的驱动程序包,则 Windows 首先将包安装到驱动程序存储区,然后再将驱动程序包安装到设备上。原创 2022-09-22 15:31:12 · 983 阅读 · 0 评论 -
捣鼓HTTP的小坑
在分块后响应体会被拆分为多块,并可追加响应行。3、recv函数接收即使不等于预定接受大小,也不一定接受完。2、请求行的协议是不区分大小写的,请求头和请求体等则区分。1、http响应存在一种分块设计。...原创 2022-08-31 15:58:13 · 88 阅读 · 0 评论 -
X64汇编 shellcode
注意对其16字节,因此需要rsp+8对其,其次前四个参数由 rcx,rdx,r8,r9传递。原创 2022-08-17 11:57:36 · 249 阅读 · 0 评论 -
C++奇淫巧技 可继承单例 效率提高数倍
提升c++效率、继承单例、单例继承、智能指针、c++提高效率、c++效率提升、多继承效率、提升多继承效率、父类单例、基类单例、公用父类、父类对象唯一。原创 2022-08-01 17:30:23 · 592 阅读 · 0 评论 -
调试VBS visual studio
visualstudio调试vb、vs调试vb、vbscom、vbs调用com、vbs调试。原创 2022-07-21 11:34:30 · 1366 阅读 · 0 评论 -
Windows注册表知识
所有的蜂房存储在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist下能看到。用户的注册表存储在C\Users\用户名下。原创 2022-07-19 17:59:41 · 781 阅读 · 0 评论 -
Windows C++中CAtlMap、unordered_map、CRBMap、std::map选择
在windows下用c++写代码难免要选择stl或atl的烦恼。特别是面对一些组织数据的常用方法类时。本文则对stdmap,stdunordered_map,CAtlMap,CRBMap进行了无碰撞比较。而平时使用最多的也是这种情况。原创 2022-07-19 13:40:38 · 264 阅读 · 0 评论 -
刀与剑-COM对象组织
COM明明是一种编程思想,是一门绝世武功。可时代忽然迈入火器,无数人抛弃掉这晦涩难懂的绝世武功,转身投入速成的技艺时代。 “很多不懂 com 的C++程序员会自行发明一个 com 的子集,而且是蹩脚的多的子集。可惜的是,刀与剑的时代结束了,火器时代,掌握 com 这类武功已经没用了。” --原创 2022-07-07 17:50:01 · 146 阅读 · 0 评论 -
HOOK Native API
平时难免需要在应用层hook一些东西,而且ntdll这种核心dll也在劫难逃。 DetoursNT VC-LTL 不配置 DETOURSNT_NO_CRT C++ 异常 否 基本运行时检测 默认 运行库 MT 附加依赖项 libucrtd.lib 启用VC-LTL 设置原创 2022-06-29 15:53:14 · 265 阅读 · 0 评论 -
IO模型:1、IO模型初识
目录什么是IO计算机角度的IO操作系统的IOIO过程阻塞IO非阻塞IOIO过程什么是IOIO,英文全称是Input/Output,翻译过来就是 输入/输出。平时我们听得挺多,就是什么磁盘IO,网络IO。计算机角度的IO我们常说的输入输出,比较直观的意思就是 计算机的输入输出, 计算机就是主体。大家是否还记得,大学学 计算机组成原理的时候,有个 冯.诺依曼结构,它将计算机分成分为5个部分:运算器、控制器、存储器、输入设备、输出设...原创 2022-05-23 18:26:07 · 262 阅读 · 0 评论 -
IO模型:2、socket函数基本讲解
引流:Socket编程模型、网络编程模型、IO模型模型阐释 在编程中最简单最初使用的基本都是阻塞模型,比如fread,fwrite。它仅仅针对当前的线程,且对应的IO操作一定是在函数调用时开始,在完成或者失败时返回。代码逻辑简单、容易理解适合一些简单的场景,例如一些简单的测试用例。代码示例 tcp 简单服务端代码#define WIN32_LEAN_AND_MEAN#define _WINSOCK_DEPRECATED_NO_WARNINGS#inc...原创 2022-05-23 14:48:32 · 118 阅读 · 0 评论 -
进程启动时的早期注入时机
下图可见,A.dll 被注入的时机十分早,进程初始化完成前便已经注入。程序DLL的加载过程如同依赖一般,为可传递的递归加载。原创 2022-05-19 15:49:24 · 190 阅读 · 1 评论 -
DLL和LIB编译以及问题
#ifdef __cplusplusextern "C" {#endif #ifdef DLL_EXPORT __declspec(dllimport)#else#define DLL_EXPORT _declspec(dllexport)#endif //保证缓冲区大于33字节 DLL_EXPORT int GetImphash(char* FileName, char* HH);#ifdef __cplusplus}#endif 将需要导出的函数设置为导出...原创 2022-05-16 16:29:33 · 915 阅读 · 1 评论 -
无法打开 源 文件 “inttypes.h“
不知道为啥,总要求用2010的平台工具集编译程序,说这样能兼容xp。具体怎么回事,咱也不太清楚。但其中一点可以明确的就是很多新的api xp是没有的。起因该文件是在比较新的SDK中才存在,而其中主要是对一些基本类型取了别名。而设置为早期的平台则无法生成,因为早起的sdk中并无此文件解决办法最好的方式是自己撸一个同名文件,并设置一个目录,将其中的一些实现抄写进如即可。...原创 2022-05-10 15:29:30 · 157 阅读 · 1 评论 -
W2A A2W内存耗尽崩溃
这俩宏在一些数据比较长的函数内会错误,最终程序崩溃。自己实现宽窄字符串转换即可。引用https://blog.csdn.net/gzfstudy/article/details/51593654原创 2022-05-06 12:49:56 · 269 阅读 · 0 评论 -
刀与剑-COM返回数组
COM明明是一种编程思想,是一门绝世武功。可时代忽然迈入火器,无数人抛弃掉这晦涩难懂的绝世武功,转身投入速成的技艺时代。“很多不懂 com 的C++程序员会自行发明一个 com 的子集,而且是蹩脚的多的子集。可惜的是,刀与剑的时代结束了,火器时代,掌握 com 这类武功已经没用了。”---知乎网友关于使用COM接口返回数组COM处理了未知语言在COM客户之间传递数组,没错。但是这个并不是什么GO之流,而是C#、VB、Delphi、asp之流甚至...原创 2022-04-12 12:56:45 · 315 阅读 · 0 评论 -
LNK2019 无法解析的外部符号 “xxx __cdecl xxx(xxx)“ C、C++混用编译错误解决
背景在c与C++编程中难免两者混用,而c与c++特性的不同,其实这其中有很多坑。比如c其实是不支持同名函数重载的。如在c中写下如下两个函数:void test(){}void test(int a){}编译时报出以下错误:技术描述c++ 之所以支持函数重载,即通过函数的参数不同可以区分不同的函数主体,实际是因为在编译后的调用约定不同,c++编译后由函数名和参数共同指代一个函数主体。可借鉴map由于函数名和参数共同作为key来索引函数主体。而...原创 2022-03-30 11:41:55 · 1997 阅读 · 0 评论 -
手写正则与自动机代码生成之,std::regex劝退
大学时候学过自动机,但是并不是很理解。其实这玩意儿就是状态的转换。当程序在有限个数据类型中来回切换的话,是可以构建为自动机模型的。而这不就是c++里类的抽象吗。原来往日学的知识早已在暗中串联融汇。自动机与正则正则同样可以直接化为自动机模型,唯一不同的是出现()时会有嵌套结构,此时虚节点的引入成为了必要。此外由于匹配次数,需要在转换路径上进行次数限制,因此同样,由于嵌套存在,还需要由一个清空一个嵌套节点内计数的触发清除计数的逻辑。...原创 2022-03-11 17:45:46 · 232 阅读 · 1 评论 -
DNS原理与手撸域名之自己解析域名
一、DNS解析场景这世间很多实物都在悄然运转,没有惊天动地也没有春花秋月。哎,没错了,dns这玩意儿就是这样,平时不声不响,一旦没了它,上网那是不存在上网的了。 当你打开浏览器,输入www.xxoo.com,按下回车的那一秒,你的电脑又发生了什么呢?其实在浏览器输入地址后,计算机并不能直接访问到网站,因为有相关网络基础的同学都知道,数据包在网络链路传输过程中,路由转发是数据能到达目的地的核心过程。而数据包在不停的转发过程犹如快递的转运,经过一次次我的转运最终发到你的手里。而...原创 2022-03-10 12:09:12 · 4195 阅读 · 0 评论 -
LNK2005 _DllMain@12 已经在 LIBCMTD.lib(dll_dllmain_stub.obj) 中定义
引流LNK2005 _DllMain@12 已经在 LIBCMTD.lib(dll_dllmain_stub.obj) 中定义LNK2005 "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) 已经在 LIBCMTD.lib(delete_array.obj) 中定义"void __cdecl operator delete(void *)" (??3@YAXPAX@Z) 已经在 LIBCMTD.lib(delete_scalar原创 2021-12-31 16:35:14 · 1221 阅读 · 4 评论 -
刀与剑-C++ COM组件调用
com使用,comdll,com注册,com调用,com c++,com组件,com新手,c++ com原创 2021-07-01 14:26:10 · 5553 阅读 · 2 评论 -
C 与 LUA -相互调用及值传递
写在最前 由于工作需要,有幸正真地开始接触lua。 lua一直是动态执行脚本中的宠儿,而究其原因不外乎简介方便,效率高。我甚至看到过有帖子说lua就是为了动态化c而生的,c是静态的,是编译型的,这使得他的灵活性大大下降,但是lua则弥补了他的短板。 并且lua本身也是由c实现的,整个虚拟机十分轻量独立,天不生你lua哥,万古c界如长夜。相关背景 其实任何的程序与程序或代码段与代码段的交互只有两点,第一是调用,第二是数据的传递。因为程...原创 2021-12-10 17:50:12 · 666 阅读 · 0 评论 -
C++ 多继承之 虚基派生(继承) 解决错误(活动) E0266 ““ 不明确错误 C2385 对“”的访问不明确
前言 c++多态是在方法上进行抽象进行分类和统一,而多继承的出现大大提升了c++编程的灵活性和易用性,专业的说法就是提高内聚,降低耦合。但是呢,多继承的使用中一定会遇到基于同一个基类的拍生类再次被某个类所继承的情况,于是 纷争开始了。。。举个栗子 我们现在设计一个游戏的人物或者叫装备或者叫身体系统,实现思路呢主要是把一个游戏角色的身体拆分为各个部分,每个部分可以单独强化和习得技能什么的。最后由各个部分组成一个完整的角色。 ...原创 2021-12-07 17:17:47 · 10092 阅读 · 1 评论 -
C++ 源码常量加密,防逆向破解小技巧
写在前面 做为个一个c++的搬砖猿,我很早之前就有一个想法。企图在c++代码编译时能够部分干预C++的编译过程,比如类似宏一样的行为,或者模板类的行为。在编译时才存在的一些代码或信息。而c++14 则提供了这样的特性。实际效果代码如下:int main(){ printf("%s\r\n", ET("1234567890")); printf("%s\r\n", ("9876543210")); system("pause");}...原创 2021-12-01 11:52:59 · 3644 阅读 · 2 评论 -
C++ hpp或者 C++声明定义写一起 问题解决 LNK2005
引流严重性 代码 说明 项目 文件 行 禁止显示状态错误 LNK2005 "public: void __cdecl COriginalDerived::test(void)" (?test@COriginalDerived@@QEAAXXZ) 已经在 Hpp Style.obj 中定义 Hpp Style C:\Users\HP\Desktop\Study Day By Day\Hpp Style\OriginalDeriv...原创 2021-11-26 17:40:33 · 2224 阅读 · 0 评论 -
Windows下的二进制兼容问题
关键词:找不到指定模块、找不到指定程序、LoadLibrary失败、InstallShield安装失败、无法注册模块、无法找到模块、无法找到程序、无法找到依赖前言茫茫Windows下的开发中,每个人都一定会遇到类似这样的问题。一个编译好的二进制模块,在自己的本机运行明明没有任何问题,然后一到别人的电脑就出现各种找不到模块,找不到依赖等等问题。而本文的目标就是如何解决这种问题。 这里就只列举这两个例子,但大多找不到xxx等...原创 2021-11-09 13:36:27 · 738 阅读 · 0 评论 -
关于DLL C++导出类的问题。
标准c导出十分简单,无需再提。然而关于c++导出,当我们导出类时,一个类除了构造和析构函数还会导出拷贝函数,并且会将类中的所有函数一一导出,且符号为带修饰符的符号名但是由于c++导出修饰符号的规则各有不同,因此需要保证dll编程和使用者使用相同的编译器。这显示是很不通用的办法。更好的办法是我们的.h仅声明纯虚函数,而dll实现的派生类仅导出一个获取派生类对象的方法。这样由于c++的虚函数机制是一致的,我们仅需从其实现dll获取该实现的对象,即可调用...原创 2021-10-11 13:50:15 · 665 阅读 · 0 评论 -
x86 64变量字长(x86 64编程变量兼容性)
前情提要在x86 和x64的目标程序兼容上,并非手指点一点就能完成程序的转换。如果这么简单32位程序早就换代啦。 很重要的一点是,在x86和x64上cpu寄存器以及寻址等硬件相关的参数都由于32位对应或地扩充到了64位字宽,但是编程中32和64选择编译的时候,以windows平台举例,仅有void*相关类型会自动根据选择的目标版本从x32扩充到x64。没想到把,也就是说,除了和内存寻址相关的地方,其余的数据类型压根就不会简单点一下就扩充为64程序。因此简单的切换目标版...原创 2021-09-28 16:14:58 · 478 阅读 · 0 评论 -
PE(dll、exe)文件内存加载(手动映射)小记
前言 PE文件即Windos操作系统下的可执行文件的文件结构名称,其中包含但不限于.dll .exe .sys .ocx等等。内存加载PE顾名思义就是通过内存,而非文件。这里的内存指代的是直接加载源。这个技术其实很早之前就有了,网上也有很多开源可参考的代码,但是仅做一个伸手党那是绝对不行的,首先这些历史悠久的代码存在或多或少的bug,或莫名的崩溃咯,或32和64不兼容咯,各种问题皆是。当然,这些前辈先贤的代码一定是具有非常大的参考和开拓意义的。技术用途 ...原创 2021-09-28 15:32:12 · 2129 阅读 · 1 评论 -
c/c++巧用宏计算不定参数个数【不定参数】【宏】【#define】
背景用过Go、py一类的可能都有所感受,对于不定参数的使用很多时候代码中真的很爽。让你原地起飞。 遗憾的是,c或者c++关于不定参数的使用实际是基于参数栈计算偏移获取值的一个过程。不过这也有好的一点,效率还是不错的。 其中最大的问题莫过于既然是计算便宜我们在不定参函数内部是不知道参数的个数的,因此我们必须使用参数也好传值或者其他间接传值让函数内部的参数长度得到指定,之后才可以愉快地取参。正题开始 但是,c或者cplus里存在一个叫...原创 2021-09-17 17:23:44 · 3624 阅读 · 0 评论