
windows平台
文章平均质量分 64
CoderAldrich
这个作者很懒,什么都没留下…
展开
-
C++单元测试框架Catch1.x简介
Getting CatchThe simplest way to get Catch is to download the latest single header version. The single header is generated by merging a set of individual headers but it is still just normal source code in a header file.The full source for Catch, includin转载 2021-11-23 19:54:45 · 418 阅读 · 0 评论 -
Visual C++ 里的异常处理
简介微软Visual C++是Win32最广泛使用的编译器,因此Win32反向器对其内部工作非常熟悉。能够识别编译器生成的粘合代码有助于快速集中于程序员编写的实际代码。它还有助于恢复程序的高级结构。我将集中讨论MSVC编译程序中的堆栈布局、异常处理和相关结构。假设对汇编程序、寄存器、调用约定等有一定的了解。名词解释:Stack frame — 堆栈帧,函数使用的堆栈段的片段。通常包含函数参数、返回调用方地址、保存的寄存器、局部变量和其他特定于此函数的数据。在x86(和大多数其他架构)上,调用者和被调转载 2021-10-22 17:33:28 · 1346 阅读 · 0 评论 -
IsBadReadPtr函数和异常处理
起因是优化代码性能,注意到这个函数,搜了一下发现是微软弃用的函数,说是有线程安全问题。经过一系列操作发现,处理大文件时这个函数会导致耗时变长,于是就研究一下这个函数。首先看函数开头:mov edi, edipush ebpmov ebp, esppush 0FFFFFFFEhpush offset stru_77991A20push offset FindResourceExA_SEHmov eax, large fs:0push ea原创 2021-10-21 18:48:30 · 2611 阅读 · 0 评论 -
C++ Runtime Code Reload
Quick prototyping and fast iteration times are incredibly important concepts for modern game development. Being able to hot swap an asset while the game is up and running can make the difference between a succesfull or a mediocre game simply because artist转载 2021-09-10 17:30:15 · 413 阅读 · 0 评论 -
https的中间人攻击和防范
https的中间人攻击和防范这里的中间人场景主要是Windows平台下的C/S架构劫持,技术指的是SSL劫持攻击,即SSL欺骗,剥离攻击暂不涉及。整体原理是伪造证书,既充当请求方的server角色,又充当真正server的请求方。以此来获取和篡改通信的明文报文数据。整体流程使用openSSL制作证书编写代理程序根证书添加到可信任发布机构设置系统代理证书制作首先装个openSSL,安装包下载地址:http://slproweb.com/products/Win32OpenSSL.html原创 2021-09-09 17:07:59 · 1034 阅读 · 0 评论 -
maven 配置指南
maven 配置指南打开 maven 的配置文件( windows 机器一般在 maven 安装目录的 conf/settings.xml ),在<mirrors></mirrors>标签中添加 mirror 子节点:<mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url&g转载 2021-09-02 10:53:35 · 148 阅读 · 0 评论 -
将exe和dll文件打包成单一的启动文件
当我们用 VS 或其它编程工具生成了可执行exe要运行它必须要保证其目录下有一大堆dll库文件,看起来很不爽,用专业的安装程序生成软件又显得繁琐,下面这个方法教你如何快速把exe文件和dll文件打包成一个可执行文件,就像我们平时看到的单一绿色软件一样,只要双击它,就能运行你的程序,简单,方便,而且只需用最常见的winrarr即可完成1.电脑上安装winrar,这个工具是最普及的压缩软件,我用的...转载 2019-02-18 14:10:46 · 542 阅读 · 0 评论 -
C++11 宽窄字符转换
C++11增加了Unicode字面量的支持,可以通过L来定义宽字符:std::wstring str = L"中国人"; // 定义Unicode字符串将宽字符串转换为窄字符串需要用的codecvt库种的std::wstring_convert。std::wstring_convert需要借助以下几个Unicode转换器:std::codecvt_utf8,封装了UTF-8与U...原创 2019-03-01 14:52:30 · 1797 阅读 · 0 评论 -
Getting Started With Dota 2 Modding
So you're completely new to Dota 2 modding? Don't know where in the hell to begin? This is the guide for you, the future Dota 2 modder!Note: “Addon”, "mod", and “custom game” are all synonymous thro...转载 2019-04-17 17:21:56 · 169 阅读 · 0 评论 -
Panorama - Custom DOTAScenePanel
IntroductionIn this tutorial we'll go through the tricks you can do with the undocumented DOTAScenePanel class in panorama.Now, you might have seen its usage if you looked through the sources in t...转载 2019-04-17 17:23:59 · 242 阅读 · 0 评论 -
lxl 大厅协议 -- [libcef部分]
根据Reversing the League of Legends Client一文中提到的方法,我们可以通过API Monitor拦截cef_parse_url得到部分的 url 调用。这里为了方便,介绍另一种方法。工具:Fiddler+Proxifier+TCPView准备工作:在Proxifier中设置一个针对LeagueClientUx进程的访问转向,...转载 2019-07-17 16:27:34 · 694 阅读 · 1 评论 -
lacewing简介
lacewing简介liblacewing是一个跨平台的,为C/C++提供的高级网络开源库,旨在提供一个简明的类,做到能够扩展并且可以平台优化(支持IOCP/EPOLL/KQUEUE等)。Classeslacewing::eventpumpeventpump is a default implementation of pump provided by the library, power...原创 2019-08-20 11:39:27 · 510 阅读 · 0 评论 -
编辑控件(edit)的事件
概述:编辑框(Edit)控件实际上是一个简易的文本编辑器,用户可以在编辑框中输入可添加或插入文本。还有复制、粘贴、剪切、删除等编辑功能。 应用程序用 CreateWindowEx 创建编辑框控件时,可根据控件的用途在下表中选择部份常数来设定其风格属性(style)。 常数 说明 ES_MULTILINE ...转载 2018-09-11 16:28:59 · 4689 阅读 · 0 评论 -
旋转数组的二分查找
旋转数组是指原来排好序的数组经过旋转后形成局部有序的数组,形如【4,5,6,7,1,2,3】就是【1,2,3,4,5,6,7】经过旋转后得到的数组。题目:给定一个数x能否在log(n)内找到这个数是否存在于旋转数组中 分析:这个题目的难点在于如何二分地查找一个数,显然局部有序这个条件是十分有用的。我们先定义数组的左边部分为从左往右一直递增的数组,如上述例子的左边部分为【4,5,6,...转载 2018-08-29 12:20:31 · 403 阅读 · 0 评论 -
一段dump数据的代码留着备用
void hexdump(const void *p, size_t len){ int count = 1; while (len--) { if (count == 1) fprintf(stderr, " %p: ", p); fprintf(stderr, " %02x", *(unsigned char*...原创 2018-08-16 16:46:29 · 234 阅读 · 0 评论 -
断点工作原理
一、 F2断点OD中的F2断点是int 3中断,也就是机器码0xCC指令。中断对应着中断处理函数,一旦系统执行到int3指令,这个指令将在处理器上产生硬件中断STATUS_BREAKPOINT以用于调试,为了响应STATUS_BREAKPOINT,处理器将执行3号中断向量函数。要在被调试进程中的某个地址设定一个断点,调试器需要做两件事:1. 修改断点地址所在内存的保护模式,原创 2015-01-22 14:14:06 · 2963 阅读 · 0 评论 -
AppHangB1引起的explorer进程停止与Windows交互解决方法
今日遇到一个系统故障,现象是打开我的电脑不能最大化,点击最大化窗口或者双击窗口都会引起explorer崩溃,如下图:百度出来的结果乱七八糟,不是让用某系统急救箱就是建议重装系统的。通过以下方法解决了问题:第一步:首先确认导致问题的原因是不是缺少系统文件,使用系统文件检查工具(SFC.exe)扫描系统文件(这个东西挺有用)。1. 以管理员身份打开cmd窗口,如果弹出一个窗口要原创 2015-08-25 11:19:31 · 193877 阅读 · 7 评论 -
WAV文件格式
起始地址占用空间本地址数字的含义00H4byte“RIFF”,资源交换文件标志。04H4byte从下一个地址开始到文件尾的总字节数。高位字节在后面,加上之前的8byte刚好是文件大小。08H4byte“WAVE”,代表wav文件格式。原创 2015-08-22 15:29:24 · 942 阅读 · 0 评论 -
DllMain操作不当造成死锁
背景是这样的,做驻留模块的时候用到了dll劫持,需要在黑DLL(A)里面的dllmain里面调用驻留DLL(B)中的一些功能,但是在实际操作过程中却遇到了问题,现象是B中的功能没有被执行,连打印的DBG信息都没了(其实也就是死锁了),尝试过在dllmain中直接调用函数加载B,也尝试了在dllmain中创建线程加载B,都会出现一些问题,实在不想继续对dllmain云里雾里,于是决定去搞清楚。...原创 2016-05-20 16:42:39 · 1059 阅读 · 0 评论 -
Inline hook ImmGetCompositionStringW获取中文输入
// dllmain.cpp : 定义 DLL 应用程序的入口点。// 本程序通过hook ImmGetCompositionStringW获取中文输入记录//#include "stdafx.h"#define OPCODESIZE 6#define INFO_BUFFER_SIZE 32767typedef BOOL(WINAPI *lpImmGetCompositionS原创 2015-01-23 20:30:30 · 2655 阅读 · 0 评论 -
反调试技术总结
所涉及到的反调试方法代码在这里反调试不外乎从进程检测、调试器检测、断点检测、制造异常等几方面入手,具体有以下方法:1. API检测,直接调用IsDebuggerPresent、CheckRemoteDebuggerPresent2. 调试端口debugport检测3. 检测父进程,包括Process32NextW和ZwQueryInformationProcess4. 执行产生原创 2016-12-06 18:17:48 · 1055 阅读 · 0 评论 -
宽字符和窄字符之间的转换
经常会用到,保存在这里以便直接拿去用~// 窄字符串转化为宽字符串,结果数据保存到第二个参数中,因此要在调用函数之前申请好空间//BOOL WINAPI Ansi2Unicode(__in PCHAR pAnsi, __out PWCHAR pUnicode, __in DWORD dwStrLen){ DWORD dwNum = 0; BOOL bRet = FALSE; d原创 2016-12-15 10:56:34 · 5219 阅读 · 0 评论 -
IAT HOOK、EAT HOOK和Inline Hook
导入表hook原理是修改导入表中某函数的地址到自己的补丁函数,具体步骤如下:1. 通过GetProcAddress获取目标函数地址2. 在程序内存中找到所在dll的导入表3. 查找目标函数地址保存的位置4. 把地址修改为自己补丁函数导出表hook原理跟导入表相同,步骤也差别不大但是二者都存在一个问题,就是当目标函数是一个递归函数时,只有第一次能hook成功,函数内部原创 2017-01-12 13:41:07 · 5921 阅读 · 0 评论 -
Windows 窗口层次关系
相信在Windows 下面编程的很多兄弟们都不是很清楚Windows 中窗口的层次关系是怎么样的,这个东西很久已经研究过一下,后来又忘记了,今天又一次遇到了这个问题,所以便整理一下。下面就说说Windows 中桌面(Desktop)以及顶层窗口,以及子窗口之间的关系。 在Windows 的图形界面下,最基本显示信息的元素就是窗口,每一个Windows 窗口都管理着自己与其他窗口之间的转载 2017-03-07 09:48:13 · 382 阅读 · 0 评论 -
使用VS进行远程调试
转自:http://blog.youkuaiyun.com/fm0517/article/details/50405206开发环境在A主机上(有源码,已安装VS),运行环境在B主机上(无源码,未安装VS,只有可执行程序exe或dll,以及对应的pdb文件)。在A主机上使用相同版本的源码,对B主机上正在运行的程序进行调试。1. 找到A主机上的远程调试监视器程序,通常在目录 D转载 2017-12-06 10:46:39 · 489 阅读 · 0 评论 -
利用GetProcessMemoryInfo 获取进程内存使用
GetProcessMemoryInfo functionRetrieves information about the memory usage of the specified process.SyntaxC++BOOL WINAPI GetProcessMemoryInfo( _In_ HANDLE Process, _Out_ PPROCESS...原创 2018-02-28 17:54:20 · 6496 阅读 · 0 评论 -
获取windows未导出函数地址标准方法
http://www.4hou.com/system/10590.htmlhttps://msdn.microsoft.com/zh-cn/library/ms679291.aspxhttps://bbs.pediy.com/thread-188881.htmhttps://bbs.pediy.com/thread-189324.htm转载 2018-03-09 10:51:37 · 2015 阅读 · 0 评论 -
UE 使用 方法 更新 科学使用
最简单的方法,把这个dll下载下来,替换UE安装目录的这个dll即可正常使用https://download.youkuaiyun.com/download/coderaldrich/10622529******************************************************************************************************...原创 2018-03-28 11:55:45 · 79939 阅读 · 62 评论 -
利用匿名管道向Android手机发送adb命令
第一次使用匿名管道,还很不熟练,哪里不完善的地方请评论指正,不胜感激。工作中需要写一个dll,实现对android手机的操作,并将此函数作为接口导出。手机连接电脑的时候,用adb命令可以直接在控制台对手机进行操作,封装到win32程序里面的整体流程是首先创建匿名管道,然后创建cmd进程,同时把adb命令作为cmd的参数传入,之后从匿名管道输出端读出返回的数据,代码如下:// 通过匿名管道执行a原创 2015-01-13 19:12:00 · 1600 阅读 · 0 评论