首页
社区
课程
招聘
[旧帖] OD是如何确定程序中某函数的被调用的地址的? 0.00雪花
发表于: 2011-12-16 21:21 5782

[旧帖] OD是如何确定程序中某函数的被调用的地址的? 0.00雪花

2011-12-16 21:21
5782
当你用OD调试一个程序时

在某个函数的头部

会看到OD有提示

说XXXXXXXX XXXXXXXX ...调用了这个函数

我想知道OD是怎么获取这个信息的

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 239
活跃值: (133)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
右击转到上一个,程序中插入
_asm _emit 0xcc
2011-12-16 21:56
0
雪    币: 1886
活跃值: (161)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
你误会了

我的意思是 当你用OD调试一个程序时

在某个函数的头部

会看到OD有提示

说XXXXXXXX XXXXXXXX ...调用了这个函数

我想知道OD是怎么获取这个信息的
2011-12-16 23:21
0
雪    币: 1886
活跃值: (161)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
继续求思路,先谢谢了
2011-12-17 10:27
0
雪    币: 2210
活跃值: (12)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
因为会有代码CALL XXXXX 就是调用这个函数喽
OD按CTRL+A分析的时候就会得到这些地方,就知道喽
2011-12-17 12:49
0
雪    币: 2210
活跃值: (12)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
比如说:
00001000  CALL 00040024   //这是调用函数
....
....
....
00040024 pop ...   //这是函数

这样有几处调用就知道了. 是根据地址分析的
2011-12-17 12:52
0
雪    币: 1886
活跃值: (161)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
那 CALL EAX 这样的指令怎么办 忽略?
2011-12-17 23:52
0
雪    币: 131
活跃值: (156)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hio
8
call 寄存器和call指针都是无法分析的,你看到的xx调用了此处都是静态calk
2011-12-18 21:30
0
雪    币: 1886
活跃值: (161)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
谢谢大家 最后顶一次 没其他答案就结帖了
2011-12-21 00:33
0
雪    币: 382
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
学习中。。。
2011-12-21 08:06
0
雪    币: 2210
活跃值: (12)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
正常用高级语言写的程序, 函数在运行时都有固定位置, 所以一般不会出现call eax的情况
如果内嵌了asm除外.
试想下,某处调用函数是变化的,那设计者到底要实现什么功能呢? 函数指针到是有可能.
一般来说,调用函数是为了实现一个功能,而功能是确定的,函数的位置也是确定的
2011-12-21 09:06
0
雪    币: 33
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
对象中的函数都是不定位置的
2011-12-21 18:25
0
游客
登录 | 注册 方可回帖
返回
//