关闭
当前搜索:

C++ STL 快速生成带后缀的随机文件名

示例代码展示如何运用 std::uniform_int_distribution 快速随机生成文件名并以 std::string 返回,可在某种情况下替代系统API。...
阅读(51935) 评论(0)

界面库Duilib编译成静态库

这套库做界面还是非常不错的,华为网盘客户端也是用的这个。 有很多人不知道如何编译成静态库,其实很简单的。 首先在vs中设置duilib项目。如图:配置类型改为静态库。 第二步修改UIlib.h头文件上面的宏。如图: #define UILIB_API  #pragma comment(lib, "Comctl32.lib") #pragma comment(lib, "Ri...
阅读(10227) 评论(5)

C++从内存中加载映像(EXE/DLL)到本地或者远程进程执行

被加载的映像如果是EXE比必须关闭 固定基址(/FIXED:NO)即必须有重定位表, 否则无法处理重定位. void load_image() { auto pImage = data;//欲加载映像的内存地址 void *pDest = NULL; HANDLE pSection; LdrSup::AlignSections32(&pSection, pDest, pImag...
阅读(39449) 评论(1)

C++构造DHCP Discovery报文并使用socket发送

DHCP由BOOTP协议发展而来,而后者基于UDP、IP协议,这使得使用socket发送DHCP报文成为可能。本文示例构造了DHCP Discovery报文并调用socket接口发送,值得注意的是,由于DHCP要求发送者ip是0.0.0.0,所以必须使用raw socket进行发送(本文没有示例),更进一步的,用户层代码Linux、macOS系统可以使用libpcap,Windows系统可以使用Windivert、Winpcap/Npcap进行发送。...
阅读(46487) 评论(0)

C++解析http-chunked数据

chunked 是http传输过程中常用的一种分块手段, 这里是对chunked数据的简易处理方法,主要是拼接block, 去掉块大小和回车信息即可 static ResponseStream *rlib_parse_chunk_data(char *lp_chunk_data, intptr_t nsize) { auto pstream = new ResponseStream(Utilit...
阅读(38443) 评论(1)

数字图像处理均衡化灰度拉伸C++实现

/// /// 均衡化灰度拉伸 /// /// 输出图像数据 /// 输入图像数据 /// 图像宽度 /// 图像高度 void equalize_gray(unsigned char *lpdst, const unsigned char *lpsrc, int width, int height) { RLIB_RENAME(width, width_x_height); width_...
阅读(52012) 评论(2)

C++向目标进程PEB模块链添加自己的DLL

有时候为了让内存注入的DLL现身, 就需要用到这个方法了 auto lppeb = reinterpret_cast(AppBase::GetPEBAddress()); if (NtGetModule(_T("QQManager.dll")) == NULL) { String StartupPath = String(BaseDllDir) + _T("QQManager.dll");...
阅读(2111) 评论(10)

动态规划算法解最长公共子序列LCS问题

动态规划算法解LCS问题 动态规划一般也只能应用于有最优子结构的问题。最优子结构的意思是局部最优解能决定全局最优解(对有些问题这个要求并不能完全满足,故有时需要引入一...
阅读(36655) 评论(6)

STL vector 源码解析

前言 项目组要实现一个算法库,其中涉及到了类似vector的一维数组的实现。特此,对stl中得vector做个学习和了解。有任何问题,欢迎不吝指正。谢谢。 一、如何实现vector 如果给你一道面试题,如何用数据结构实现STL中vector的功能?聪明的你会怎么做呢?或许你会如下所述: 或许,如果不考虑分配效率,只需要两个成员就可以实现了 template class Vec...
阅读(16313) 评论(5)

选择类排序法 — 简单选择排序

9.4 选择类排序法 选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。我们主要介绍简单选择排序、树型选择排序和堆排序。    简单选择排序 简单选择排序的基本思想:第i趟简单选择排序是指通过n-i次关键字的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录进行交换。共需进行i-1趟比较,直到所有记录排序完成为止...
阅读(19757) 评论(0)

各类经典搜索算法(Search Algorithms)的简单介绍和C++实现

/// /// 顺序搜索法(Sequential Search) /// 优点: 该方法对数据无事先排序(Sorting)要求, 容易实现 /// 缺点: 搜索效率差(平均搜索 (N + 1) / 2 次), 不管是否排序, 每次都必须从头到尾遍历一次 /// 时间复杂度: /// 如果没有重复数据,线性查找在找到任一元素时就终止,否则需要全部遍历. 在最差情況下, 需作N次比较, O(N)...
阅读(47633) 评论(0)

各类文件的文件头标志

各类文件的文件头标志 1、从Ultra-edit-32中提取出来的 JPEG (jpg),文件头:FFD8FF PNG (png),文件头:89504E47 GIF (gif),文件头:47494638 TIFF (tif),文件头:49492A00 Windows Bitmap (bmp),文件头:424D CAD (dwg),文件头:41433130 Adobe Photosh...
阅读(17969) 评论(1)

x86 指令集介绍 - Call 过程调用指令

Description     Saves procedure linking information on the stack and branches to the procedure (called procedure) specified with the destination (target) operand. The target operand specifies the add...
阅读(10755) 评论(3)

C++对齐杂注__declspec(align(#))和#pragma pack的区别

一般来讲, 访问未对齐的内存(misaligned access)轻则影响效率, 重则引发异常(包括指令执行异常和结构体对齐不正常引发的逻辑BUG等), 总之内存对齐是程序员尤其是C/C++程序员是不得不重视的一个问题. MSVC++提供了两种对齐杂注, __declspec(align(#))和#pragma pack, 而在C++11标准中也加入了描述符alignas用于对齐控制, 本文主要简单解释下前面两种杂注的区别, 权当作者学习笔记....
阅读(47938) 评论(0)

TinyXML不支持UNICODE的解决方法【改造TinyXML】

TinyXML目前仅直接支持解析UTF-8或者ASCII编码的XML, 对于其它编码必须经过转换才能使用, 这给Windows项目带来了麻烦, 频繁的编码转换也可能给性能带来巨大损失. 对此, 作者给出了解释的是"UTF-8 is not a double byte format - but it is a standard encoding of Unicode! TinyXML...
阅读(16924) 评论(6)

#include <Windows.h> 和 <Winsock2.h>冲突的改进解决方案

#include #include 上面的代码会导致重定义错误, 原因就是 Windows.h 中包含了 Winsock.h(不是Winsock2.h) , 百度的解决方案是加入 #define WIN32_LEAN_AND_MEAN 编译通过, OK! 然而, 由于使用socket的项目是DLL项目, 当把该DLL引用到其它项目中(如DUILIB)就会发生错误, 错误就是WIN3...
阅读(4535) 评论(0)

C++调用NTAPI枚举并强制关闭指定进程

#include "../../RLib/RLib/native/RLib_Native.h" #pragma comment(lib, "ntdll.lib") Array *found_if_process_by_name(LPCWSTR name IN, LPCWSTR parent_name IN) { unsigned long bytes = 0; ManagedMemoryB...
阅读(41257) 评论(2)

android ndk开发中常用的系统自带网络命令

android本身内置了一些网络命令,使用这些命令程序尤其基于ndk开发时会获得很多便利,并在某种程度上可以绕开上层的限制、获得更多详细的信息和更好的灵活性等。...
阅读(8954) 评论(4)

C/C++获取函数返回地址

一般而言, 能否覆盖函数返回地址是栈溢出攻击成功与否的前提, 而获取函数返回地址原理很简单, 栈回溯即可, 下面是x86上相应获取代码(仅为示例不可用于生产): #define Stack_Length (4 * 4 * 4) static void *_esp_arr[Stack_Length]; void *GetRet(void *caller) { void *_esp; __asm...
阅读(6926) 评论(3)

32位与64位区别与编译器数据模型简介

一、32位与64位区别  32位和64位机器。        32位和64位指的是机器字长,即CPU能同时处理的数据的最大宽度。一台电脑机器主要由CPU、内存、IO设备、总线组成,称电脑机器是64位是指以上设备都支持64位。 32位和64位操作系统。        从硬件理论上说,64位机器的总体处理速度约为32位机器的2倍。操作系统依赖机器但又不完全依赖它。软件兼容性上,32...
阅读(14858) 评论(0)
175条 共9页首页 上一页 1 2 3 4 5 ... 下一页 尾页
    联系作者
    通过QQ与我联系(全天候7*24小时基本不在线)
    最新评论
    免责声明
    如果转载的文章侵犯了您的版权,请务必告知,我将立刻删除;
    博客所有文章允许转载,原创类不要求注明出处,随意就好;
    如果是转载的文章,建议直接转载原始来源,因为原作者极可能有更新