OllyDBG,按照呼叫功能

时间:2014-02-22 17:12:47

标签: reverse-engineering ollydbg

我最近又开始学习倒车了,我在使用OllyDBG时遇到了问题。当调试一个EXE,它有按钮,每个按钮做不同的事情,我似乎无法找到一种方法来遵循特定按钮的代码。

例如:我有一个带3个按钮的KeygenMe:“登录”,“关于”,“退出”。 我希望OllyDbg能够按照“登录”按钮时发生的事情。

我该怎么做?我知道这是可能的,因为我以前做过。

2 个答案:

答案 0 :(得分:2)

当程序从函数返回时,您可以通过要求olly停止来按下按钮。 这样做:

  1. 开始调试您的KeygenMe。
  2. 关注ollydbg窗口并按Ctrol+F9
  3. 专注于KeygenMe并单击按钮。
  4. Olly会在按钮功能返回时停止。

    有些时候,olly可能会在user32.dll中远离你想去的地方,所以你需要追溯你的方式。

    你可以用两个tectiques(我知道)来做到这一点:

    (在返回后使用一个)

    使用追溯:

    1. 正常运行程序,然后点击Ctrol+F11
    2. 然后返回使用 - (数字键盘的减号键)
    3. 或使用断点

      1. 在此功能被称为
      2. 之前,直到找到断点为止
      3. 使用右键单击代码,找到您在第一步找到的结构的引用。
      4. 继续执行第1步和第2步,直到找到您的功能
      5. (我使用两者但有些时候第一个不能工作)

答案 1 :(得分:0)

上面描述的方式我认为是一般的,它应该适用于大多数情况。但是,如果您已经知道应用程序是在哪个编译器中构建的,那么您可以使用特定的方法,最终您可以更快,更准确地获得所需的内容。

假设您的exe不是用.NET构建的更糟糕的情况,您无法轻松地对其进行反编译。有一些技巧。 例如,Delphi / C ++构建器应用程序使用公共对象事件和地址在二进制文件中创建一个表,它非常容易解码,实际上有一些Olly脚本可以做到这一点。 另一方面,如果它是使用MFC或类似的东西用Visual C制作的,如果你知道如何调用MFC,你就可以很容易地找到它。