逆向工程粘滞便笺以允许外部脚本打开新便笺

逆向工程 艾达 调试 风袋 x64dbg
2021-06-20 18:56:01

对于我想做的一个愚蠢的小项目,我想让它能够从外部脚本(最好是 Python)打开新笔记(Microsoft Sticky Notes)。虽然我不擅长逆向工程,但我认为它不应该太难,因为我认为它是一个独立的 exe。直到我无法自己启动 exe 时,我才意识到它是一个 UWP 应用程序,这意味着我无法在 IDA 中调试它。

(只是现在提一下,我注意到便签总是有两个进程在运行 -ApplicationFrameHost我认为这是主要的便签窗口和另一个我认为是实际打开的便签的进程。我尝试过的所有方法,我已经尝试了两个过程以确定。)

我首先在 IDA 中打开便签并尝试使用调试器,但如上所述,这并没有让我走得太远,所以我改为在 Binary Ninja 中打开它,只是为了探索一下。我不知道该找什么,所以我没有找到太多。然而,BN 确实显示了很多字符串,但显然它们没有在程序中的任何地方使用。像:

BCreateStickyNoteViaJumplistAction - "Jumplist" is also in the name of the plus icon used as the button - C:\Program Files\WindowsApps\Microsoft.MicrosoftStickyNotes_3.8.8.0_x64__8wekyb3d8bbwe\Assets\JumpListNewNote.png`
CreateNewNote .... WithNewStickyNote
TryGet_ViewState_IsSticky

以及许多看起来像 C# 的代码。但正如我所提到的,BN 没有显示对这些(和其他)字符串的引用,正如我稍后将提到的,x64dbg 中的字符串似乎都是“编码”的,所以无论如何我都没有找到这些字符串的用途。

接下来我想我尝试了 WinDBG(预览版)。我首先尝试将它附加到正在运行的便签进程(然后使用 启动应用程序launch app package),但我无法用它做任何事情。它只是告诉我正在加载的 DLL,包括丢失的 DLL,这意味着我无法直接启动 exe,例如:

C:\Program Files\WindowsApps\Microsoft.NET.Native.Runtime.2.2_2.2.28604.0_x64__8wekyb3d8bbwe\mrt100_app.dll
C:\Program Files\WindowsApps\Microsoft.NET.Native.Framework.2.2_2.2.29512.0_x64__8wekyb3d8bbwe\SharedLibrary.dll

也许有可能以某种方式将 exe 指向这些 DLL,这样我就可以通过 IDA 启动它,但我认为这是一个延伸。

我在这里和那里做了一些其他的小事情,比如 ollydbg 和PE 反汇编查看器,但它们并不重要。

我一直在尝试的最多的是 x64dbg。就我个人而言,我并没有真正完成任何事情;我没有找到任何与按钮或其处理程序相关的内容。因此,我尝试使用谷歌搜索,看看其他人是否尝试过对 UWP 进行逆向工程并遇到了这个问题我尝试了第二个答案,因为当时这样做更快。但是,当您单击以打开新笔记时,不会加载新的 DLL,因此我无法使用它。我也尝试在创建新线程时中断,这确实导致它在我创建新笔记时停止执行,但我不认为每个新笔记都是它自己的线程,我认为这只是其他一些 Windows 内部的事情。

我没有尝试第一个答案的原因是它们挂接到CreateFileWfromKernelBase.dll以“重定向”访问的资源,因为它在Restart now按下时加载一个新的 DLL ,但同样,在我的情况下,当一个新的注释被加载时,没有任何新的加载创建。我也尝试过 EventHook,只是GetProcessById用来获取便签过程,但这并没有真正暴露太多。

我觉得我有我需要做的事情,我只是不知道该怎么做。如果有人能指出我正确的方向,我将不胜感激。

1个回答

我不确定你在问什么(从来没有用过便签,也没有安装它)
但是如果你想从命令行运行便签,你可以做这样的事情

下面的命令将运行计算器而不是通配符calc使用

C:\>powershell -c "(get-startapps -name *calc*).Appid
Microsoft.WindowsCalculator_8wekyb3d8bbwe!App

C:\>start shell:appsfolder\Microsoft.WindowsCalculator_8wekyb3d8bbwe!App

您显然可以将其与 python 一起使用,例如

C:\>python -c "import os;os.system(\"start explorer shell:appsfolder\Microsoft.WindowsCalculator_8wekyb3d8bbwe!App\")"

如果您需要从脚本结帐开始新笔记

:\>pip show uiautomation
Name: uiautomation
Version: 2.0.11
Summary: Python UIAutomation for Windows
Home-page: https://github.com/yinkaisheng/Python-UIAutomation-for-Windows
Author: yinkaisheng
Author-email: yinkaisheng@live.com
License: Apache 2.0
Location: c:\python39\lib\site-packages
Requires: comtypes
Required-by:

有了这个,它是一个单行,名称 ="New Note" 取自您的评论 请注意 uwp 应用程序需要在前台才能使用工具提示备注

:\>python -c "import uiautomation as auto;auto.ButtonControl(Seachdepth=1,Name =\"New note\").Click()"

一个gif

在此处输入图片说明