Перейти к содержанию

Данные не логируются


Рекомендуемые сообщения

Всем привет! Задача такова: не искать каждый раз адрес с жизнями, решил сделать автологгер(используя findpattern), в который должны заноситься новые адреса (к примеру - адреса опыта для кооперативного режима, статичные). Так вот, сам логер работает как присоединяемая к игровому процессу dll. Покажу, как именно я пытаюсь писать (ударение на 2-й слог) в файл:


#include <windows.h>
#include <fstream>
#include <stdio.h>
#define LOGFILE "logfile.txt"
using namespace std;
char logFilePath[260];

void getLogFilePath( HINSTANCE hinstDLL )
{
if (GetModuleFileNameA(hinstDLL, logFilePath, sizeof(logFilePath)))
{
for (int i = strlen(logFilePath) - 1; i >= 0; i--)
{
if (logFilePath[i] == '\\'){
logFilePath[i+1] = 0;
strcat(logFilePath,LOGFILE);
break;
}
}
}
}

void add_log(const char *fmt, ...)
{
va_list va_alist;
ofstream ofile;
char logbuf[256] = {0};
if(!fmt) { return; }
ofile.open(logFilePath, ios::app);
va_start (va_alist, fmt);
_vsnprintf(logbuf, sizeof(logbuf) - sizeof(char), fmt, va_alist);
va_end (va_alist);
ofile << logbuf << endl;
ofile.close();
}

void MyLogThread()
{
add_log("TEXT");
}

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason,LPVOID lpReserved )
{
switch( fdwReason )
{
case DLL_PROCESS_ATTACH:
getLogFilePath(hinstDLL);
CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)MyLogThread, NULL, NULL, NULL);
break;

case DLL_THREAD_ATTACH:
break;

case DLL_THREAD_DETACH:
break;

case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}

В директории с dll лежит файл logfile.txt. Но строчка TETX в файл не записывается :o:huh:

Ссылка на комментарий
Поделиться на другие сайты

 Почитай мануалы в Интернете о записи данных в файл + обработку исключений, чтобы всегда, как в данном примере так и в других уметь определять ошибку. А также отладку dll-ок в Visual Studio в редакторе кода, если это тебе надо. 

Ссылка на комментарий
Поделиться на другие сайты

 Почитай мануалы в Интернете о записи данных в файл + обработку исключений, чтобы всегда, как в данном примере так и в других уметь определять ошибку. А также отладку dll-ок в Visual Studio в редакторе кода, если это тебе надо. 

Не ну конешн спасибо за разъяснение :grin:

Ошибка была в GetLogFilePath, даже скорее не ошибка не недочёт. я переписал и сделал немного проще. Народ, пользуйте:

ofstream LogFile;

BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpvReserved)
{
if(dwReason == DLL_PROCESS_ATTACH) {
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Log, 0, 0, 0);
}
else if(dwReason == DLL_PROCESS_DETACH) {
}
return TRUE;
}


void Log(){
LogFile.open("c:\\D3DTest.txt");
LogFile.clear();
DWORD XP = FindPattern((DWORD)IW5SPbase, 0x005E5000, (BYTE*)"\xA1\x00\x00\x00\x00\x85\xC0\x74\x06\x05", "x????xxxxx");
LogFile << "XP Address: " << XP;
}

XP Address: 1521881249

главное, что работает! ;)

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.