gpt4 book ai didi

Windows 10 : naming programs main. exe 导致它们弹出

转载 作者:可可西里 更新时间:2023-11-01 12:17:36 26 4
gpt4 key购买 nike

在 Windows 10 上,当我们创建名为 ma​​in.exe 的程序或将程序重命名为 ma​​in.exe 时,该程序将显示一个弹出窗口,如下所示:


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


有 2 个不同的弹出窗口可以显示:

-游戏吧一(法英版):

Appuyer sur Win + G pour ouvrir la barre jeu

Press Win + G to open Game bar

-截图一:

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

(英文:按 Win + Alt + PrintScreen 截屏)


我最初是在使用 python 和 cx_freeze 时发现问题的,

我已经在多个程序上对此进行了测试,包括(如上所示)将 notepad++.exe 重命名为 main.exe,并且每次都会出现一个弹出窗口,

我们还可以注意到弹出窗口交替出现(弹出一个游戏,然后弹出一个截图,然后弹出一个游戏......)

我是用virtual box跑windows10的,但是如下所述,这个问题也发生在物理机上。

知道这是怎么发生的吗?

注意: BoltClock还对其进行了测试(在物理机器上)并发现,在他的机器上,这种行为只发生在“Main.exe”上,而在我的机器上,这种行为发生在“main”的大写/小写分布(IE : 它适用于 main.exe、Main.exe 甚至 MaIN.exe)

最佳答案

我在周末进行了一些挖掘,发现了 2000 多个特殊的 exe 名称,它们会触发相同的行为,而不仅仅是 main.exe

Explorer 有一个名为 BroadcastDVR 的组件(位于 twinui dll 中),在创建进程时,它将可执行属性与游戏“存储”进行比较,如果匹配,将启动 GameLauncher.exe

我没能确定比较是在哪里完成的,因为它隐藏在 RPC 调用后面,这是一个需要反转的 PITA。

无论如何,explorer.exe 有以下文件的句柄 C:\Users\YOUR_USERNAME\AppData\Local\Microsoft\GamesDVR\KnownGameList.bin(有C:\Windows\broadcastdvr) 中的一个副本,其中列出了所有触发 XBox 记录器弹出窗口的特殊可执行文件。您可以在此处看到 main.exe 条目(条目 #1007):

enter image description here

我写了一个 010 模板文件来解析条目列表,它在我的电脑上有 2089 个条目。从我通过反转二进制文件看到的,有三种类型的条目:

  • 只有可执行文件名称匹配的“简单”名称。 例如:main.exeai.exe

  • 更复杂的是,可执行文件名称和存储 exe 的路径必须包含一些字符串。 例如:acu.exe 必须位于 Assassin's Creed Unity 的子文件夹中。

  • 有些条目有额外的字符串可以匹配,但我还没有找到如何为它们触发游戏 DVR 弹出窗口。

注意:Win32 子系统不区分大小写,因此可执行文件名称的大小写无关紧要。

这是模板( you can install 010 Editor from here ,我认为有一个评估期):

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");

如果该行为让您烦恼,您始终可以通过将 ShowStartup 注册表项设置为 0 来全局禁用它。它位于 HKEY_CURRENT_USER\Software\Microsoft\GameBar 中。

我还没有找到如何专门禁用可执行文件触发它的方法,但我可能只需要查看 twinui 中的机器代码即可。

安全问题

我们有一种情况,我们可以通过更改可执行文件的名称来启动进程。那可能很危险。

游戏启动器命令行位于 HKEY_LOCAL_MACHINE\Software\Microsoft\GameOverlay 中,需要管理员级别才能写入,因此此处无法绕过 UAC 或 Integrity 级别。

(我没有从 msdn 找到权威链接,所以这里有一个 SO 答案确认它:What registry access can you get without Administrator privleges?)

关于Windows 10 : naming programs main. exe 导致它们弹出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36712801/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com