【问题标题】:How to automate task in OllyDBG ? Using Ollyscript or any other tool如何在 OllyDBG 中自动执行任务?使用 Ollyscript 或任何其他工具
【发布时间】:2015-04-13 20:30:33
【问题描述】:

如何在 OllyDBG 中自动执行任务?我想创建一个脚本。

我在某个地址上bp 并转到其堆栈参数。有四个堆栈参数。我使用第二个参数的地址和第四个参数的大小并将 HEX 数据转储到日志文件中。

例如:

我在512A12 设置了一个断点,我在堆栈中看到以下内容:

00192003   005DB123  RETURN to program.005DB123 from program.00512A12
00192011   0018F058 - 1st argument
00192028   03F48D78 - 2nd argument
00192032  03F48D78 - 3rd argument
00192036   00000500 - 4th argument

所以我从00192028 03F48D78 - 2nd argument 开始的地址转储数据,其中03F48D78 是开始转储的地址。

我使用第四个参数00192036 00000500 - 4th argument 的大小,其中500 是要转储的数据的大小。

数据保存在日志文件中。它是来自 OllyDBG 中转储部分的十六进制数据。

现在我想循环这个函数并自动化它。如何在 Ollyscript 或其他东西中完成这种自动化?

【问题讨论】:

    标签: debugging breakpoints crash-dumps ollydbg hexdump


    【解决方案1】:

    本教程可能会有所帮助: http://x9090.blogspot.com/2009/07/ollyscript-tutorial-unpack-upx.html

    此外,您可以仔细阅读一些脚本以了解有关 Olly 脚本的更多信息。

    【讨论】:

    • 虽然此链接可能会提供答案,但请提供适当的代码和注释以防链接更改。
    【解决方案2】:

    Afaik 现有插件都没有提供 windbg 的 .writemem 功能 下面上传的是anonymouse增强的ollydbg插件(openrce博客) 修改 cmdline 插件,添加命令 .writemem

    下载dll并将其放入ollydbg 1.10 plugin path

    修复了可能的崩溃路径(FindModule -> Mod-name 可以为 null,如果 FindModule 在这种情况下返回 null,则添加“unknown_module”字符串作为 sprintf_s 的模块名)

    http://wikisend.com/download/750442/cmdline.dll

    这个插件是一个enhanced version of modified cmdline plugin for ollydbg 1.10 by anonymouse (openrce blog) 并且包含一个额外的命令.writemem

    作为原始源的增强功能进行了重大更改,以使其与 Visual Studio 2010 Express 一起编译(旧命令未经测试) 添加了一个额外的命令 .writemem (similar to windbg's .writemem)

    usage as follows alt+f1 or plugin -> cmdline plugin 。 在对话框中输入

    writemem [esp+0x4] dword [esp+0x10] c:\dumps 
    

    或者可能是

    writemem 0x403085 0x45 f:\foo\blah
    

    第一个命令会将 [esp+0x10] 指向的 0xxxx 字节从 [esp+0x4] 指向的地址转储到预先存在的文件夹 c:\dumps

    第二条命令会将0x45字节从0x402085转储到指定文件夹

    要自动使用此命令和条件日志断点pass commands to plugin when paused functionality (shift+f4)

    在编辑框中输入

    .writemem <address> <size> <folder path>
    .run
    

    当断点被命中时,内存内容将被转储

    另一个快照可以更好地解释下面的单词

    【讨论】:

    • 你能重新上传你为 ollydbg 1.10 修改过的 cmdline 插件的增强版吗?
    • @MinhTrietPhamTran 哎呀,我必须浏览一遍会通知你
    • 如果您有 GitHub 帐户来存档您的工具库,那就太好了。
    【解决方案3】:

    我最终完成任务所需的实际功能如下。

    它是一个加密/解密功能

    0x1 PUSH EBP - 加载加密数据。

    0x5 RETN - 数据被解密

    因此,正如我之前解释的那样,加密/解密数据被加载到堆栈值中。

    1 - 当 bp 达到 0x1 PUSH EBP

    2 - 我们转到堆栈值

    3 - 我们将第二个参数作为加密数据块的起始地址,第四个参数作为数据大小。

    4- 我们使用 cmdline mod 中的 wrtiemem 转储


    我们对解密数据也遵循同样的方法

    1 - 当 bp 达到 0x5 RETN 时

    2 - 我们转到堆栈值

    3 - 我们将第二个参数作为解密数据块的起始地址,第四个参数作为数据大小。

    4- 我们使用 cmdline mod 中的 wrtiemem 进行转储。


    我想知道是否可以将数据保存在一个名为 encdec.txt 的文本文件中

    加密的十六进制值 解密的十六进制值。

    例如:

    ENC - 88 F4 62 71 3D 25 CD 7C 72 76 8E 14 95 0B D1 8B 十二月 - 3E 2E BA 24 FA 22 47 A0 00 0F A5 0E F7 B0 9C 32

    如果完成上述操作,那么我需要自动执行 HEX 搜索并替换目标加密文件上 encdec.txt 中的值。

    因此,自动化将检查“ ENC - 88 F4 62 71 3D 25 CD 7C 72 76 8E 14 95 0B D1 8B ”这一行并在目标文件中搜索它并将值替换为“DEC - 3E”中的十六进制值2E BA 24 FA 22 47 A0 00 0F A5 0E F7 B0 9C 32"

    【讨论】:

      猜你喜欢
      • 2015-07-08
      • 2012-10-23
      • 1970-01-01
      • 1970-01-01
      • 2014-08-24
      • 2016-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多