2016-04-19 15 views
11

をポップアップ表示させMAIN.EXE命名ここに見られる:のWindows 10:プログラムは、彼らが我々が<strong>MAIN.EXE</strong>または<strong>MAIN.EXE</strong>にプログラムの名前を変更という名前のプログラムを作成するとき、プログラムのようにポップアップ表示されるウィンドウ10で


some pop up in Notepad++ how wonderfull is that?


示すことができるよりも2つの異なるポップアップがあります:

は、

(フランス語と英語版)-theゲームバー1:

Appuyer sur Win + G pour ouvrir la barre jeu

Press Win + G to open Game bar

-theスクリーンショット1:英語で

Appuyer sur Win + Alt +Impr.écran pour prendre une capture d'écran

(:プレススクリーンショットを取るためにWin + Alt + PrintScreen)


私はもともとPythonとcx_freezeを使用しながら、をMAIN.EXEするexeファイル。私は++メモ帳の名前を変更(上見られるように)を含む、複数のプログラムでこれをテストして、

で問題を発見し、その都度、ポップアップの一つが

私が実行します(... 1つの試合はその後、1 sreenshotその後、1つのゲームがポップアップし、ポップアップし、ポップアップ表示)

我々はまた、ポップアップが交互に表示されていることに注意することができ、そこにいましたバーチャルボックス経由でwindows10以下で説明するように、物理マシンでも問題が発生します。

これがどのように起こったかについてのアイデアはありますか?

注:BoltClockも(物理マシン上で)それをテストして、私のマシン上で動作が/大文字でも何でも起こっている間、彼のマシン上でこの動作は唯一の「MAIN.EXE」で起こっていることが判明小文字の "main"の配布(IE:main.exe、Main.exe、またはMaIN.exeでも動作します)

+0

これは面白いです.....私はそれをテストすることができますので、私は本当にあなたのプログラムを見てみたいです – danidee

+0

Razer Game BoosterまたはCortexがインストールされていますか? –

+0

私はRazer Game Boosterをインストールしていませんが、Cortexの場合はわかりませんが、少なくとも私はそれを見つけることができません。 –

答えて

2

私は週末にいくつかの調査を行いました。 main.exeだけでなく、同じ動作を引き起こします。

Explorerは、プロセス作成時に、ゲームの「店」に対して実行特性を比較し、一致がある場合GameLauncher.exeを起動する(twinui DLLである)BroadcastDVRと呼ばれる成分を有します。

私はRPC呼び出しの後ろに隠れているので、比較が行われた場所を特定することはできませんでした。これは逆行するPITAです。

とにかく、explorer.exeは、次のファイルC:\Users\YOUR_USERNAME\AppData\Local\Microsoft\GamesDVR\KnownGameList.binのハンドルを持っているXboxのレコーダーのポップアップをトリガーするすべての特別な実行ファイルを一覧表示する(C:\Windows\broadcastdvrでコピーがあります)。私は、エントリのリストを解析するために010テンプレートファイルを書いて、それは私のコンピュータ上の2089件のエントリが付属しています

enter image description here

