逆向工程核心原理笔记-快速找到指定代码的四种方法

逆向工程核心原理笔记-快速找到指定代码的四种方法

这里使用的exe文件使用VS编写源代码如下
#include "stdafx.h"
#include "windows.h"
#include "tchar.h"

int _tmain(int argc,TCHAR *argv[])
{
    MessageBox(NULL,
        L"HelloWorld!",
        L"www.reversevore.com",
        MB_OK);

    return 0;
}

程序运行如下,弹出一个对话框。
这里写图片描述

下面的分析方法都是放在Ollydbg中的调试的。

第一种:代码执行法

就是使用F2加断点,F7 F8不断去寻找位置,适用于小型简单的Crackme程序。不断地调试之后我们找到这个位置。
可以看到首先压入栈参数,再进行执行。
这里写图片描述

第二种:字符串检索法

等待程序运行完毕,右键查找所有参考字符串,但是这个方法我并未成功。

第三种:API检索法

右键查找所有模块间的调用,搜索MessageBoxW但是这个我也未能成功。

第四种:API检索法二

右键查找所有模块中的名称,找到了这个输出函数,双击。
这里写图片描述
得到这,我们在这里加一个断点。下次F9直接执行到这里。
这里写图片描述
执行到这里时,目标函数已经被调用,于是其返回地址也被压入栈中。我们看到此时的栈状态。
这里写图片描述
我们可以看到参数被压入栈中后返回地址压入。返回地址为,0x00B91724,我们查看这里的汇编指令。

这里写图片描述
同方法一,我们也找到了这里的目标函数。

函数调用栈的规则得清楚。

简单哈哈哈。

猜你喜欢

转载自blog.csdn.net/ishandsomedog/article/details/80553769