IDA寻找main函数

2019-07-29 11:21:10 浏览数 (1)

第一步

打开程序之后按下空格键,到流程图这里,找到jmp,双击后面的名字,跳转打开程序之后按下空格键,到流程图这里,找到jmp,双击后面的名字,跳转

如果空格到不了,就在export中寻找OEP入口点,往下拉过两个函数,第三个函数里面的call就是main函数

OEP找到第二个call进去之后,流程图中exit上面的特征码code上面的函数就是main函数OEP找到第二个call进去之后,流程图中exit上面的特征码code上面的函数就是main函数

第二步

流程图中流程图中

找到第二个call指令

函数中函数中

同样,双击,跳转到函数里面

第三步

这里是第二个函数双击后到达的位置这里是第二个函数双击后到达的位置

一直向下寻找,直到找到一个call指令前面紧跟着3个push(因为main函数的参数有三个,这三个push是将参数压入栈的操作,寻找方式与OD类似),此时双击call后面的函数名,进入后到达main函数。

***********************************************************************************************

上面的方法适用于12版左右的vs,总是现在的vs2017不能用这种方法找,是找不到的,具体如下:

在你找三个push的时候发现找不到了,这个时候就要找三个连续的call,看图:

中间的那个call是我们想要的call,它的特点是前后都跟着一个call,并且上面一个代码是add esp,4中间的那个call是我们想要的call,它的特点是前后都跟着一个call,并且上面一个代码是add esp,4

点进中间的call,之后

这个时候从上往下数的第四个call就是我们想要的main函数了,点进去看看吧这个时候从上往下数的第四个call就是我们想要的main函数了,点进去看看吧
没错,是我们想要的main函数没错,是我们想要的main函数

如果想要从后往前寻找到最开始的函数,在code上点击右键,选择第一个选项查看交叉调用的地方xxxxx to...往前查找

0 人点赞