首页
社区
课程
招聘
关于跳转表的来龙去脉???
发表于: 2011-5-25 19:21 4800

关于跳转表的来龙去脉???

2011-5-25 19:21
4800
/*401145*/  int3
/*401146*/  jmp dword ptr ds:[<&USER32.CreateWindowExA>]
/*40114C*/  jmp dword ptr ds:[<&USER32.DefWindowProcA>]
/*401152*/  jmp dword ptr ds:[<&USER32.DispatchMessageA>]
/*401158*/  jmp dword ptr ds:[<&USER32.GetMessageA>]
/*40115E*/  jmp dword ptr ds:[<&USER32.LoadCursorA>]
/*401164*/  jmp dword ptr ds:[<&USER32.LoadIconA>]
/*40116A*/  jmp dword ptr ds:[<&USER32.PostQuitMessage>]
/*401170*/  jmp dword ptr ds:[<&USER32.RegisterClassExA>]
/*401176*/  jmp dword ptr ds:[<&USER32.ShowWindow>]
/*40117C*/  jmp dword ptr ds:[<&USER32.TranslateMessage>]
/*401182*/  jmp dword ptr ds:[<&USER32.UpdateWindow>]
/*401188*/  jmp dword ptr ds:[<&KERNEL32.ExitProcess>]
/*40118E*/  jmp dword ptr ds:[<&KERNEL32.GetCommandLineA>]

怎么取得文件中的事跳转表呢! 比如: DosHeader + 3c 处就是PE头。那么跳转表有固定的相对地址吗? 还是只能搜索 代码的方式找到!

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 1886
活跃值: (1881)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
2
IAT?应该有很多代码吧。
2011-5-25 19:55
0
雪    币: 206
活跃值: (86)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
3
是跳转表饿!!! 谁知道跳转表的生成过程呀!!!

我只知道PE加载程序, 然后读取INT,通过类似GetProcAddress 得到函数地址,写入IAT。 那么这种跳转表是怎么生成的呢! 怎么确定生成在程序的那里呢!!!!
2011-5-25 20:31
0
雪    币: 214
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这都啥跟啥嘛,全是jmp就叫跳转表了?
2011-5-25 20:38
0
雪    币: 206
活跃值: (86)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
5
那我想知道怎么得到这些jmp的首地址。。。
401146 40114C 这些地址在文件中是有存在的。
比dos头+3c 是PE头。 但我不知道在文件中这些值的偏移是怎么来的。。。。
2011-5-25 20:54
0
雪    币: 161
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
[QUOTE=酒色财气;962696]/*401145*/  int3
/*401146*/  jmp dword ptr ds:[<&USER32.CreateWindowExA>]
/*40114C*/  jmp dword ptr ds:[<&USER32.DefWindowProcA>]
/*401152*/  jmp d...[/QUOTE]

这是导入表,在PE头中可以得到地址
2011-5-25 21:08
0
雪    币: 111
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
那么这种跳转表是怎么生成的呢

链接时

怎么确定生成在程序的那里呢呢

你找0x3c处的PE头一样,都可以根据PE结构定位到.
ImageBase + IMAGE_IMPORT_DESCRIPTOR.FirstThunk 即可获取IAT表.

附一个偏移:
http://bbs.pediy.com/upload/bbs/unpackfaq/ARTeam%20PE_appendix1_offsets.htm
2011-5-25 21:59
0
雪    币: 111
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
楼主问的是跳转表,而非IAT表?
该跳转表的生成和所用编译器有关.

一、(MASM默认)
call [xxxx]
...
xxxx:
   jmp [MessageBoxA]   --> FF25

二、(VC6默认)
call [MessageBoxA]    --> FF15

如果是想获取 jmp [MessageBoxA] 这张表的话,不妨看一下ImportREC的方法.
2011-5-25 22:08
0
雪    币: 206
活跃值: (86)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
9
[QUOTE=NiGHter;962737]楼主问的是跳转表,而非IAT表?
该跳转表的生成和所用编译器有关.

一、(MASM默认)
call [xxxx]
...
xxxx:
   jmp [MessageBoxA]   --> FF25

二、(VC6默认)
call [MessageBoxA]    --> FF15

如...[/QUOTE]

对不是IAT 我想得到这个表的地址,请问下只能通过搜索的方式吗?
2011-5-25 22:13
0
雪    币: 206
活跃值: (86)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
10
结帖了!
这些JMP访问的就是IAT在内存的地址。
我自己糊涂了。
2011-5-26 06:49
0
游客
登录 | 注册 方可回帖
返回
//