'“char [20]”转换为“LPCWSTR” 一、问题的原因:VS2005默认采用宽字符UNICODE编码方式,定义了Unicode,因此相关的字符串必须为unicode字符串,而非 LPCWSTR中的W是宽字符的意思,是UNICODE,就是说不是传统的char这种单字节字符,而是一个字符占两字节. 四、那么如何将char*或者char数组转换成VS2005中的LPCWSTR呢? )buffer, strlen(buffer)); 这个只能显示第一个字母“W” 错误方法二: sprintf((LPCWSTR)buffer,L"Key State = 0X% X ",key_state); TextOut(hdc, 0,16,(LPCWSTR)buffer, strlen(buffer)); 这个出现的是乱码!
once #include<Windows.h> #include<assert.h> class File { HANDLE hFile;//文件句柄 public: void open(LPCWSTR ; void movefp(long disp,int type); int write(char*data,int len); void close(); static void copy(LPCWSTR src,LPCWSTR des); static void move(LPCWSTR src,LPCWSTR des); static void del(LPCWSTR name); }; src,LPCWSTR des) { assert(CopyFile(src,des,true)); } void File::move(LPCWSTR src,LPCWSTR des) { assert(MoveFile(src,des)); } void File::del(LPCWSTR name) { assert(DeleteFile(name)); }
: MSFTEDIT.DLL [+] Potential DllMain Sideloading: LoadLibraryExW,LPCWSTR : MSFTEDIT.DLL, dwFlags charmap.exe,LoadLibraryExW,LPCWSTR : MSFTEDIT.DLL, dwFlags : NONE mspaint.exe,LoadLibraryExW,LPCWSTR : MSFTEDIT.DLL mspaint.exe,LoadLibraryExW,LPCWSTR : MSFTEDIT.DLL, dwFlags : NONE 如果你想让WFH输出更多详细内容,可以使用 : MSFTEDIT.DLL'} {'type': 'send', 'payload': 'LoadLibraryExW,LPCWSTR : MSFTEDIT.DLL, dwFlags : NONE' : MSFTEDIT.DLL'} {'type': 'send', 'payload': 'LoadLibraryExW,LPCWSTR : MSFTEDIT.DLL, dwFlags : NONE'
函数原形如下: HINTERNET WinHttpOpen( __in LPCWSTR pwszUserAgent, __in DWORD dwAccessType , __in LPCWSTR pwszProxyName, __in LPCWSTR pwszProxyBypass __in DWORD 函数原形如下: HINTERNET WinHttpConnect( __in HINTERNET hSession, __in LPCWSTR pswzServerName 函数原形如下: HINTERNET WinHttpOpenRequest( __in HINTERNET hConnect, __in LPCWSTR pwszVerb , __in LPCWSTR pwszObjectName, __in LPCWSTR pwszVersion, __in LPCWSTR
, LPCWSTR lpwsUserName, LPCWSTR lpwsPassword) { // 用于存放SMB共享资源格式 PWCHAR lpwsIPC = new WCHAR[MAX_PATH lpServiceName, LPCWSTR lpDisplayName, DWORD dwDesiredAccess, DWORD dwServiceType, DWORD dwStartType, DWORD dwErrorControl, LPCWSTR lpBinaryPathName, LPCWSTR lpLoadOrderGroup , LPDWORD lpdwTagId, LPCWSTR lpDependencies, LPCWSTR lpServiceStartName, LPCWSTR lpPassword lpwsSCMServer, LPCWSTR lpwsServiceName, LPCWSTR lpwsServicePath) { wprintf(L"Will Create Service
appwnd = (HWND)w.winId(); QString ClassName("Qt5QWindowIcon"); QString AppName = QStringLiteral("GG"); LPCWSTR app = reinterpret_cast<LPCWSTR>(ClassName.data()); LPCWSTR appCaption = reinterpret_cast<LPCWSTR>(AppName.data
自己定义的函数如下: HMODULE WINAPI MyLoadLibraryExw(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags) { 你知道你的函数地址在哪你都可以写成如下; static HMODULE(WINAPI *PFnLoadLibraryExW)(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags) = (HMODULE(WINAPI *)(LPCWSTR, HANDLE, DWORD))0x40001200 假设你的函数地址是0x40001200,那么Detours namespace std; #pragma comment(lib,"Detours.lib") static HMODULE(WINAPI *PFnLoadLibraryExW)(LPCWSTR "LoadLibraryExW"); void DetoursUnHook(); void DetoursHook(); HMODULE WINAPI MyLoadLibraryExw(LPCWSTR
/en-us/windows/win32/api/winnetwk/nf-winnetwk-wnetaddconnection2w DWORD ConnectSMBServer(LPCWSTR lpwsHost , LPCWSTR lpwsUserName, LPCWSTR lpwsPassword) { // 用于存放SMB共享资源格式 PWCHAR lpwsIPC = new WCHAR[MAX_PATH] dwStartType, DWORD dwErrorControl, LPCWSTR lpBinaryPathName, LPCWSTR lpLoadOrderGroup, LPDWORD lpdwTagId, LPCWSTR lpDependencies, LPCWSTR lpServiceStartName, LPCWSTR lpPassword ); 先使用OpenSCManager lpwsSCMServer, LPCWSTR lpwsServiceName, LPCWSTR lpwsServicePath) { wprintf(L"Will Create Service %s\
提供了大量的函数操作注册表 RegCreateKey 创建指定的注册表项 RegCreateKeyW( _ In_ HKEY hKey, //打开的当前项的句柄 实际上就是那几个分支 _ In_opt_ LPCWSTR phkResult //用来接收创建或者打开表项句柄 regclosekey ); RegOpenKeyW( _In_ HKEY hKey, //打开的当前项的句柄 实际上就是那几个分支 _ In_opt_ LPCWSTR lpSubKey, //打开或者创建的表项的名称 _In_ DWORD dwType, //指示被存储信息的类型 REG_SZ类型 _ In_reads_bytes_opt_(cbData) LPCWSTR DWORD cbData //要存放的字符串数据的大小、 长度 ); RegSetValueExW( _ In_ HKEY hKey, //打开的当前项的句柄 实际上就是那几个分支 _In_opt_ LPCWSTR (cbData) CONST BYTE * lpData, _ In_ DWORD cbData ); 查询注册表 RegQueryValueW( _ In_ HKEY hKey, _In_opt_ LPCWSTR
pImport++; } return Flag; } 达到目的后要恢复原来的函数 自己希望执行的函数 int WINAPI MyMessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType) { printf("%x %s %ws %x\n", hWnd, lpText, lpCaption , uType); typedef int (WINAPI* pMessageBox)(HWND, LPCWSTR, LPCWSTR, UINT); //int ret = MessageBox lpText, LPCWSTR lpCaption, UINT uType) { printf("%x %s %ws %x\n", hWnd, lpText, lpCaption, uType ); typedef int (WINAPI* pMessageBox)(HWND, LPCWSTR, LPCWSTR, UINT); //int ret = MessageBox(hWnd,
"), NULL, 0, NULL); mciSendString(LPCWSTR("play gemusic"), NULL, 0, NULL); // 播放音乐 score++; if = 0) { mciSendString(LPCWSTR("close 5music"), NULL, 0, NULL); // 关闭上一次的音乐 mciSendString(LPCWSTR ("open 5.mp3 alias 5music"), NULL, 0, NULL); mciSendString(LPCWSTR("play 5music"), NULL, 0, NULL) ; // 播放音乐 } if (score % 10 == 0) { mciSendString(LPCWSTR("close 10music"), NULL, 0, NULL); // 关闭上一次的音乐 mciSendString(LPCWSTR("open 10.mp3 alias 10music"), NULL, 0, NULL); mciSendString(
lpText, __in_opt LPCWSTR lpCaption, __in UINT uType); #ifdef UNICODE #define MessageBox MessageBoxW UNICODE 当选用“使用Unicode字符集”时,调用函数MessageBox,实际使用的是MessageBoxW,MessageBoxW关于字符串的入参类型是LPCWSTR,使用MessageBox LPCSTR与LPCWSTR的区别 LPCSTR的定义如下 typedef __nullterminated CONST CHAR *LPCSTR, *PCSTR; typedef char CHAR; LPCWSTR的定义如下 typedef __nullterminated CONST WCHAR *LPCWSTR, *PCWSTR; typedef wchar_t WCHAR; // wc , 16-bit UNICODE character 可以看出LPCSTR与LPCWSTR的区别即为char与wchar_t的区别 下面是常用的多字节和宽字节对照表。
API原型: NET_API_STATUS NET_API_FUNCTION NetUserAdd ( IN LPCWSTR servername OPTIONAL, IN LPDWORD parm_err OPTIONAL ); NET_API_STATUS NET_API_FUNCTION NetLocalGroupAddMembers ( IN LPCWSTR servername OPTIONAL, IN LPCWSTR groupname, IN DWORD level, IN LPBYTE
;//第一个是打开标记,i是下面的转化控制变量 23 WCHAR exchange_text_from_url[256],exchange_text_from_x[256]; 24 LPCWSTR py = exchange_text_from_url;// url 转 lpcwstr 的中间变量 25 LPCWSTR pz = exchange_text_from_x; //另外的信息 下的 设置,我这里使用了宽字节,免去转换的麻烦 27 MultiByteToWideChar( 0, 0,x, -1,exchange_text_from_x, 64 );//WCHAR to LPCWSTR
LoadVersionDll(), "GetFileVersionInfoExW", a1, a2, a3) EndProcedure ;DWORD GetFileVersionInfoSizeW( ; LPCWSTR CallCFunction(LoadVersionDll(), "GetFileVersionInfoExW", a1, a2) EndProcedure ;BOOL GetFileVersionInfoW( ; LPCWSTR VerFindFileA", a1, a2, a3, a4, a5, a6, a7, a8) EndProcedure ;DWORD VerFindFileW( ; DWORD uFlags, ; LPCWSTR szFileName, ; LPCWSTR szWinDir, ; LPCWSTR szAppDir, ; LPWSTR szCurDir, ; PUINT puCurDirLen szSrcFileName, ; LPCWSTR szDestFileName, ; LPCWSTR szSrcDir, ; LPCWSTR szDestDir, ; LPCWSTR
WCHAR exchange_text_from_url[256],exchange_text_from_x[256];//宽字符char,如果爆红,修改项目的编码为多字节就可以了 10 LPCWSTR py = exchange_text_from_url; 11 LPCWSTR pz = exchange_text_from_x; 12 13 MultiByteToWideChar ( 0, 0,x, -1,exchange_text_from_x, 64 );//WCHAR to LPCWSTR,转化 14 15 MultiByteToWideChar( 0, 0,url_for_lgh_connect_database
HookCode[12] = { 0x48, 0xB8, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0xFF, 0xE0 }; void Hook(LPCWSTR // 拷贝Hook机器指令 VirtualProtect((LPVOID)FuncAddress, 12, OldProtect, &OldProtect); } void UnHook(LPCWSTR / 保存函数入口代码 BYTE m_bNewBytes[12]; // 保存Inlie Hook代码 public: MyHook(); ~MyHook(); BOOL Hook(LPCWSTR lpModule, LPCSTR lpFuncName, LPVOID lpFunction); BOOL UnHook(LPCWSTR lpModule, LPCSTR lpFuncName); #include <windows.h> #include "hook.h" MyHook MsgHook; static int WINAPI MyMessageBoxW(HWND hWnd, LPCWSTR
Detours/lib.X86/detours.lib") //保存函数原型 static int (WINAPI *OldMesssageBoxW)( _In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)=MessageBoxW; //改写函数 static int WINAPI NewMessageBoxW ( _In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType) { return
nf-amsi-amsiscanbuffer HRESULT AmsiScanBuffer( HAMSICONTEXT amsiContext, PVOID buffer, ULONG length, LPCWSTR static HRESULT(WINAPI* OriginalAmsiScanBuffer)(HAMSICONTEXT amsiContext, PVOID buffer, ULONG length, LPCWSTR AmsiScanBuffer; HRESULT HookedAmsiScanBuffer(HAMSICONTEXT amsiContext, PVOID buffer, ULONG length, LPCWSTR
一个 WinHttp 的函数圆形如下: WINHTTPAPI HINTERNET WinHttpOpen( [in, optional] LPCWSTR pszAgentW, [in] DWORD dwAccessType, [in] LPCWSTR pszProxyW, [in] LPCWSTR pszProxyBypassW, pwszVerb, [in] LPCWSTR pwszObjectName, [in] LPCWSTR pwszVersion, [in] LPCWSTR pwszReferrer , [in] LPCWSTR *ppwszAcceptTypes, [in] DWORD dwFlags ); hConnect 为 WinHttpConnect 返回的 HINTERNET 服务器 函数原型如下: WINHTTPAPI BOOL WinHttpSendRequest( [in] HINTERNET hRequest, [in, optional] LPCWSTR