首页
社区
课程
招聘
[求助]高手们看看是怎么回事。
发表于: 2007-8-15 09:01 4443

[求助]高手们看看是怎么回事。

2007-8-15 09:01
4443
用import  rec 获取输入表   显示
AT 读取成功.
rva:002F1434 来自模块:ntdll.dll 序号:006D 名称:RtlDeleteCriticalSection         
rva:002F143C 来自模块:ntdll.dll 序号:0082 名称:RtlEnterCriticalSection        
rva:002F14BC 来自模块:ntdll.dll 序号:0162 名称:RtlGetLastWin32Error         
rva:002F1550 来自模块:ntdll.dll 序号:01FD 名称:RtlAllocateHeap         
rva:002F1554 来自模块:ntdll.dll 序号:0203 名称:RtlFreeHeap         
rva:002F1564 来自模块:ntdll.dll 序号:021E 名称:RtlLeaveCriticalSection         
rva:002F15A8 来自模块:ntdll.dll 序号:02C0 名称:RtlUnwind         
rva:002F1634 来自模块:ntdll.dll 序号:006D 名称:RtlDeleteCriticalSection         
rva:002F163C 来自模块:ntdll.dll 序号:0082 名称:RtlEnterCriticalSection         
rva:002F16BC 来自模块:ntdll.dll 序号:0162 名称:RtlGetLastWin32Error         
rva:002F1750 来自模块:ntdll.dll 序号:01FD 名称:RtlAllocateHeap         
rva:002F1754 来自模块:ntdll.dll 序号:0203 名称:RtlFreeHeap         
rva:002F1764 来自模块:ntdll.dll 序号:021E 名称:RtlLeaveCriticalSection         
rva:002F17A8 来自模块:ntdll.dll 序号:02C0 名称:RtlUnwind         
---------------------------------------------------------------------------------------------------------------------------
当前输入表:
2C (十进制:44) 个有效模块 (已添加: +2C (十进制:+44))
4C0 (十进制:1216) 个输入函数. (已添加: +4C0 (十进制:+1216))
文件保存成功.

而在输入函数表中却显示
002F1414        kernel32.dll        0032        CloseHandle
1        002F1418        kernel32.dll        0038        CompareStringA
1        002F141C        kernel32.dll        0040        CopyFileA
1        002F1420        kernel32.dll        0048        CreateDirectoryA
1        002F1424        kernel32.dll        004C        CreateEventA
1        002F1428        kernel32.dll        0050        CreateFileA
1        002F142C        kernel32.dll        005D        CreateMutexA
1        002F1430        kernel32.dll        006D        CreateThread
1        002F1434        kernel32.dll        0080        DeleteCriticalSection
1        002F1438        kernel32.dll        0082        DeleteFileA
1        002F143C        kernel32.dll        0097        EnterCriticalSection
1        002F1440        kernel32.dll        0098        EnumCalendarInfoA
1        002F1444        kernel32.dll        00B7        ExitProcess
1        002F1448        kernel32.dll        00B8        ExitThread
1        002F144C        kernel32.dll        00C2        FileTimeToDosDateTime
1        002F1450        kernel32.dll        00C3        FileTimeToLocalFileTime
1        002F1454        kernel32.dll        00CD        FindClose
1        002F1458        kernel32.dll        00D1        FindFirstFileA

为什么 是ntdll的函数、却显示在 kernel32的下面啊  是不是import rec的问题 应该如何修改啊,这样的输入表不正确啊。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
2
输出转向

ntdll.dll 序号:006D 名称:RtlDeleteCriticalSection
-> kernel32.dll  DeleteCriticalSection
ntdll.dll 序号:0082 名称:RtlEnterCriticalSection
-> kernel32.dll  EnterCriticalSection
2007-8-15 09:22
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谁能给解释一下这是什么意思啊。 我的程序载入时停到了ntdll 会不会和这个表有关系
2007-8-15 11:04
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
4
1.2.6  输出转向

输出转向(Export Forwarding)是对一个函数的调用转至另一个DLL中的函数。例如,在Windows XP中,KERNEL32的HeapAlloc函数被转向到由NTDLL输出的RtlAllocHeap。转向是在链接时通过在.DEF文件的EXPORTS区块内一个特殊的句法实现的。用HeapAlloc作为一个范例,KERNEL32的DEF文件将包括:
EXPORTS

HeapAlloc = NTDLL.RtlAllocHeap

如何确定一个函数是被转向输出的还是被正常输出的?正常情况下,EAT包含输出符号的RVA,但是,如果函数的RVA在输出区块内(由Datadirectory数组结构中的VirtualAddress和Size域给出),那么这个符号是转向的。

  当一个符号被转向时,很明显它的RVA不能是当前模块中的一个代码或数据的地址,而是指向被转向到的DLL和符号名称的ASCII字符串。在前面的例子中,它将是NTDLL.RtlAllocHeap。
2007-8-15 11:16
0
游客
登录 | 注册 方可回帖
返回
//