- 博客(62)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 解决 501 版本之后不显示系统 tooltips 的问题
TOOLINFO ti; memset(&ti, 0, sizeof(TOOLINFO)); #if _WIN32_WINNT>0x0500 ti.cbSize = sizeof(TOOLINFO)-sizeof(void*); #else ti.cbSize = sizeof(TOOLINFO); #endif
2022-06-17 10:27:37
142
原创 利用DirectShow简单判断摄像头权限并预览
// ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include "windows.h" #include "TCHAR.h" #include <dshow.h>LRESULT CALLBACK WindowProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam...
2022-03-14 15:58:31
331
原创 C++ 判断字符是Emoji表情
int IsEmojiChar(wchar_t _ch1, wchar_t _ch2){ if ((0XD800 <= _ch1) && (_ch1 <= 0XDBFF)) { UINT _tmp = ((_ch1 - 0XD800) * (UINT)0X400) + (_ch2 - 0XDC00) + (UINT)0X10000; if (0X1D00 <= _tmp && _tmp <= 0X1F77F) { retur..
2021-06-28 16:55:47
1034
原创 vs2015 编译 x64 Cef 的方法
cmakecmake-G"VisualStudio14Win64" D:\....\cef -B D:...\cef\build 产生的就是 64 位配置的工程wenj
2021-06-23 19:59:43
314
原创 DuiLib 避免会绘制系统默认白底标题栏的方法
窗口的xif (uMsg == WM_NCACTIVATE) { if (!::IsIconic(m_hWnd)) { return (wParam == 0) ? TRUE : FALSE; } } else if (uMsg == WM_NCCALCSIZE) { return 0; } else if (uMsg == WM_NCPAINT) {...
2021-06-09 19:20:33
190
转载 处理 __iob_func 无法链接的问题
转自:http://www.cnblogs.com/ubosm/p/5444919.html使用vs2015编译ffmpeg的一个小项时,出现了__imp__fprintf和__imp____iob_func 的错误,google了一下,有的人 建议下载SDL源码重新编译一下,当然这个方案非常不科学。所以又继续搜,终于有所发现。这是老外的原话:In visual studio 2015, stdin, stderr, stdout are defined as follow :#defin
2021-05-10 11:19:19
656
原创 程序无法启动0xc000007b 的终极处理办法
网上有很多教程,总结起来就是缺库。所以用直接粗暴处理。能运行和不能运行的两个环境 C:\windows*wow64 目录(32位之类的换目录即可)进行对比。将不同文件直接拷贝过去即可。可以根据使用的IDE 工具集选需要的比如 vs2015 对应 **140 *.dll。...
2021-03-17 14:45:36
392
原创 调用门-中断门拾遗
个人备忘,一些总结。中断门和调用门的细节不赘述,网上很多。调用门,用 iretd 返回。来深度理解调用门(正常应该 retf 返回)void __declspec(naked) Dym(){ __asm { int 3; //retf; // 正常应该用 retf 返回 mov eax, 0x11112222; mov ebx, 0x22222222; mov ecx, 0x33333333;
2020-09-30 13:30:18
729
1
原创 windbg 内核调试部分命令
dg 0x10 查看段描述符dg 0x00 0x80 可以查看一部分段描述符,和上面一样后面这个数字可以自己修改的r gdtr查看 GDT 表地址dq 0x… 或者 dq gdtr 都可以查看GDT表内容也可以查看一个范围内的eq 修改GDT表...
2020-09-25 14:33:16
340
原创 GDT 表与段选择子等解析
全局描述表(GDT Global Descriptor Table):在保护模式下一个重要的数据结构。GDT可以被放在内存的任何位置,那么当程序员通过段寄存器来引用一个段描述符时,CPU必须知道GDT的入口,也就是基地址放在哪里,所以Intel的设计者门提供了一个寄存器GDTR用来存放GDT的入口地址,程序员将GDT设定在内存中某个位置之后,可以通过LGDT指令将GDT的入口地址装入此寄存器,从此以后,CPU就根据此寄存器中的内容作为GDT的入口来访问GDT了。GDT是保护模式所必须的数据结构,也是唯一
2020-09-17 15:05:11
1790
原创 封装统一模板调用动态库(dll)
enum CallLibType{ eStdCall, eCdecl, eFastCall};template<typename ResultType, typename ...params>void CallLibrary(CallLibType eType, std::string strDll, std::string strFuncName, ResultType& ret, params... para){ HMODULE hd = LoadLibraryA
2020-07-24 10:55:33
288
原创 构造线程任务函数,允许任意任意函数作为任务
构造线程任务函数,允许任意调用任意函数int fun1(int a){ std::cout << a << std::endl; return 0;}int fun2(int a, int b){ std::cout << a << " " << b << std::endl; return 0;}void fun3(std::string str){ std::cout << str <&
2020-07-21 16:01:25
149
转载 多种DLL注入技术原理介绍
转载自:[翻译]多种DLL注入技术原理介绍Git 地址https://github.com/fdiskyou/injectAllTheThings
2020-07-15 16:52:16
247
原创 解析URL的域名证书
可以通过 openssl 获取常规的,但是部分网站获取不正确。// 请使用 CertFreeCertificateContext 释放 *p_contextvoid GetCertFromDomain(const wchar_t* domain, int nPort, CERT_CONTEXT** p_context){ if (NULL == domain || NULL == p_context) { return; } static HINTERNET hsession = NU
2020-06-28 14:01:32
657
原创 解决VC使用unicode字符集时某些ANSI版本函数无法调用的问题
查看windows 一个函数的定义如下:WINBASEAPI_NullNull_terminated_LPCHWINAPIGetEnvironmentStrings( VOID );WINBASEAPI_NullNull_terminated_LPWCHWINAPIGetEnvironmentStringsW( VOID );#ifde...
2020-04-29 11:32:00
279
原创 创建专有命名空间的内核命名对象
代码来自 Windows 核心编程。简单修改测试通过(win10)。可能需要管理员权限。提权代码这里没写。本文只是一个简单示例。do { wchar_t* _namespace = L"TestNamespace"; wchar_t* _mutexName = L"mutexName"; wchar_t* _boundName = L"TestBoundName"; HA...
2020-04-26 16:50:21
261
原创 利用 openssl 加解密
std::string EncryptByOpenSSL(const std::string& str, const EVP_CIPHER* evp, const unsigned char* key, const unsigned char* iv, bool bEncrypt){ std::string strCipher1; { BIO* bio = BIO_new(B...
2020-04-14 14:16:53
375
1
原创 使用 openssl 的 RSA 加解密测试及总结
先看代码void MyRSA_Test(RSA *rsa, bool bUsePublicEncrypt, int padding){ unsigned char plain[512] = "Hello world!"; unsigned char cipper[512] = { 0 }; unsigned char newplain[512] = { 0 }; int outl ...
2020-04-13 10:52:24
879
原创 x86 条件转移指令窥探
条件转移指令(参考)JA/JNBE 不小于或不等于时转移.JAE/JNB 大于或等于转移.JB/JNAE 小于转移.JBE/JNA 小于或等于转移.以上四条,测试无符号整数运算的结果(标志C和Z).JG/JNLE 大于转移.JGE/JNL 大于或等于转移.JL/JNGE 小于转移.JLE/JNG 小于或等于转移.以...
2020-03-17 14:33:53
1466
原创 函数调用约定与 call 指令杂谈
首先本文关于函数调用约定部分来自转载和整理,参考文章:C/C++函数调用约定函数调用约定解析一:函数调用约定;函数调用约定是函数调用者和被调用的函数体之间关于参数传递、返回值传递、堆栈清除、寄存器使用的一种约定;它是需要二进制级别兼容的强约定,函数调用者和函数体如果使用不同的调用约定,将可能造成程序执行错误,必须把它看作是函数声明的一部分;二:常见的函数调用约定;VC6中的函数调用约...
2020-03-13 16:26:55
632
1
原创 PE 文件总体结构概述
前面多篇文章讲了PE文件格式,导入导出表的解析。这里新开一篇来作为总结,或者说作为最开始的概述。本文以 kernel32.dll 为例。使用工具 PEView.exe 查看如下:可以看到其主要分成几个部分:1: Dos 头,IMAGFE_DOS_HEADER 长度 0x402: Dos Stub 。3: NT Header 起始位置由 Dos头中最后一个字段指定。4: 连续...
2020-03-06 11:22:25
379
原创 PE文件和COFF文件格式分析——导入表
因为之前已经介绍了PE基本格式已经导出表相关,因此一些基本的东西就直接省略,用工具直接定位。本次以 kernel32.dll 为例,查看其导入表。首先用 Stud_PE.exe 查看导入表的位置如下:也就是在文件的地址 0x084c88。跳过去看看,以红线开始查看导入表定义:typedef struct _IMAGE_IMPORT_DESCRIPTOR { union { ...
2020-03-05 17:19:38
382
转载 PE文件和COFF文件格式分析——导出表
回顾前文 PE文件和COFF文件格式分析(1),并以典型的 msvcp80.dll 来分析。文件最开始是一个0x40字节的结构。typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header WORD e_magic; // Magic number WORD e_cblp;...
2020-03-03 16:54:42
1082
转载 Delphi 调用控制面板设置功能
转载自https://www.cnblogs.com/FKdelphi/p/4654585.html如有侵权联系本人删除应用程序运行时,有时需要对系统环境有特殊要求。例如,在Delphi数据库应用程序中可能需要进行BDE(Borland Database Engine)或ODBC数据源名称(DSN:Data Source Name)的设置;在网络应用程序中可能需要进行网络配置设置、Mod...
2020-02-28 16:58:47
172
转载 PE文件和COFF文件格式分析(1)
本文主要来自相关系列博文(breaksoftware的csdn博客 https://blog.youkuaiyun.com/breaksoftware/article/details/7710323)。自己,稍微调整,整理。MS 2.0节是PE文件格式中第一个“节”。其大致结构如下:在VC\PlatformSDK\Include\WinNT.h文件中有对MS-DOS 2.0兼容EXE文件头的完整定义...
2020-02-28 10:52:29
1436
原创 DLL 内部获取自身绝对路径
常见的获取方法是通过 GetModuleHandle(NULL),获取当前EXE句柄,然后通过GetModuleFileName获取EXE路径。Dll在该路径下加上 “xxx.dll”,即可。但是有时候 dll 与 exe 不一定在一个位置,甚至 dll 并没有按照指定的目录关系与 exe 有明确的对应关系,甚至 dll 的最终名称作为 dll 的编写者并不清楚(比如重命名)。有以下几种方法:...
2020-02-27 10:59:07
1477
原创 Windows 下动态库的 DllMain 与 c++ 相关坑
有时候需要在 DllMain 中写一些代码,比如下面这样,其中 TestAttach 等函数里面有需要的一些代码,里面的代码片在采用 DllMain 调用之前完全运行正常。BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, ...
2020-02-25 14:48:47
1278
转载 getsockopt、setsocketopt、ioctlsocket和WSAIoctl 详解
转载自:http://www.360doc.com/content/13/0115/11/10977253_260278513.shtml套接字选项和I/O控制命令 套接字一旦建立,通过套接字选项和I/O控制命令对各种属性进行操作,便可对套接字的行为产生影响。有的选项只用于信息的返回,而有的选项则可在应用程序中影响套接字的行为。I / O控制命令肯定会对套接字的行为产生影响。...
2020-01-04 14:11:40
1297
原创 GIT 配置beyond compare 作为默认比较工具
[diff] tool = bc4 [difftool] prompt = false [difftool "bc4"] cmd = "\"D:\\Program Files\\Beyond Compare 4\\BComp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\""注意:路径用 \\ 而不...
2019-12-13 13:54:13
515
原创 修改虚函数中部分函数和HOOK虚函数
class CTestVirtual{public: virtual void FunA() { std::cout << "FuncA " << m_iNum << std::endl; } virtual void FunB() { std::cout << "Fun...
2019-11-13 13:55:52
212
原创 文件重定向问题
if (Wow64DisableWow64FsRedirection(p)) then begin if not CopyFileEx('C:\Users\xxx\Desktop\A.txt', 'C:\Windows\system32\drivers\AAAA.txt', nil, nil,nil, 0) then begin ShowMessag...
2019-10-25 14:48:39
160
原创 利用dll和def文件生成lib文件
VisualC++开发工具提供了两个命令行工具,一个是dumpbin.exe,另一个是lib.exe。利用这两个工具即可从dll导出其对应的lib。1、在命令行执行:dumpbin/exportsyourdll.dll>yourdll.def2、编辑yourdll.def文件,使之格式与.def文件格式一致。比如:EXPORTSfn1fn23、在命令行执...
2019-04-09 17:25:19
367
原创 通过ISimpleAudioVolume修改程序音量
#include <AudioClient.h>#include <audiopolicy.h>#include <mmdeviceapi.h>#include <endpointvolume.h>#define Release_Com_Obj(obj) if ((obj)) (obj)->Release();#define C...
2019-04-01 16:30:26
1257
原创 批处理字符串操作
很好的批处理字符串操作实例https://www.dostips.com/DtTipsStringManipulation.php#Snippets.Replace
2019-02-27 15:36:36
443
原创 Git 出现 updating the current branch in a non-bare repository remote: is denied,
修改.git/config[receive]denyCurrentBranch = updateInstead
2018-12-07 10:21:05
947
mhook-master.zip
2019-09-11
带有通配符的字符串匹配算法
2015-05-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人