自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(95)
  • 问答 (1)
  • 收藏
  • 关注

原创 刀与剑-COM对象组织

COM明明是一种编程思想,是一门绝世武功。可时代忽然迈入火器,无数人抛弃掉这晦涩难懂的绝世武功,转身投入速成的技艺时代。 “很多不懂 com 的C++程序员会自行发明一个 com 的子集,而且是蹩脚的多的子集。可惜的是,刀与剑的时代结束了,火器时代,掌握 com 这类武功已经没用了。” --

2022-07-07 17:50:01 182

原创 RustDesk 搭建一个自己的远程桌面中继服务器

现在很多商业远程软件要么收费,要么有或多或少的问题。因此急需一个可以自定义且方便快捷的远程桌面软件代替他们,rustdesk就是这样一个开源项目 github地址:https://github.com/rustdesk/rustdesk 可以自行下载编译,或者按照自己的需求修改。 release 可直接下载发布二进制 server端下载:https://rustdesk.com/zh/server/

2022-07-05 17:17:14 19698 15

原创 HOOK Native API

平时难免需要在应用层hook一些东西,而且ntdll这种核心dll也在劫难逃。 DetoursNT VC-LTL 不配置 DETOURSNT_NO_CRT C++ 异常 否 基本运行时检测 默认 运行库 MT 附加依赖项 libucrtd.lib 启用VC-LTL 设置

2022-06-29 15:53:14 307

原创 编译一个无导入表的DLL

上面两项消除对kernel32的引用和msvcrt。 无法解析的外部符号 __imp__GetCurrentThreadId@0,函数 @__CheckForDebuggerJustMyCode@4 中引用了该符号 ntdll未声明的函数可以自行声明后链接ntdll.lib

2022-06-28 10:04:14 162

原创 windows 编译python

python编译|编译py|xp python|python库|python ssl|python.exe|python|python socket在实际开发中我们往往需要将python编译为我们程序的组件或者支持程序,所以我们需要自己编译一个python解释器。 py是一个开源的解释语言,我们可以很容易下载到它的源代码: python官网:http://Python源码下载 如果你需要编译的py可以在xp上运行,最新的

2022-06-21 14:25:50 1154

原创 VMWARE 复制虚拟机联网问题

配置好一份虚拟机往往打算的是复制多份,但是有时会没有网络。其实这都是mac冲突造成的

2022-06-15 11:38:31 183

原创 IOCP 完成端口

