【问题标题】:How to find a function of application with ollydbg?如何使用 ollydbg 找到应用程序的功能?
【发布时间】:2014-07-31 16:02:08
【问题描述】:

假设我发布了下面的应用程序。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Hello World!","Message Box");
        }
    }
}

现在这是我的问题:

  1. 如何找到负责显示的按钮的功能 使用 ollydbg 按下按钮后的消息框?
  2. 如何禁用按钮点击?

注意:这必须仅使用 ollydbg 完成。假设我无权访问代码。

非常感谢您提供分步示例。

【问题讨论】:

  • Ollydbg 对于托管代码来说可能是一个有点困难的选择,因为它是 JIT 编译。你为什么要这样做?为什么不使用其他工具,例如带有 VS 插件的 .NET Reflector 或带有 SOS.dll 的 WinDBG?你希望通过找到它来完成什么?
  • 我正在开发一个游戏客户端,我想禁用它上面的按钮。我正在尝试使用此应用程序简化按钮单击行,因此在我在应用程序上找到它后,在客户端上会更容易找到!
  • Olly 不会帮助您做到这一点。可执行文件中的代码是 IL 代码,但 Olly 使用的只是本地代码。您可能会找到该函数,甚至可能更改它,但由于您找到的是 JIT 本机代码,因此不会进行永久性更改。
  • 那么你建议我做什么?
  • 我建议您遵循以下答案中的建议。

标签: c# disassembly ollydbg


【解决方案1】:

使用 Olly 或 IDA 是徒劳的。

使用.NET Reflector进行反编译(有14天试用期)并下载Reflexil插件可以修改代码。

由于您已经反编译了源代码,因此找到该位置应该不会太难。

如果您找不到该地点,可以尝试以下方法之一:

  • 将反射器连接到 Visual Studio

  • 导出源代码并从 Visual Studio 中运行

如果代码被混淆了,我无法帮助你,你必须开始使用它,直到你打败混淆

使用 Reflexil 插件,您可以简单地删除/修改功能

【讨论】:

    【解决方案2】:

    为什么不使用IDA?您可以“轻松”地退出该功能。

    【讨论】:

    • 它似乎可以管理一个简单的应用程序,但我不确定这个 IDA 是否会管理一个游戏客户端!我选择了ollydbg,因为它可以管理游戏客户端上的所有线路。
    • 可以,你在寻找IDA而不是OllyDBG。
    • @user3725506 管理意味着您可以与代码运行时交互?这就是所谓的动态(olly)与静态调试(IDA)。
    猜你喜欢
    • 2014-08-14
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    相关资源
    最近更新 更多