【问题标题】:Editing a program with Ollydbg使用 Ollydbg 编辑程序
【发布时间】:2014-06-30 21:37:55
【问题描述】:

这是我的 C++ 代码:

#include <conio.h>
#include <iostream>

using namespace std;

void func1()
{
    static int _count = 0;
    if (_count < 5)
    {
        __asm
        {
            pop eax
            push func1
        }
    }

    _count++;
    cout << _count << endl;
}

int main()
{
    func1();

    cout << "ok" << endl;
    return 0;
}

现在,我需要删除 asm inline。

它被加载到 Ollydbg 中,这是 asm inline 的位置:

我将填写图片中用 NOP 标记的两条指令。好的。我知道该怎么做。然后,我用新名称保存了它。

但是当我将我编辑的程序加载到 Ollydbg 中时。 我编辑的地点添加了一条新指令。

而新指令使程序崩溃。

好的,如果我的问题足够清楚,我需要知道: 该指令是如何自动添加的? 我该如何解决?

谢谢。

更新 1: 以下是我如何修改程序

但是..我不知道为什么?

【问题讨论】:

    标签: c++ windows assembly inline-assembly ollydbg


    【解决方案1】:

    NOP 分配 1 个字节,因此将这两条指令替换为 NOPs

    POP  EAX              ; 1 byte
    PUSH Console.func1    ; 5 byte
    

    你需要放 6 个 NOP 而不是 2 个。否则,你有 2 个 NOPs 和 4 个字节的垃圾。

    【讨论】:

    • 他似乎使用了“用 NOP 填充”选项并得到 909090908090 而不是 909090909090。
    猜你喜欢
    • 2014-08-14
    • 2011-09-16
    • 2012-03-27
    • 2015-07-13
    • 2014-07-31
    • 2011-04-14
    • 1970-01-01
    • 2019-01-25
    • 1970-01-01
    相关资源
    最近更新 更多