From d17924595d3f7b68ca029a5256fa822842d8c142 Mon Sep 17 00:00:00 2001 From: "alexey.min" Date: Sat, 4 Feb 2012 08:40:09 +0000 Subject: [PATCH] Cool starter with testing --- L2Detect_starter/ChooseDlg.cpp | 1 + L2Detect_starter/L2Detect_starter.cpp | 80 ++++++++++++++----- L2Detect_starter/L2Detect_starter.rc | 107 +++----------------------- L2Detect_starter/resource.h | 14 +--- 4 files changed, 75 insertions(+), 127 deletions(-) diff --git a/L2Detect_starter/ChooseDlg.cpp b/L2Detect_starter/ChooseDlg.cpp index 66f95df..7c9d5fe 100644 --- a/L2Detect_starter/ChooseDlg.cpp +++ b/L2Detect_starter/ChooseDlg.cpp @@ -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_OUTGAME: EndDialog( hDlg, IDNO ); break; + case IDC_B_TEST: EndDialog( hDlg, IDRETRY ); break; } } break; default: return FALSE; break; diff --git a/L2Detect_starter/L2Detect_starter.cpp b/L2Detect_starter/L2Detect_starter.cpp index 04ea17b..faaafd7 100644 --- a/L2Detect_starter/L2Detect_starter.cpp +++ b/L2Detect_starter/L2Detect_starter.cpp @@ -3,18 +3,22 @@ #define PROCESS_NAME "l2.exe" #define DLL_NAME "L2Detect.dll" +#define DLL_NAME_D "L2Detect_d.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 //many circumstances as possible. #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 ); int RunProcess( HANDLE *phProcess, HANDLE *phThread ); BOOL InjectDLL( HANDLE hProcess, char *dllName ); + extern "C" __declspec(dllimport) int getHWID( char *); + bool validateAuthDll() { HINSTANCE hInstDLL = LoadLibrary( TEXT( DLL_AUTH_NAME ) ); @@ -43,15 +47,16 @@ bool IsWindowsNT() return true; } -/*void run_connect() + +void run_connect() { SOCKET s = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ); struct sockaddr_in addr; addr.sin_family = AF_INET; - //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( 7777 ); + addr.sin_addr.s_addr = inet_addr( "127.0.0.1" ); + addr.sin_port = htons( 80 ); + //addr.sin_addr.s_addr = inet_addr( "81.30.199.5" ); + //addr.sin_port = htons( 7777 ); // int r = connect( s, (const sockaddr *)&addr, sizeof(addr) ); if( r == -1 ) @@ -63,7 +68,26 @@ bool IsWindowsNT() MessageBox( NULL, TEXT("connect() OK!"), TEXT("OK!"), MB_ICONINFORMATION ); shutdown( s, 0 ); 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 ) { @@ -74,6 +98,8 @@ int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmd InitCommonControls(); //if( !validateAuthDll() ) return 1; // тут тоже пока отпаяем + + char foundDllName[256] = {0}; INT_PTR r = ChooseMode( hInstance ); if( r == IDNO ) // outgame @@ -87,32 +113,26 @@ int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmd //MessageBox( NULL, tszEvtName, TEXT("ggg"), 0 ); 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, TEXT("Cannot find required DLL: ") - TEXT( DLL_NAME ), + TEXT( DLL_NAME ) TEXT(" / ") TEXT( DLL_NAME_D ), TEXT("Error starting L2Detect:"), MB_ICONSTOP ); CloseHandle( hEvtDbg ); WSACleanup(); 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 ); Sleep( 1000 ); - //FreeLibrary( hDLL ); CloseHandle( hEvtDbg ); WSACleanup(); + FreeLibrary( hL2DetectDLL ); return 0; } 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 == 1 ) { - InjectDLL( hProcess, DLL_NAME ); + InjectDLL( hProcess, foundDllName ); ResumeThread( hThread ); CloseHandle( hProcess ); CloseHandle( hThread ); @@ -143,6 +163,29 @@ int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmd MB_ICONSTOP ); } }// 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; } @@ -188,6 +231,7 @@ int RunProcess( HANDLE *phProcess, HANDLE *phThread ) return 1; } + BOOL InjectDLL( HANDLE hProcess, char *dllName ) { HANDLE Proc = hProcess; diff --git a/L2Detect_starter/L2Detect_starter.rc b/L2Detect_starter/L2Detect_starter.rc index 008e482..033cfd6 100644 --- a/L2Detect_starter/L2Detect_starter.rc +++ b/L2Detect_starter/L2Detect_starter.rc @@ -1,99 +1,30 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// #include #define IDC_STATIC -1 +#include "resource.h" -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS +LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT +1 RT_MANIFEST "res\\xp_manifest.xml" -///////////////////////////////////////////////////////////////////////////// -// русский 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 +// DIALOG // - -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" - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_START DIALOGEX 0, 0, 316, 65 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +IDD_START DIALOGEX 0,0,316,65 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 - PUSHBUTTON "IN-GAME",IDC_INGAME,29,19,118,24 - PUSHBUTTON "OUT-GAME",IDC_OUTGAME,169,19,118,24 + CONTROL "IN-GAME",IDC_INGAME,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,30,12,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 -///////////////////////////////////////////////////////////////////////////// -// -// 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 // - VS_VERSION_INFO VERSIONINFO FILEVERSION 0,6,0,0 PRODUCTVERSION 0,6,0,0 @@ -133,22 +64,6 @@ END // // Icon // - // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. IDI_L2 ICON "res\\L2_c.ico" -#endif // русский resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/L2Detect_starter/resource.h b/L2Detect_starter/resource.h index 492ddd3..b21eca0 100644 --- a/L2Detect_starter/resource.h +++ b/L2Detect_starter/resource.h @@ -1,5 +1,3 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. // Used by L2_DLL_Inject.rc // #define IDD_START 101 @@ -8,14 +6,4 @@ #define IDC_INGAME 1001 #define IDC_BUTTON2 1002 #define IDC_OUTGAME 1002 - -// 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 +#define IDC_B_TEST 1003