首页
社区
课程
招聘
[原创]使用IDA PRO+OllyDbg+PEview 追踪windows API 动态链接库函数的调用过程。
发表于: 2015-2-12 05:19 38775

[原创]使用IDA PRO+OllyDbg+PEview 追踪windows API 动态链接库函数的调用过程。

2015-2-12 05:19
38775
#include "stdio.h"

long add(long a, long b)
{
    long x = a, y = b;
    return (x + y);
}

int main(int argc, char* argv[])
{
    long a = 1, b = 2;
    
    printf("%d\n", add(a, b));

    return 0;
}

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 3
支持
分享
最新回复 (28)
雪    币: 32
活跃值: (1390)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
写的很清楚哦。
2015-2-12 07:31
0
雪    币: 1604
活跃值: (640)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
3
补充一下,前面在查看绝大部分使用静态链接的程序中,整个函数的调用拓扑,非常凌乱,我们甚至找不到main函数与最终的DLL函数入口
下面这张来自于 IDA PRO 的函数递归调用图,把范围缩小到了我们追踪的从main()到 EnterCriticalSection() 的整个过程,验证了前面在StackFrame的代码节中的查找工作:



2015-2-14 00:05
0
雪    币: 1604
活跃值: (640)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
4


下面这张图是用于生成上图的函数调用设置:



2015-2-14 00:20
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
不错 。。。。。。。。。。。。。。。。。。。。
2015-2-14 04:38
0
雪    币: 1604
活跃值: (640)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
6
帖子中使用的测试程序,实际上是《逆向工程核心原理》一书中,第7章的实例程序
StackFrame.exe
各位若要使用IDA或者OD对其进行分析,可以在这里下载该文件,解压后以OD加载或IDA加载即可

StackFrame.rar

或者,也可以去该书作者的博客下载配书资源,里面的第7章文件夹中的文件与这里的相同
上传的附件:
2015-2-23 19:44
0
雪    币: 78
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
写的很清楚哦。
2015-2-23 20:16
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
你这IDA界面是主题吗?哪里下载的。可以给一份吗
2015-2-24 11:09
0
雪    币: 13530
活跃值: (6208)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
好强大的呢,来学习
2015-2-24 11:28
0
雪    币: 1604
活跃值: (640)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
10
这是开启windows 7 的Aero 特效桌面主题后,启动放大镜,再启用"颜色反转"时,截的图,不是IDA的主题界面
2015-2-24 15:37
0
雪    币: 346
活跃值: (25)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
11
已拜读!!!!
2015-2-25 00:09
0
雪    币: 16645
活跃值: (1950)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
走迷宫高手……
2015-2-25 20:34
0
雪    币: 66
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
LZ介绍的很详细,支持一个。
2015-2-26 10:12
0
雪    币: 113
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
基础的文章越来越少,顶下。
2015-2-26 11:19
0
雪    币: 43
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
先mark,慢慢学些看
2015-2-27 15:24
0
雪    币: 27
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
不错 类似于教材性质的文章  适合新人
2015-3-4 14:04
0
雪    币: 688
活跃值: (135)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
楼主使用的OD 是什么版本的?能否提供一下?
2015-3-6 16:11
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
看完了。不过这里使用IDA的意义在哪?直接用OD不也可以完成分析吗?
2015-3-6 23:05
0
雪    币: 1604
活跃值: (640)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
19
如果LZ仅用OD分析,就不会有这篇文章了,IDA的强大之处在于,可以迅速准确地区分库代码与程序员代码,而且这里也用到了IDA绘制函数调用流程图的功能,可以这么讲,在OD动态调试时,IDA就是我们的灯塔,以至于不会在代码的汪洋中迷失方向,
代码行数量越大的软件,IDA的作用越明显。
2015-3-6 23:42
0
雪    币: 87
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
写的很详细
2015-3-13 10:44
0
雪    币: 1644
活跃值: (53)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
感谢分享。
2015-6-4 22:47
0
雪    币: 81
活跃值: (115)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
22
然而IDA并不能,你这里能区分是因为你并没有调用什么奇怪的库
如果用了boost,openssl之类的除非自己制作sig,然后你又不知道对方的版本,就算知道了版本,你还要猜对方的编译优化选项,一些游戏的库会用非常多的优化手段

然而有些库你虽然知道名字,但是你拿不到lib,制作不了sig,IDA什么都帮不了你
2015-6-5 16:25
1
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
学习了,谢谢。
2015-9-1 15:53
0
雪    币: 79
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
mark thanks
2015-10-18 23:31
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qqv
25
多谢楼主, 非常适合我这样的汇编菜比
2016-7-1 13:34
0
游客
登录 | 注册 方可回帖
返回