Cool starter with testing

This commit is contained in:
alexey.min
2012-02-04 08:40:09 +00:00
parent 2ac1570bf2
commit d17924595d
4 changed files with 75 additions and 127 deletions

View File

@@ -12,6 +12,7 @@ INT_PTR CALLBACK ChooseDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
{ {
case IDC_INGAME: EndDialog( hDlg, IDYES ); break; case IDC_INGAME: EndDialog( hDlg, IDYES ); break;
case IDC_OUTGAME: EndDialog( hDlg, IDNO ); break; case IDC_OUTGAME: EndDialog( hDlg, IDNO ); break;
case IDC_B_TEST: EndDialog( hDlg, IDRETRY ); break;
} }
} break; } break;
default: return FALSE; break; default: return FALSE; break;

View File

@@ -3,18 +3,22 @@
#define PROCESS_NAME "l2.exe" #define PROCESS_NAME "l2.exe"
#define DLL_NAME "L2Detect.dll" #define DLL_NAME "L2Detect.dll"
#define DLL_NAME_D "L2Detect_d.dll"
#define DLL_AUTH_NAME "L2Detect_auth.dll" #define DLL_AUTH_NAME "L2Detect_auth.dll"
//I could just use PROCESS_ALL_ACCESS but it's always best to use the absolute bare minimum of priveleges, so that your code works in as //I could just use PROCESS_ALL_ACCESS but it's always best to use the absolute bare minimum of priveleges, so that your code works in as
//many circumstances as possible. //many circumstances as possible.
#define CREATE_THREAD_ACCESS (PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ) #define CREATE_THREAD_ACCESS (PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ)
BOOL WriteProcessBYTES( HANDLE hProcess, LPVOID lpBaseAddress, LPCVOID lpBuffer, SIZE_T nSize ); BOOL WriteProcessBYTES( HANDLE hProcess, LPVOID lpBaseAddress, LPCVOID lpBuffer, SIZE_T nSize );
int RunProcess( HANDLE *phProcess, HANDLE *phThread ); int RunProcess( HANDLE *phProcess, HANDLE *phThread );
BOOL InjectDLL( HANDLE hProcess, char *dllName ); BOOL InjectDLL( HANDLE hProcess, char *dllName );
extern "C" __declspec(dllimport) int getHWID( char *); extern "C" __declspec(dllimport) int getHWID( char *);
bool validateAuthDll() bool validateAuthDll()
{ {
HINSTANCE hInstDLL = LoadLibrary( TEXT( DLL_AUTH_NAME ) ); HINSTANCE hInstDLL = LoadLibrary( TEXT( DLL_AUTH_NAME ) );
@@ -43,15 +47,16 @@ bool IsWindowsNT()
return true; return true;
} }
/*void run_connect()
void run_connect()
{ {
SOCKET s = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ); SOCKET s = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
struct sockaddr_in addr; struct sockaddr_in addr;
addr.sin_family = AF_INET; addr.sin_family = AF_INET;
//addr.sin_addr.s_addr = inet_addr( "127.0.0.1" ); addr.sin_addr.s_addr = inet_addr( "127.0.0.1" );
addr.sin_addr.s_addr = inet_addr( "81.30.199.5" ); addr.sin_port = htons( 80 );
//addr.sin_port = htons( 80 ); //addr.sin_addr.s_addr = inet_addr( "81.30.199.5" );
addr.sin_port = htons( 7777 ); //addr.sin_port = htons( 7777 );
// //
int r = connect( s, (const sockaddr *)&addr, sizeof(addr) ); int r = connect( s, (const sockaddr *)&addr, sizeof(addr) );
if( r == -1 ) if( r == -1 )
@@ -63,7 +68,26 @@ bool IsWindowsNT()
MessageBox( NULL, TEXT("connect() OK!"), TEXT("OK!"), MB_ICONINFORMATION ); MessageBox( NULL, TEXT("connect() OK!"), TEXT("OK!"), MB_ICONINFORMATION );
shutdown( s, 0 ); shutdown( s, 0 );
closesocket( s ); closesocket( s );
}*/ }
HINSTANCE Load_L2DetectDLL( char *outDllName )
{
HINSTANCE hDLL = LoadLibrary( TEXT( DLL_NAME ) );
if( hDLL == NULL )
{
hDLL = LoadLibrary( TEXT( DLL_NAME_D ) );
if( hDLL == NULL )
return NULL;
else
strcpy( outDllName, DLL_NAME_D );
}
else
strcpy( outDllName, DLL_NAME );
return hDLL;
}
int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow ) int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow )
{ {
@@ -75,6 +99,8 @@ int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmd
//if( !validateAuthDll() ) return 1; // <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //if( !validateAuthDll() ) return 1; // <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
char foundDllName[256] = {0};
INT_PTR r = ChooseMode( hInstance ); INT_PTR r = ChooseMode( hInstance );
if( r == IDNO ) // outgame if( r == IDNO ) // outgame
{ {
@@ -87,32 +113,26 @@ int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmd
//MessageBox( NULL, tszEvtName, TEXT("ggg"), 0 ); //MessageBox( NULL, tszEvtName, TEXT("ggg"), 0 );
HANDLE hEvtDbg = CreateEvent( NULL, FALSE, FALSE, tszEvtName ); HANDLE hEvtDbg = CreateEvent( NULL, FALSE, FALSE, tszEvtName );
HINSTANCE hDLL = LoadLibrary( TEXT( DLL_NAME ) );
if( hDLL == NULL ) HINSTANCE hL2DetectDLL = Load_L2DetectDLL( foundDllName );
if( hL2DetectDLL == NULL )
{ {
MessageBox( NULL, MessageBox( NULL,
TEXT("Cannot find required DLL: ") TEXT("Cannot find required DLL: ")
TEXT( DLL_NAME ), TEXT( DLL_NAME ) TEXT(" / ") TEXT( DLL_NAME_D ),
TEXT("Error starting L2Detect:"), MB_ICONSTOP ); TEXT("Error starting L2Detect:"), MB_ICONSTOP );
CloseHandle( hEvtDbg ); CloseHandle( hEvtDbg );
WSACleanup(); WSACleanup();
return 0; return 0;
} }
/*r = IDYES;
while( r == IDYES )
{
r = MessageBox( NULL, TEXT("Run connect()?"), TEXT("OK"), MB_ICONQUESTION | MB_YESNO );
if( r == IDYES ) run_connect();
}*/
WaitForSingleObject( hEvtDbg, INFINITE ); WaitForSingleObject( hEvtDbg, INFINITE );
Sleep( 1000 ); Sleep( 1000 );
//FreeLibrary( hDLL );
CloseHandle( hEvtDbg ); CloseHandle( hEvtDbg );
WSACleanup(); WSACleanup();
FreeLibrary( hL2DetectDLL );
return 0; return 0;
} }
else if( r == IDYES ) // ingame else if( r == IDYES ) // ingame
@@ -124,7 +144,7 @@ int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmd
if( res == 0 ) return 0; if( res == 0 ) return 0;
if( res == 1 ) if( res == 1 )
{ {
InjectDLL( hProcess, DLL_NAME ); InjectDLL( hProcess, foundDllName );
ResumeThread( hThread ); ResumeThread( hThread );
CloseHandle( hProcess ); CloseHandle( hProcess );
CloseHandle( hThread ); CloseHandle( hThread );
@@ -143,6 +163,29 @@ int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmd
MB_ICONSTOP ); MB_ICONSTOP );
} }
}// if( r == IDNO ) }// if( r == IDNO )
else if( r == IDRETRY ) // " ( test ) "
{
HINSTANCE hL2DetectDll = Load_L2DetectDLL( foundDllName );
if( hL2DetectDll )
{
MessageBoxA( 0, foundDllName, "Loaded this version of L2Detect.dll:", MB_ICONINFORMATION );
r = IDYES;
while( r == IDYES )
{
r = MessageBox( NULL, TEXT("Run connect()?"), TEXT("OK"), MB_ICONQUESTION | MB_YESNO );
if( r == IDYES ) run_connect();
}
FreeLibrary( hL2DetectDll );
}
else
{
// not loaded
MessageBox( NULL,
TEXT("Cannot find required DLL: ")
TEXT( DLL_NAME ) TEXT(" / ") TEXT( DLL_NAME_D ),
TEXT("Error testing L2Detect:"), MB_ICONSTOP );
}
} // IDRETRY
return 0; return 0;
} }
@@ -188,6 +231,7 @@ int RunProcess( HANDLE *phProcess, HANDLE *phThread )
return 1; return 1;
} }
BOOL InjectDLL( HANDLE hProcess, char *dllName ) BOOL InjectDLL( HANDLE hProcess, char *dllName )
{ {
HANDLE Proc = hProcess; HANDLE Proc = hProcess;

View File

@@ -1,99 +1,30 @@
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include <windows.h> #include <windows.h>
#define IDC_STATIC -1 #define IDC_STATIC -1
#include "resource.h"
///////////////////////////////////////////////////////////////////////////// LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
#ifdef _WIN32
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
#pragma code_page(1251)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// RT_MANIFEST
//
1 RT_MANIFEST "res\\xp_manifest.xml" 1 RT_MANIFEST "res\\xp_manifest.xml"
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
//////////////////////////////////////////////////////////////////////////
//
// DIALOG
//
IDD_START DIALOGEX 0,0,316,65 IDD_START DIALOGEX 0,0,316,65
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "L2Detect: Choose Mode" CAPTION "L2Detect: Choose Mode"
FONT 8, "MS Shell Dlg", 400, 0, 0x1 FONT 8,"MS Shell Dlg",400,0,1
STYLE WS_POPUP|WS_VISIBLE|WS_CAPTION|WS_SYSMENU|DS_CENTER|DS_MODALFRAME|DS_SETFONT|DS_FIXEDSYS
BEGIN BEGIN
PUSHBUTTON "IN-GAME",IDC_INGAME,29,19,118,24 CONTROL "IN-GAME",IDC_INGAME,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,30,12,118,24
PUSHBUTTON "OUT-GAME",IDC_OUTGAME,169,19,118,24 CONTROL "OUT-GAME",IDC_OUTGAME,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,170,12,118,24
CONTROL "( test )",IDC_B_TEST,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,258,48,36,11
END END
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
IDD_START, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 309
TOPMARGIN, 7
BOTTOMMARGIN, 58
END
END
#endif // APSTUDIO_INVOKED
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
// Version // Version
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 0,6,0,0 FILEVERSION 0,6,0,0
PRODUCTVERSION 0,6,0,0 PRODUCTVERSION 0,6,0,0
@@ -133,22 +64,6 @@ END
// //
// Icon // Icon
// //
// Icon with lowest ID value placed first to ensure application icon // Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems. // remains consistent on all systems.
IDI_L2 ICON "res\\L2_c.ico" IDI_L2 ICON "res\\L2_c.ico"
#endif // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View File

@@ -1,5 +1,3 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by L2_DLL_Inject.rc // Used by L2_DLL_Inject.rc
// //
#define IDD_START 101 #define IDD_START 101
@@ -8,14 +6,4 @@
#define IDC_INGAME 1001 #define IDC_INGAME 1001
#define IDC_BUTTON2 1002 #define IDC_BUTTON2 1002
#define IDC_OUTGAME 1002 #define IDC_OUTGAME 1002
#define IDC_B_TEST 1003
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 103
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1003
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif