アプリにフックし、受信したパケットを INI ファイルに書き込む C++ を使用して、単純な dll パケット スニファーを作成しています。残念ながら、20〜30分後にメインアプリがクラッシュしました.
パケットが受信receivedPacket()
されると、 が呼び出されます。20 分以上経過すると、WriteCount の値は約 150,000 ~ 200,000 になり、C++ ランタイム エラー/クラッシュが発生し始めます。取得するGetLastError()
コードは 0x8、つまりERROR_NOT_ENOUGH_MEMORYであり、0WritePrivateProfileStringA()
が返されます。
void writeToINI(LPCSTR iSec,LPCSTR iKey,int iVal){
sprintf(inival, _T("%d"), iVal);
WritePrivateProfileStringA(iSec,iKey,inival,iniloc);
//sprintf(strc, _T("%d \n"), WriteCount);
//WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), strc, strlen(strc), 0, 0);
WriteCount++;
}
void receivedPacket(char *packet,WORD size){
switch ( packet[2] )
{
case 0x30:
// Size : 0x5F
ID = *(signed char*)&packet[0x10];
X = *(signed short*)&packet[0x20];
Y = *(signed short*)&packet[0x22];
Z = *(signed short*)&packet[0x24];
sprintf(inisec, _T("PACKET_%d"), (ID+1));
writeToINI(inisec,"id",ID);
writeToINI(inisec,"x",X);
writeToINI(inisec,"y",Y);
writeToINI(inisec,"z",Z);
}
[.....OTHER CASES.....]
}
ありがとう :)