URL:IOCP IO完成端口 - 沉疴 - 博客园 (cnblogs.com)URL:【Windows原理】异步IO-完成端口(IOCPsdemo:.\ StudyDemo\CompletionPortTestIO完成端口是windows下性能最好的IO模型。windows下的socket也是一种IO,所以完成端口也是最好的socket IO模型。  IO完成端口的出现是为了解决并发模型中可运行线程上下文切换开销过大而出现的。  在《Windows核心编程》的描述中,IO完成端口是Wnidows系统提供的

2022-06-10 16:40:58 290

原创 代码规范:代码提交注解规范

Type:Scope:Subject:举例: 1、feat(policy): 增加xxx策略

2022-06-02 10:28:04 806

原创 IO模型:4、异步IO(AIO)模型

前言 前面所有的模型都是在针对等待IO就绪时的,即IO请求复制数据的过程依旧是阻塞的。而内核从内核缓冲区向应用层程序复制数据时用户线程在等待IO完成。模型简介AIO实现了IO全流程的非阻塞,就是应用进程发出系统调用后,是立即返回的,但是立即返回的不是处理结果,而是表示提交成功类似的意思。等内核数据准备好,将数据拷贝到用户进程缓冲区,发送信号通知用户进程IO操作执行完毕。异步IO的优化思路很简单,只需要向内核发送一次请求,就可以完成数据状态询问和数据...

2022-05-24 16:22:28 398

原创 IO模型:2、信号驱动模型

引用一篇干货博客:select的原理和用法:FD_SET的使用写在前面IO复用模型轮询IO就绪转态,其实在IO就绪前的轮询都是无意义的,浪费CPU的时间片。那有没有一种办法可以让IO就绪的时候反过来通知我们呢,这样便只存在一次交互。模型概念信号驱动IO不再用主动询问的方式去确认数据是否就绪,而是向内核发送一个信号(调用 sigaction 的时候建立一个 SIGIO 的信号),线程不阻塞。当内核数据准备好后,再通过 SIGIO 信号...

2022-05-24 15:48:36 183

原创 IO模型:2、多路复用模型

引用 一篇干货博客:select的原理和用法:FD_SET的使用写在前面在阻塞模型中,线程发起IO会阻塞直到IO完成才返回。在单线程无并发的工作中这并无不妥,但如果是一套需要高并发的逻辑,例如网络服务器,此时这种模型显然不合理。从本文开始介绍经典常用的非阻塞IO模型,各种模型如何调配调度对于IO调用的合理安排能大大提高系统的效率、提升吞吐率降低系统资源调度的额外开销。模型阐释 从IO模型:2、阻塞模型...

2022-05-24 14:21:08 1000

原创 IO模型:1、IO模型初识

目录什么是IO计算机角度的IO操作系统的IOIO过程阻塞IO非阻塞IOIO过程什么是IOIO,英文全称是Input/Output,翻译过来就是 输入/输出。平时我们听得挺多,就是什么磁盘IO,网络IO。计算机角度的IO我们常说的输入输出,比较直观的意思就是 计算机的输入输出, 计算机就是主体。大家是否还记得,大学学 计算机组成原理的时候,有个 冯.诺依曼结构,它将计算机分成分为5个部分:运算器、控制器、存储器、输入设备、输出设...

2022-05-23 18:26:07 303

原创 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 316

原创 LNK1112 模块计算机类型“x64”与目标计算机类型“X86”冲突

前言工作需要,自己编译xp可用的python。从百度得知xp能支持的最高版本python为3.4.4版本。因此下载该版本的源码解压后编译动态共享 dll和静态lib。配置属性-》库管理器-》命令行,在下面的其他选项中输入:/MACHINE:X64...

2022-05-23 10:19:18 238

原创 进程启动时的早期注入时机

下图可见,A.dll 被注入的时机十分早,进程初始化完成前便已经注入。程序DLL的加载过程如同依赖一般,为可传递的递归加载。

2022-05-19 15:49:24 261 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 1003 1

原创 无法打开 源 文件 “inttypes.h“

不知道为啥,总要求用2010的平台工具集编译程序,说这样能兼容xp。具体怎么回事,咱也不太清楚。但其中一点可以明确的就是很多新的api xp是没有的。起因该文件是在比较新的SDK中才存在,而其中主要是对一些基本类型取了别名。而设置为早期的平台则无法生成,因为早起的sdk中并无此文件解决办法最好的方式是自己撸一个同名文件,并设置一个目录,将其中的一些实现抄写进如即可。...

2022-05-10 15:29:30 233 1

原创 W2A A2W内存耗尽崩溃

这俩宏在一些数据比较长的函数内会错误,最终程序崩溃。自己实现宽窄字符串转换即可。引用https://blog.csdn.net/gzfstudy/article/details/51593654

2022-05-06 12:49:56 323

转载 UI程序增加控制台

#include <consoleapi.h>#include <cstdio>class runtime_consle {public: runtime_consle() { AllocConsole(); freopen("CONOUT$", "w", stdout); } ~runtime_consle() { FreeConsole(); fclose(stdout); }};转自:https://blog.csdn.net/we.

2022-04-19 17:33:25 202

原创 刀与剑-COM返回数组

COM明明是一种编程思想,是一门绝世武功。可时代忽然迈入火器,无数人抛弃掉这晦涩难懂的绝世武功,转身投入速成的技艺时代。“很多不懂 com 的C++程序员会自行发明一个 com 的子集,而且是蹩脚的多的子集。可惜的是,刀与剑的时代结束了,火器时代,掌握 com 这类武功已经没用了。”---知乎网友关于使用COM接口返回数组COM处理了未知语言在COM客户之间传递数组,没错。但是这个并不是什么GO之流,而是C#、VB、Delphi、asp之流甚至...

2022-04-12 12:56:45 365

原创 X64 inlineHook 总结

Inline hook 常用

2022-04-06 18:07:53 1481

原创 Windows 内部\内核版本与系统版本对照表

个人收集,作备忘录用。会不断完善增加条目内核版本号 系统版本号 描述 7600 Win7 最开始的的Win7版本 6.1.7601 Win7 pack1 win7 sp1版本,进行过一次修订的win7 18363.778 win10 1909 Win10 1909 ...

2022-04-06 11:20:14 2637

原创 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 2130

原创 windows简单注入winlogin提权到System

简述在windows系统中大多数用户能获得的administrator用户的管理员权限即为最高了,但这并非最高权限。而如果能提升权限至system,那岂不是美滋滋。而本文即公布一种十分简洁方便的办法提升权限。方法有各种方法,很多都是复制token什么的。其实还有个办法,十分简单。直接使用system进程启动的子进程也会继承父进程的权限。但绝大多数system进程都无法在r3显示。但唯独有一个进程可以,那就是winlogin进程。而且该进程也能在r3打开。因此我们可...

2022-03-22 11:04:28 1315

原创 析构函数造成的内存泄露

前言之前有说过我写了正则解析的代码,不再使用stl库的正则。这样没有额外的依赖可以让我在内核等场景使用正则。结果代码出现了内存泄露,十分恼火。泄露现场 循环一万次,内存直接飙升到了300Mb。代码排查 首先检查类中聚合的属性带指针的地方,比如指针以及存放指针的容器。 class CRegex { private: std::vector<std::string> m_reg; __Helper::__CRegex::CFAN...

2022-03-11 18:18:00 1346

原创 手写正则与自动机代码生成之,std::regex劝退

大学时候学过自动机,但是并不是很理解。其实这玩意儿就是状态的转换。当程序在有限个数据类型中来回切换的话,是可以构建为自动机模型的。而这不就是c++里类的抽象吗。原来往日学的知识早已在暗中串联融汇。自动机与正则正则同样可以直接化为自动机模型,唯一不同的是出现()时会有嵌套结构,此时虚节点的引入成为了必要。此外由于匹配次数,需要在转换路径上进行次数限制,因此同样,由于嵌套存在,还需要由一个清空一个嵌套节点内计数的触发清除计数的逻辑。...

2022-03-11 17:45:46 275 2

原创 DNS原理与手撸域名之自己解析域名

一、DNS解析场景这世间很多实物都在悄然运转,没有惊天动地也没有春花秋月。哎,没错了,dns这玩意儿就是这样,平时不声不响,一旦没了它,上网那是不存在上网的了。 当你打开浏览器,输入www.xxoo.com,按下回车的那一秒,你的电脑又发生了什么呢?其实在浏览器输入地址后,计算机并不能直接访问到网站,因为有相关网络基础的同学都知道,数据包在网络链路传输过程中,路由转发是数据能到达目的地的核心过程。而数据包在不停的转发过程犹如快递的转运,经过一次次我的转运最终发到你的手里。而...

2022-03-10 12:09:12 4395

原创 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 1447 4

原创 安全模式启动服务&&安全模式加载驱动.sys

前言 在某些情况下我们会需要在安全模式下也启动我们服务或加载对应的驱动(安全软件),而正常情况设置启动方式为自启或引导启动都不会在安全模式启动。方法 ①启动服务 分别在SafeBoot\Minimal和SafeBoot\Network新建服务名的键,默认值Service。如在安全模式启动名为AppInfo的服务。[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBo...

2021-12-22 11:13:03 1921

原创 C 与 LUA -相互调用及值传递

写在最前 由于工作需要,有幸正真地开始接触lua。 lua一直是动态执行脚本中的宠儿,而究其原因不外乎简介方便,效率高。我甚至看到过有帖子说lua就是为了动态化c而生的,c是静态的,是编译型的,这使得他的灵活性大大下降,但是lua则弥补了他的短板。 并且lua本身也是由c实现的,整个虚拟机十分轻量独立,天不生你lua哥,万古c界如长夜。相关背景 其实任何的程序与程序或代码段与代码段的交互只有两点,第一是调用,第二是数据的传递。因为程...

2021-12-10 17:50:12 760

原创 C++ 多继承之 虚基派生(继承) 解决错误(活动) E0266 ““ 不明确错误 C2385 对“”的访问不明确

前言 c++多态是在方法上进行抽象进行分类和统一,而多继承的出现大大提升了c++编程的灵活性和易用性,专业的说法就是提高内聚,降低耦合。但是呢,多继承的使用中一定会遇到基于同一个基类的拍生类再次被某个类所继承的情况,于是 纷争开始了。。。举个栗子 我们现在设计一个游戏的人物或者叫装备或者叫身体系统,实现思路呢主要是把一个游戏角色的身体拆分为各个部分,每个部分可以单独强化和习得技能什么的。最后由各个部分组成一个完整的角色。 ...

2021-12-07 17:17:47 11024 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 4292 3

原创 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 2374

原创 第一次复现漏洞 远程代码执行漏洞(CVE-2019-0232)

写在前面 在公司呆了一段时间了,bug写了一小堆之后,我居然要开始接触漏洞的东西了,阿巴阿巴。还好这段时间老师带我,同事帮我,所幸没出什么错。然后今天第一次接触漏洞,漏洞是啥。名声在外,但是一直没实操过。于是今天。 纷争开始了...参考博客: 参考博客一:这篇手把手教你复现 参考博客二:这篇是原理复现要求环境: 这是一个Apache Tomcat 远程代码执行漏洞。 配置要求:...

2021-11-25 18:13:03 2729

原创 Windows WOW64 nativeapi 逆向详解,32程序兼容剖析

前言 windows有很多核心的原生api,其中包含sdk声明的和文档未声明的。主要由于ntdll.dll和win32u.dll(服务号0x1000-0x1FFF)导出。WOW64 (Windows-on-Windows 64-bit)是一个Windows操作系统的子系统,用于模拟32位环境,使得32位执行程序在x64系统正常运行。 而64位系统字长变为64位,因此是无法直接执行32位的可执行代码的。因此x64引入了兼容32位执行程序的wow64 子系...

2021-11-19 11:31:12 1423

原创 加密与解密-工具篇

写在前面 在信息传输的加密中ssl可真是一座大山,这次解决server 2003系列无法发起https通信的原因查找中,导师披荆斩棘直捣黄龙。当场带我躺赢,这就是前辈的技术。所以一定要多多向前辈学习。正文Nmap:用来查看服务器支持的密码套间,牛批。我没用过,老师告诉我的。wireshark:用来截包,可以查看握手期间客户端发送的包。来确定客户端支持的密码套间。 ps:以前我贼讨厌这个小鲨鱼,觉得太复杂,今天被教育了,这才是最好的原来。...

2021-11-18 18:13:38 363

原创 加密与解密-Cipher Suite

写在前面 我以为非对称加密是一个算反,好家伙。原来是一套啊。他们被称之为密码套间。而ssl加密的时候,双方握手确定的就是某一个套间。下面是一个ssl握手的过程,没有进行客户端验证:1.C-S:ClientHello---cipher-suit-list2.S-C:ServerHello---selected-cipher-suit3.S-C:ServerKeyExchange4.S-C:ServerHelloDone5.C-S:ClientKeyExchange...

2021-11-18 18:04:00 935

原创 加密与解密-向前安全性

写到前面 这几天遇到server 2003 死活没法访问https,而且使用sha1校验的证书,在iis开启服务能被访问。但是nginx开不上,而且换sha1256 iis开也不能访问。以上前提都是真机访问毫无问题。今天老师出手解决了,我也是第一次真正接触这个非对称加密,人都麻了。这是初学第一点理解。概念 这个词的全程叫(完美)向前安全性,英文 Perfect forward Secrecy。是密码学通信协议的安全属性,指长期使用的主秘钥泄露不会导致过去的会话秘钥泄露...

2021-11-18 17:00:36 1144

原创 Windows下的二进制兼容问题

关键词:找不到指定模块、找不到指定程序、LoadLibrary失败、InstallShield安装失败、无法注册模块、无法找到模块、无法找到程序、无法找到依赖前言茫茫Windows下的开发中,每个人都一定会遇到类似这样的问题。一个编译好的二进制模块,在自己的本机运行明明没有任何问题,然后一到别人的电脑就出现各种找不到模块,找不到依赖等等问题。而本文的目标就是如何解决这种问题。 这里就只列举这两个例子,但大多找不到xxx等...

2021-11-09 13:36:27 832

原创 关于DLL C++导出类的问题。

标准c导出十分简单,无需再提。然而关于c++导出,当我们导出类时,一个类除了构造和析构函数还会导出拷贝函数,并且会将类中的所有函数一一导出,且符号为带修饰符的符号名但是由于c++导出修饰符号的规则各有不同,因此需要保证dll编程和使用者使用相同的编译器。这显示是很不通用的办法。更好的办法是我们的.h仅声明纯虚函数,而dll实现的派生类仅导出一个获取派生类对象的方法。这样由于c++的虚函数机制是一致的,我们仅需从其实现dll获取该实现的对象,即可调用...

2021-10-11 13:50:15 752

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除