【问题标题】:How can I find out what a macro does without exposing myself to it?如何在不暴露自己的情况下找出宏的作用?
【发布时间】:2010-09-21 00:33:24
【问题描述】:

我收到了两个不同的 Microsoft Word 文档,我的病毒扫描程序警告我包含宏。这些应该是简单的文本文件,发送它们的人甚至不知道宏是什么;它们可能是他的错误,但它们可能是恶意感染的迹象。我安装的 OpenOffice.org 设置为根本不加载宏,因为我很少使用它们,所以我不担心系统的安全性。我想做的是找出这些宏的作用,而不会使我的系统暴露于这些宏的任何恶意意图,以便告诉向我发送文件的人他是否正在传播感染。

【问题讨论】:

    标签: vba security ms-word


    【解决方案1】:

    在不激活宏的情况下打开文档,然后打开代码编辑器查看它们的作用。

    【讨论】:

    • 来自 SO 的三个保证,即这样做是安全的。你能安全多少?
    • 很多。如果 Word 的其他部分出现缓冲区溢出,您可能仍会受到影响
    • 称之为危险是轻描淡写
    【解决方案2】:

    两种可能性。为自己获取一份 VMWare 播放器的免费副本,并在其中安装 Windows 和 MS Office。然后加载文档并让宏运行。

    另一种可能性。我认为您可以将文档加载到 MS Word 中并自动禁用宏,但宏仍然存在,因此您可以使用 Word 本身查看它。

    【讨论】:

    • 注意:不在办公室 97
    • 我今天通过电子邮件收到了一个非常可疑的 word.doc(不是 docx),想查看它携带的恶意货物。我想到了一个宏并想阅读脚本,因此我在这里阅读了这个线程,寻找一种安全的方法来做到这一点。我保存了附件,以便使用文本编辑器等打开它。保存后,我的杀毒软件 (Sophos) 对木马(间谍软件)发出警报。
    • @ChristianGeiselmann 有很多误报......我也有 Sohpos,它已经在我自己的一些 VBA 代码上出现了。这是绝对最安全的方法:stackoverflow.com/a/47908674/3451115
    【解决方案3】:

    我刚刚进行了测试。我打开 Word (2007) 并:

    1. 创建了一个简单的宏并与文档一起保存为“启用 Word 宏的文档 (.docm)”
    2. 进入安全设置(Office 按钮“文件”\Word 选项\信任中心\信任中心设置\宏设置)并单击“禁用所有带有通知的宏”单选按钮,这将阻止宏运行,除非您单击按钮以允许它们运行。
    3. 打开 *.docm 文档并且宏没有运行,但我能够转到功能区控件上的“查看”选项卡并单击宏按钮并查看宏,然后编辑宏以打开 VBA IDE 查看宏代码。

    这一切都假设您使用的是 Word 2007,尽管我希望 Word 的最后一个或两个版本具有相同的功能。我在这个盒子上没有 Open Office,但是,我也希望它具有相同的功能。

    祝你好运!

    【讨论】:

      【解决方案4】:

      (我认为有人应该回答有关在全局禁用宏执行的情况下使用 OpenOffice 的原始问题;说“打开代码编辑器”是正确的,但对于新手来说确实需要更多的帮助;第一次找到它确实花了 年的时间。)

      无论如何,根据http://www.tutorialsforopenoffice.org/tutorial/Macros.html,您可以通过ToolsMacrosOrganize MacrosOpenOffice.org Basic 查看(或编辑)宏,这将打开OpenOffice.org Basic Macros 窗口。

      从那里,您只需在树中单击以查找文件中包含的任何宏,然后转到 Edit 以查看每个宏中的内容。

      【讨论】:

        【解决方案5】:

        只是在这些以前的帖子之上进行阐述 -

        这是我遵循的过程 -

        1. 打开文件
        2. 启用编辑以退出受保护的视图
        3. AltF11 打开 Visual Basic 编辑器
          • 有时您显然可以在此处查看宏,但在我的 Word 2013 中却不能。
        4. 最小化或关闭 VB 编辑器窗口。我们将在一分钟后重新开放
        5. 按住 Shift 的同时单击 Enable Content。这将阻止它运行 AutoOpen 宏。
        6. AltF11 打开 Visual Basic 编辑器。
        7. 现在您可能会看到以前没有看到的宏。

        【讨论】:

          【解决方案6】:

          在不运行宏的情况下查看宏内容的最安全方法是从包含宏内容的 Office 文档中打开 Visual Basic 编辑器。

          打开 Visual Basic 编辑器(Office 2010,可能是 2013 和 2016):

          1. 打开文档
          2. 如果询问,您可以启用编辑,不会执行宏
          3. 右键单击功能区(菜单) - 选择:自定义功能区
          4. 在右侧部分中,选择“开发人员”,它将在功能区上添加一个“开发人员”选项卡。按确定。
          5. 转到“开发人员”选项卡并单击“Visual Basic 编辑器”。

          现在你可以看到所有的宏了。

          希望它对您有所帮助,它适用于我的 excel 2010 版本。

          【讨论】:

            【解决方案7】:

            .???x 只是一个 zip 格式。

            解压文件,你会得到这样的结果:

            .
            ├── [Content_Types].xml
            ├── docProps
            │   ├── app.xml
            │   ├── core.xml
            │   └── custom.xml
            ├── _rels
            └── word
                ├── document.xml
                ├── fontTable.xml
                ├── _rels
                │   ├── document.xml.rels
                │   └── vbaProject.bin.rels
                ├── settings.xml
                ├── styles.xml
                ├── theme
                │   └── theme1.xml
                ├── vbaData.xml
                ├── vbaProject.bin
                └── webSettings.xml
            

            现在您可以使用 Texteditor 或您选择的其他 VBA 编辑器分析 vbastuff。

            【讨论】:

            • vbaProject.bin 与其他基于文本的文件相比,是不透明的二进制文件。我猜魔法就在那里。所以这个答案缺少清楚如何分析该内容的部分。
            【解决方案8】:

            如果您想在不打开 word 文档来查看宏的情况下查看 word 宏,您可以使用 Dider Stevens 的名为 oledump.py 的脚本。

            一旦你有了脚本,你就可以这样做:

            python oledump.py "your_word.doc" -s a -v
            

            这应该返回 word 文档中所有宏的列表。

            【讨论】:

              【解决方案9】:

              【讨论】:

                猜你喜欢
                • 2010-09-14
                • 2019-07-13
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2016-05-02
                相关资源
                最近更新 更多