首页
社区
课程
招聘
[求助]OD判断函数入口点的具体细节
发表于: 2008-10-28 09:46 5312

[求助]OD判断函数入口点的具体细节

2008-10-28 09:46
5312
00401B7A  |.  68 F61C4000   push    <jmp.&MSVCRT._except_handler3>  ;  SE 处理程序安装

象这一条命令,OD应该是先得到机器码68 F61C4000 然后通过地址,算出是此函数的入口点 我想了解具体的细节 谢了

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
2
最近egogg正在写关于Intel的反汇编引擎的专题。

可以看看。

关于上面的问题,因为0x401c6f这个地址被OD分析时,自动加上了标签,所以反汇编就用标签来显示了。你可以配置OD让它只显示地址的,不过除非特殊需要,我们人容易分析需要标签而不是地址。

同样,如果某地址没有被OD自动分析出来,而经过人工分析知道了这个函数的功能,那么可以手动加上标签,比如原来的指令是
00403F7D    E8 BAECFFFF     CALL    unpacked.00402C3C

你到地址到00402c3c处分析,认为这个函数是计算字串长度的,你按“冒号”键,给它加个strlen的标签,再回到原来的地方,现在它变成这样了:
00403F7D    E8 BAECFFFF     CALL    <unpacked.strlen>

这是分析大段代码时的一种基本方法,应该熟练掌握。

对于楼主提供的例子,只不过标签jmp.&MSVCRT._except_handler3是OD自己分析出来的,可能从IAT中,或其它方式分析得到的,而我举的例子strlen是自己添加了。

另外,分析大块代码时还有一种常用的方法,就是导入模块的MAP文件,它会自己加上很多标签,非常方便。如果是用OD调试自己写程序,MAP文件可以用编译器生成。如果是逆向分析,MAP文件可以使用IDA来生成,因为IDA有很多SIG文件,能够识别相当多的库函数,甚至常用算法的函数,这样再导入到OD中,往往能够事半功倍。

不知道你想了解的是什么细节,我上面说的可有帮助。
如果把问题再叙述得详细些,准确些,就更好了。
2008-10-28 12:41
0
雪    币: 32
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
非常感谢 回答的很详细
2008-10-28 15:11
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rsa
4
明白了。label 理解为函数名字。就象IDA里也有修改 Function comment地方
2009-6-11 09:30
0
游客
登录 | 注册 方可回帖
返回
//