Cool starter with testing
This commit is contained in:
@@ -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;
|
||||||
|
@@ -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;
|
||||||
|
@@ -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
|
1 RT_MANIFEST "res\\xp_manifest.xml"
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
// <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
|
// DIALOG
|
||||||
//
|
//
|
||||||
|
IDD_START DIALOGEX 0,0,316,65
|
||||||
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
|
|
||||||
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
|
|
||||||
|
|
||||||
|
@@ -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
|
|
||||||
|
Reference in New Issue
Block a user