Eth*_*rog 19 windows executable popup windows-10
在Windows 10上,当我们创建一个名为main.exe的程序或将程序重命名为main.exe时,程序将显示如下所示的弹出窗口:
有两种不同的弹出窗口可以显示:
- 游戏栏一(法语和英语版):


- 截图一:

(英文:按Win + Alt + PrintScreen截图)
我最初在使用python和cx_freeze时发现了这个问题,
我已经在多个程序上测试了这个,包括(如上所示)将notepad ++.exe重命名为main.exe,每次都弹出一个,
我们还可以注意到弹出窗口出现(一个弹出游戏,然后弹出一个sreenshot,然后弹出一个游戏......)
我通过虚拟盒运行windows10,但如下所述,问题也发生在物理机器上.
对这是怎么发生的任何想法?
注: BoltClock也测试了它(在物理机上),结果发现,他的机器上的这种行为只能用"MAIN.EXE"同时,我的机器上的行为发生任何可能的"主/小写分布发生"(IE:它适用于main.exe,Main.exe甚至MaIN.exe)
luc*_*asg 13
我在周末进行了一些挖掘,发现了2000多个特殊的exe名称,这些名称将触发相同的行为,而不仅仅是main.exe。
资源管理器具有一个称为DLL 的组件BroadcastDVR(位于twinuidll中),该组件在创建进程时会将可执行属性与游戏的“商店”进行比较,GameLauncher.exe如果存在匹配项,它将启动。
由于它隐藏在RPC调用(可反向调用的PITA)的后面,因此我无法确定比较的位置。
无论如何,explorer.exe以下文件都有一个句柄C:\Users\YOUR_USERNAME\AppData\Local\Microsoft\GamesDVR\KnownGameList.bin(中有一个副本C:\Windows\broadcastdvr),该文件列出了触发XBox记录器弹出窗口的所有特殊可执行文件。您可以在main.exe此处看到条目(条目#1007):
我已经写了一个010模板文件来分析条目列表,它在我的计算机上带有2089个条目。通过反转二进制文件,我看到了三种输入类型:
“简单”名称,其中可执行文件名称上只有一个匹配项。例如:main.exe或ai.exe
较复杂的文件,其中可执行文件名匹配,并且exe的存储路径必须包含一些字符串。例如:acu.exe必须位于的子文件夹中Assassin's Creed Unity。
注意:Win32子系统不区分大小写,因此可以理解的是可执行文件名的大小写无关紧要。
这是模板(您可以从此处安装010 Editor,我认为有一个评估期):
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");
Run Code Online (Sandbox Code Playgroud)
如果您讨厌这种行为,可以始终通过将ShowStartup注册表项设置为0 来全局禁用它HKEY_CURRENT_USER\Software\Microsoft\GameBar。它位于中。
我还没有找到如何专门禁止可执行文件触发它的方法,但是仅通过查看中的机器代码就可以实现twinui。
在这种情况下,仅通过更改可执行文件的名称就可以启动进程。那可能很危险。
游戏启动器命令行位于HKEY_LOCAL_MACHINE\Software\Microsoft\GameOverlay需要管理员级别写入的位置,因此此处无法进行UAC或完整性级别旁路。
(我没有找到来自msdn的授权链接,所以在这里提供了一个SO答案来确认它:没有管理员权限,您可以获得哪些注册表访问权限?)
| 归档时间: |
|
| 查看次数: |
1119 次 |
| 最近记录: |