2

首先,我想稍微解释一下我的场景:我必须维护一个基于普通旧 WinAPI 的遗留软件产品(25 岁以上)。困难在于,我们没有代码,并且原作者公司早已不复存在(RIP @ 1997),但他们给我们留下了一个插件 API,并且一些声明,比如我们可以随意使用它来做我们想做的事情。所以我们做了一些 x86 逆向工程,写了很多插件代码,理论上一切都很好。该应用程序仍然完美地完成了它的工作。除了一个小问题,它甚至在 Windows 10 上也能完美地完成它的工作:

一旦用户尝试将其数据保存到用户文档文件夹,应用程序有时(并非总是!)无权在那里创建和写入/覆盖文件。我们已经追踪到一些旧的fopen, fwrite,fprintf调用,这些调用在启用 Windows 10 Defender 勒索软件保护时被阻止。

例如

mov     ecx, [esp+3Ch+access]
push    ecx
lea     edx, [esi+eax+400h]
push    edx
call    _fopen

或者

push    offset SomeDataOffset
push    eax
push    edx
push    offset FormatOffset
push    ebx
call    _fprintf

(还有很多。)

问题是我不想告诉用户以管理员模式运行应用程序以(也许?)绕过它,因为在某些情况下甚至不能。而且我什至不确定这是否有效。所以我最好的选择是一些替换代码,它会进行一些提升或一般要求系统/用户的许可,然后允许将数据写入该目录/文件。

所以问题是,我能做些什么呢?我知道如何替换该代码,但不知道替换为 what

TL;博士

是否有任何神奇的WinAPI 或任何功能/代码允许我请求权限(可能为用户提供系统弹出窗口)写入特定文件路径?(但不需要管理员权限)

4

0 回答 0