新的mfc90u是按照序号导出,用IDA Pro加载的时候显示如下形式:
mfc90u_6167

这时候用flair是无效的,flair针对的是静态连接.动态连接的信息可以
通过创建立ids文件来解决.需要用到IDA Pro提供的idsutils,找到
mfc90u.lib

ar2idt mfc90u.lib
zipids mfc90u.idt

就可以得到mfc90u.ids,将其放到ida pro的ids目录.如果没有自动
加载就手动加载一下.出来的结果是:

mfc90u_6167     proc near               ; CODE XREF: sub_413860+1Ep

.text:008F0A06                 jmp     ds:?SetAtGrow@CDWordArray@@QAEXHK@Z ; CDWordArray::SetAtGrow(int,ulong)

这样的形式.输入本身已经修正掉,但是外面还有个跳转的壳函数.在ida
pro中设置名字解码显示为注释的情况下(默认),我们只需要得到jmp
指令后面的注释就行了.使用一个小脚本来完成:



代码:
import string
for i in range(250,6808):
  ea = LocByName("mfc90u_" + str(i))
  if ea  != BADADDR:
    dis = GetDisasm(ea)
    dis = dis[dis.rfind(";") + 2:]
    dis = dis.replace(",", "_")
    dis = dis.replace("(", "_P_")
    dis = dis.replace(")", "_P")
    dis = "MFC90_" + dis
    print "make name :",dis
    print
    MakeNameEx(ea,dis,SN_PUBLIC)

最终效果:

text:00413937                 mov     ecx, esi
.text:00413939                 call    MFC90_CDWordArray__SetAtGrow_P_int_ulong_P
.text:0041393E                 mov     eax, [esi+8]
.text:00413941                 push    0
.text:00413943                 push    eax
.text:00413944                 mov     ecx, esi
.text:00413946                 call    MFC90_CDWordArray__SetAtGrow_P_int_ulong_P

  • 标 题:答复
  • 作 者:许晓明
  • 时 间:2011-04-30 10:29:42

可以用,十分感谢共享知识
同时附上工具,省的到处找

上传的附件 idsutil3.rar