Re[2]: Добавление ДЛЛ и перехват API функций
От: urban1981  
Дата: 04.02.15 05:42
Оценка:
Здравствуйте, SаNNy. Выдаёт много ошибок — 16 вот первая :
error LNK2001: неразрешенный внешний символ ""const type_info::`vftable'" (??_7type_info@@6B@)"

это всё из за этого куска и из за использовании его в дальнейшем в функциях куклах:
typedef std::map<HANDLE, CStringA> Files;
Files files;




HANDLE __stdcall APIHook_CreateFileW( 
    LPWSTR lpFileName,
    unsigned long int dwDesiredAccess,
    unsigned long int dwShareMode,
    LPSECURITY_ATTRIBUTES lpsa,
    unsigned long int dwCreationDisposition,
    unsigned long int dwFlagsAndAttributes,
    LPVOID hTemplateFile)
{
    HANDLE hFile = CreateFileW (
        lpFileName,
        dwDesiredAccess,
        dwShareMode,
        lpsa,
        dwCreationDisposition,
        dwFlagsAndAttributes,
        hTemplateFile);


        if(hFile != INVALID_HANDLE_VALUE && wcsstr(lpFileName, L"COM") == lpFileName)
        {
                files[hFile] = lpFileName;
                logger.write(files[hFile], "CreateFileW");
        }
    return hFile;
}




BOOL __stdcall APIHook_ReadFile( 
    LPVOID hFile,
    LPVOID lpBuffer,
    unsigned long int nNumberOfBytesToRead,
    unsigned long int * lpNumberOfBytesRead,
    LPOVERLAPPED lpOverlapped)
{
    BOOL result = ReadFile (
        hFile,
        lpBuffer,
        nNumberOfBytesToRead,
        lpNumberOfBytesRead,
        lpOverlapped);


        Files::iterator it = files.find(hFile);
        if(result == TRUE && it != files.end())
        {
                logger.write(it->second, "ReadFile", lpBuffer, *lpNumberOfBytesRead);
        }
    return result;
}




BOOL __stdcall APIHook_WriteFile( 
    LPVOID hFile,
    LPVOID lpBuffer,
    unsigned long int nNumberOfBytesToWrite,
    unsigned long int * lpNumberOfBytesWritten,
    LPOVERLAPPED lpOverlapped)
{
    BOOL result = WriteFile (
        hFile,
        lpBuffer,
        nNumberOfBytesToWrite,
        lpNumberOfBytesWritten,
        lpOverlapped);


        Files::iterator it = files.find(hFile);
        if(it != files.end())
        {
                logger.write(it->second, result == TRUE ? "WriteFile OK" : "WriteFile ERROR", lpBuffer, nNumberOfBytesToWrite);
        }
    return result;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.