:あなたはここにmain.exeエントリ(エントリ#1007)を参照してくださいすることができます。

  • 試合は実行可能ファイル名のみであり、「シンプル」1:私は、バイナリファイルを逆にして見てきたものから、エントリの3つのタイプがあります。例えば :main.exe又は

  • 実行可能ファイル名に一致するとEXEはマストは、いくつかの文字列が含まれて格納されているパスが、より複雑なものai.exe。 例:acu.exeは、Assassin's Creed Unityのサブフォルダに配置する必要があります。

  • 一部のエントリには一致する追加文字列がありますが、ゲームのDVRポップアップをトリガする方法が見つかりませんでした。

NB:Win32サブシステムは大文字と小文字を区別しないため、実行可能ファイル名の大文字と小文字は区別されません。あなたは、あなたが常にグローバルで0にShowStartupレジストリキーを設定することで、それを無効にすることができ、その動作を悩ますが、それがある場合

typedef struct { 
    BYTE Reserved[0x300]; 
}HEADER; 

typedef struct { 
    WORD ByteLen; 
    BYTE RawString[ByteLen]; 
    //local string sName=ReadWString(RawString); 
} GAME_WSTR <read=ReadGame>; 

typedef struct { 
    DWORD Reserved; 
    DWORD ByteLen; 
    BYTE RawString[ByteLen] <fgcolor=cLtRed>; 
} OPTION_STR <read=ReadOption>; 

typedef struct { 
    local int StartAddr = FTell(); 
    DWORD EntrySize; 

    // Executable game name 
    GAME_WSTR GameName <fgcolor=cLtBlue>; 

    // Optional magic 
    if (ReadUShort() == 0xca54) 
     WORD OptReserved; 

    // Optional structs based on switch values 
    WORD AdditionalNamesCount; 
    WORD SwitchOption2; 

    // Additional names (probably like a hint). 
    local int i =0; 
    for (i = 0; i < AdditionalNamesCount; i++){ 
     OPTION_STR Option; 
     if (ReadUShort() == 0xca54) 
      WORD OptReserved; 
    } 

    // Look for a magic 
    local int Find20h = 0; 
    while(!Find20h){ 
     Find20h = (0x20 == ReadByte()); 
     BYTE Res; 
    } 

    GAME_WSTR GameId; 
    WORD Reserved; 

    // Sometimes there is an additionnal name 
    // sometimes not. I check the current entry 
    // is at less than the EntrySize declared. 
    if (FTell()-StartAddr < EntrySize) 
    { 
     switch (SwitchOption2) 
     { 
     case 3: 
      OPTION_STR Option3; 
      break; 
     case 2: 

      OPTION_STR Option2; 
     case 1: 
      break; 
     } 
    } 

} ENTRY <read=ReadGameName>; 

string ReadOption(OPTION_STR &Game) 
{ 
    local wstring GameName = L""; 
    local int i ; 
    for (i= 0; 2*i < Game.ByteLen; i++){ 
     WStrcat(GameName, Game.RawString[2*i]); 
    } 
    return WStringToString(GameName); 
} 

string ReadGame(GAME_WSTR &Game) 
{ 
    local wstring GameName = L""; 
    local int i ; 
    for (i= 0; 2*i < Game.ByteLen; i++){ 
     WStrcat(GameName, Game.RawString[2*i]); 
    } 
    return WStringToString(GameName); 
} 

string ReadGameName(ENTRY &Entry) 
{ 
    local string GameName = ReadGame(Entry.GameName); 
    local string OptionGameName = ""; 
    if (Entry.AdditionalNamesCount) 
     OptionGameName = " : "+ReadOption(Entry.Option); 

    return GameName + OptionGameName; 
} 

//------------------------------------------ 
LittleEndian(); 
Printf("Parse KnownGameList.bin Begin.\n"); 
HEADER UnkwownHeader <bgcolor=cLtGray>; 
while(1) 
{ 
    ENTRY Entry <bgcolor=cLtPurple>; 
    //Printf("Entry : %s -> %d.\n",ReadGameName(Entry) ,Entry.AdditionalNamesCount); 
} 
Printf("Parse KnownGameList.bin End.\n"); 

:ここ

がテンプレートである( you can install 010 Editor from here、私が考える評価期間があります) HKEY_CURRENT_USER\Software\Microsoft\GameBarにあります。

具体的には実行可能ファイルを無効にする方法が見つかりませんでしたが、twinuiのマシンコードを調べるだけで可能です。

セキュリティが問題

私たちはただ実行可能ファイルの名前を変更することで、プロセスを起動することができ、状況があります。それは危険かもしれません。

ゲーム起動ツールのコマンドラインは、管理者レベルの書き込みが必要なHKEY_LOCAL_MACHINE\Software\Microsoft\GameOverlayにありますので、ここではUACまたは完全性レベルのバイパスはできません。

(私はSOにそれを確認答えるので、ここでは、MSDNからの権威のリンクが見つかりませんでした:What registry access can you get without Administrator privleges?

関連する問題