如何在OllyDBG中自动执行任务?使用Ollyscript或任何其他工具

时间:2015-02-12 22:06:53

标签: debugging breakpoints crash-dumps ollydbg hexdump

如何在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是从中开始转储的地址。

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

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

现在我想循环这个功能并自动化它。如何在Ollyscript或其他方面完成自动化?

3 个答案:

答案 0 :(得分:2)

Afaik现有的插件都没有提供windbg的.writemem功能 上面下载的是一个从anonymouse(openrce blog)增强的ollydbg插件 使用添加的命令修改cmdline插件.writemem

下载并将dll放在ollydbg 1.10 plugin path

修复了可能的崩溃路径(FindModule - >如果FindModule在这种情况下返回null,则mod-name可以为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

第二个命令会将0x40字节从0x402085转储到指定的文件夹

使用条件日志断点pass commands to plugin when paused functionality (shift+f4)

自动使用此命令 在编辑框中输入

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

当遇到断点时,将转储内存内容

另一个快照来解释下面的更好的词 writemem command usage

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

它的加密/解密功能

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 DEC - 3E 2E BA 24 FA 22 47 A0 00 0F A5 0E F7 B0 9C 32

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

因此自动化将检查线路&#34; ENC - 88 F4 62 71 3D 25 CD 7C 72 76 8E 14 95 0B D1 8B&#34;并在目标文件中搜索它,并用&#34; DEC - 3E 2E BA 24 FA 22 47 A0 00 0F A5 0E F7 B0 9C 32&#34;

中的十六进制值替换值