首页
社区
课程
招聘
[求助]IDA Pro不能正确命名某些函数名称
发表于: 2010-1-5 11:53 6084

[求助]IDA Pro不能正确命名某些函数名称

2010-1-5 11:53
6084
使用IDA Pro反汇编一个MFC 8.0程序,发现程序中通过JMP指令间接调用的函数都可以正确命名,而那些直接通过指针(地址)调用的函数却不能正确命名。如OnCancel,Imports表中是这样的:

extrn __imp_MFC80_4213:dword
; DATA XREF: CPropertyPage::OnCancel(void)

跳转表中是这样的:

public: virtual void __thiscall CPropertyPage::OnCancel(void) proc near

                 jmp     ds:__imp_MFC80_4213

public: virtual void __thiscall CPropertyPage::OnCancel(void) endp

程序中是这样的:

                 mov     byte ptr [ecx+7F8h], 1
                 call    CPropertyPage::OnCancel(void)

而对于序号为2321的函数,其原型实际上是

public: void __cdecl ATL::CStringT::Format(unsigned int,...)

在Imports表中是这样的:

extrn MFC80_2321:dword

它没有对应的跳转表项,所以在程序中是这样的:

.text:0048C4AF                 push    3E6h
.text:0048C4B4                 lea     eax, [esp-0F0h+arg_108]
.text:0048C4B8                 push    0DB8h
.text:0048C4BD                 push    eax
.text:0048C4BE                 mov     [esp-0E8h+arg_118], 0
.text:0048C4C6                 call    ds:MFC80_2321

可对于ADVAPI32.dll的任何函数都不存在这个问题。本来想着手动命名一下,可对于那些多态函数会出现重名的现象;命名析构函数时又不允许函数名中出现波折线符号(~),很是不爽。请教各位大虾如何解决?

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

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 1946
活跃值: (248)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
2
做一个mfc80的sig,IDA自带的sig只支持到mfc64
2010-1-5 13:46
0
雪    币: 131
活跃值: (98)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
怎么制作mfc80的sig呢?
2010-1-5 16:01
0
游客
登录 | 注册 方可回帖
返回
//