示例#1
0
INT_PTR MainDlg::OnSelectExecutable( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
{
    std::wstring path;
    if (OpenSaveDialog( L"All (*.*)\0*.*\0Executable image (*.exe)\0*.exe\0", 2, path ))
        SetActiveProcess( 0, path );
    else
        _procList.reset();

    _profileMgr.config().processMode = _newProc.checked() ? NewProcess : ManualLaunch;
    UpdateInterface( );
    return TRUE;
}
示例#2
0
INT_PTR MainDlg::OnSelChange( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
{
    // Process selection
    if (LOWORD( wParam ) == IDC_COMBO_PROC)
    {
        DWORD pid = (DWORD)_procList.itemData( _procList.selection() );
        auto path = _procList.selectedText().substr( 0, _procList.selectedText().find( L'(' ) - 1 );

        SetActiveProcess( pid, path );
        UpdateInterface();
    }

    return TRUE;
}
示例#3
0
INT_PTR MainDlg::OnSelChange( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
{
    if (LOWORD( wParam ) == IDC_COMBO_PROC)
    {
        HWND hCombo = GetDlgItem( hDlg, LOWORD( wParam ) );
        DWORD pid   = (DWORD)ComboBox_GetItemData( hCombo, ComboBox_GetCurSel( hCombo ) );

        SetActiveProcess( false, nullptr, pid );
    }
    // Update available options
    else if (LOWORD( wParam ) == IDC_OP_TYPE)
    {
        int idx = ComboBox_GetCurSel( GetDlgItem( hDlg, LOWORD( wParam ) ) );
        SetMapMode( idx == 0 ? Normal : Manual );
    }

    return (INT_PTR)TRUE;
}
示例#4
0
INT_PTR MainDlg::OnNewProcess( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
{
    OPENFILENAMEW ofn = { 0 };
    wchar_t path[MAX_PATH] = { 0 };

    ofn.lStructSize = sizeof(ofn);
    ofn.hwndOwner = NULL;
    ofn.lpstrFile = path;
    ofn.lpstrFile[0] = '\0';
    ofn.nMaxFile = MAX_PATH;
    ofn.lpstrFilter = TEXT( "All (*.*)\0*.*\0Executable image (*.exe)\0*.exe\0" );
    ofn.nFilterIndex = 2;
    ofn.lpstrFileTitle = NULL;
    ofn.nMaxFileTitle = 0;
    ofn.lpstrInitialDir = NULL;
    ofn.Flags = OFN_PATHMUSTEXIST;

    if (GetOpenFileName( &ofn ))
        SetActiveProcess( true, ofn.lpstrFile );

    return (INT_PTR)TRUE;
}
示例#5
0
文件: Routines.cpp 项目: heruix/Xenos
/// <summary>
/// Load configuration from file
/// </summary>
/// <returns>Error code</returns>
DWORD MainDlg::LoadConfig( const std::wstring& path /*= L""*/ )
{
    auto& cfg = _profileMgr.config();
    if (_profileMgr.Load( path ))
    {
        // Image
        for (auto& path : cfg.images)
            LoadImageFile( path );

        // Process
        if (!cfg.procName.empty())
        {
            if (cfg.processMode != Existing)
            {
                SetActiveProcess( 0, cfg.procName );
            }
            else
            {
                std::vector<DWORD> pidList;
                blackbone::Process::EnumByName( cfg.procName, pidList );

                if (!pidList.empty())
                {
                    auto idx = _procList.Add( cfg.procName + L" (" + std::to_wstring( pidList.front() ) + L")", pidList.front() );
                    _procList.selection( idx );

                    SetActiveProcess( pidList.front(), cfg.procName );
                }
            }
        }

        // Process mode
        _exProc.checked( false );
        _newProc.checked( false );
        _autoProc.checked( false );
        switch (cfg.processMode)
        {
            case Existing:
                _exProc.checked( true );
                break;
            case NewProcess:
                _newProc.checked( true );
                break;
            case ManualLaunch:
                _autoProc.checked( true );
                break;
        }

        // Fix injection method
        if (cfg.injectMode >= Kernel_Thread && !blackbone::Driver().loaded())
            cfg.injectMode = Normal;

        // Update profile name
        if (!_defConfig.empty())
            _status.SetText( 0, blackbone::Utils::StripPath( _defConfig ) );
    }
    // Default settings
    else
    {
        _exProc.checked( true );
    }

    UpdateInterface();
    return ERROR_SUCCESS;
}
示例#6
0
INT_PTR MainDlg::OnInit( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
{
    _hMainDlg = hDlg;

    // Set dialog title
    SetRandomTitle();
/*#ifdef _M_AMD64
    SetWindowText( hDlg, L"Xenos64" );
#endif*/

    // Fill inject methods
    HWND hOpTypeList = GetDlgItem( hDlg, IDC_OP_TYPE );

    ComboBox_AddString( hOpTypeList, L"Native inject" );
    ComboBox_AddString( hOpTypeList, L"Manual map" );
    ComboBox_SetCurSel( hOpTypeList, 0 );

    EnableWindow( GetDlgItem( hDlg, IDC_CMDLINE ), FALSE );
    EnableWindow( GetDlgItem( hDlg, IDC_WIPE_HDR ), FALSE );
    EnableWindow( GetDlgItem( hDlg, IDC_LDR_REF ), FALSE );
    EnableWindow( GetDlgItem( hDlg, IDC_MANUAL_IMP ), FALSE );
    EnableWindow( GetDlgItem( hDlg, IDC_IGNORE_TLS ), FALSE );
    EnableWindow( GetDlgItem( hDlg, IDC_NOEXCEPT), FALSE );

    // Set icon
    HICON hIcon = LoadIcon( GetModuleHandle( NULL ), MAKEINTRESOURCE( IDI_ICON1 ) );

    SendMessage( hDlg, WM_SETICON, ICON_BIG, (LPARAM)hIcon );
    SendMessage( hDlg, WM_SETICON, ICON_SMALL, (LPARAM)hIcon );

    ConfigMgr::ConfigData cfg;
    if (_config.Load( cfg ))
    {
        // Image
        if (!cfg.imagePath.empty())
        {
            Edit_SetText( GetDlgItem( hDlg, IDC_IMAGE_PATH ), cfg.imagePath.c_str() );
            LoadImageFile( cfg.imagePath.c_str() );
        }

        // Process
        if (!cfg.procName.empty())
        {
            DWORD pid = 0xFFFFFFFF;

            if (!cfg.newProcess && !cfg.procName.empty())
            {
                std::vector<DWORD> procList;
                blackbone::Process::EnumByName( cfg.procName, procList );
                pid = !procList.empty() ? procList.front() : 0xFFFFFFFF;
            }

            SetActiveProcess( cfg.newProcess, cfg.procName.c_str(), pid );
        }

        if (!cfg.procCmdLine.empty())
            SetDlgItemTextW( _hMainDlg, IDC_CMDLINE, cfg.procCmdLine.c_str() );

        if (!cfg.initArgs.empty())
            SetDlgItemTextW( _hMainDlg, IDC_ARGUMENT, cfg.initArgs.c_str() );

        if (!cfg.initRoutine.empty())
            SetDlgItemTextW( _hMainDlg, IDC_INIT_EXPORT, cfg.initRoutine.c_str() );

        if (cfg.unlink)
            Button_SetCheck( GetDlgItem( _hMainDlg, IDC_UNLINK ), TRUE );

        if (cfg.manualMap)
            ComboBox_SetCurSel( GetDlgItem( _hMainDlg, IDC_OP_TYPE ), 1 );

        SetMapMode( cfg.manualMap ? Manual : Normal );
        MmapFlags( cfg.manualMapFlags );
    }    

    return (INT_PTR)TRUE;
}