首页
论坛
课程
招聘
[原创]IDA Pro 处理按序号的导入函数
2011-4-15 11:46 10590

[原创]IDA Pro 处理按序号的导入函数

2011-4-15 11:46
10590
新的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

【看雪培训】《Adroid高级研修班》2022年夏季班招生中!

收藏
点赞0
打赏
分享
最新回复 (6)
雪    币: 208
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
许晓明 活跃值 2011-4-30 10:29
2
0
可以用,十分感谢共享知识
同时附上工具,省的到处找
上传的附件:
雪    币: 71
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mumaren 活跃值 2011-4-30 22:52
3
0
什么意思?

没用过ida

具体说说啦
雪    币: 233
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
飞鸟ABC 活跃值 2011-5-3 11:57
4
0
好东东,标记下
雪    币: 445
活跃值: 活跃值 (1335)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kakasasa 活跃值 2020-4-9 14:12
5
0
今个用到,mark ,3q!
雪    币: 1125
活跃值: 活跃值 (1191)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
fengyunabc 活跃值 1 2020-4-9 15:09
6
0
感谢分享!
雪    币: 74
活跃值: 活跃值 (571)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
killpy 活跃值 2 2020-4-9 19:43
7
0
这个是跳到壳函数?( jmp     ds:?SetAtGrow@CDWordArray@@QAEXHK@Z ) 壳函数负责跳到真实的函数?(CDWordArray::SetAtGrow(int,ulong))那你改成CDWordArray::SetAtGrow(int,ulong) 只是方便阅读吗 另外你看一下 我这个帖子  这些修饰命名都是啥意思https://bbs.pediy.com/thread-258446.htm
游客
登录 | 注册 方可回帖
返回