首页
社区
课程
招聘
解答腾讯公司2008软件安全竞赛遇到的一个问题
2010-7-2 10:23 3865

解答腾讯公司2008软件安全竞赛遇到的一个问题

2010-7-2 10:23
3865
原题目地址是:http://bbs.pediy.com/showthread.php?t=73685&prefixid=phpforce_108

我用的是ShellExecuteA来打开网站,这里两个地址需要重定位,一个是我添加的输入函数ShellExecuteA,第二个是字符串常量.我需要在重定位表里添加者两个重定位信息,打开重定位
表:

00000a00h: 00 10 00 00 20 00 00 00 03 30 08 30 10 30 2F 30 ; .... ....0.0.0/0
00000a10h: 34 30 83 30 8E 30 96 30 9F 30 BE 30 C5 30 21 31 ; 40??????!1
00000a20h: 17 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; .1..............

如上所示是该dll文件的重定位信息,重定位的数量应该是(0x20 - 8) /2 = 12(十进制),应该是到地址a1f(21 31 )处就结束了,21 31是我添加的重定位信息,原始的数据是00 00,应该是重定位信息的结束.
现在我添加了两个重定位信息(21 31 和 17 31),然后修改重定位信息的大小,因为我添加了两个,每个大小是两个字节,所以在a04地址处将SizeOfBlock字段加上4,但是这样修改之后DLL每次都加在失败.改为原来的20 00 00 00后第一个重定位信息可以正常重定位,但是第二个地址不能正常重定位,在代码中我只能用代码自定位来做.

不知道说这么多大家看明白没,本人的表达能力...我的问题是,重定位表的修改需要注意哪些问题,如果想添加几个重定位信息,我只修改重定位表的大小,然后把需要重定位的地址(按照重定位表的的结构)补到后面.除了这些还需要注意哪些?因为这个DLL当我修改完重定位信息的大小后,DLL就不能加载成功.

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

收藏
点赞0
打赏
分享
最新回复 (6)
雪    币: 249
活跃值: (25)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
LeoF 1 2010-7-2 16:29
2
0
大牛们怎么今天没人来啊?
雪    币: 249
活跃值: (25)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
LeoF 1 2010-7-4 16:23
3
0
连帮顶的都没有,郁闷。。。。
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
火箭蜗牛 2010-7-4 17:47
4
0
从头看到尾,不知道你在表达什么。。。我的理解能力有限
雪    币: 249
活跃值: (25)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
LeoF 1 2010-7-5 09:20
5
0
重定位的结构:
IMAGE_BASE_RELOCATION STRUC
   VirtualAddress    DWORD
   SizeOfBlock         DWORD
   TypeOffset          WORD
IMAGE_BASE_RELOCATION ENDS

00000a00h: 00 10 00 00 20 00 00 00 03 30 08 30 10 30 2F 30 ; .... ....0.0.0/0
00000a10h: 34 30 83 30 8E 30 96 30 9F 30 BE 30 C5 30 21 31 ; 40??????!1
00000a20h: 17 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; .1..............
按照这个结构,我想添加两个重定位信息,首先修改SizeOfBlock,因为一个重定位信息占一个WORD,所以两个我要+4。我就把"20 00 00 00"改为"24 00 00 00",但是这样这个DLL就不能加载成功.问题就是这样,不知道您能不能看明白了现在
雪    币: 291
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
leking 2010-7-5 09:42
6
0
参考前辈们的答题,应能解决:
http://bbs.pediy.com/forumdisplay.php?f=120&prefixid=phpforce_109
雪    币: 249
活跃值: (25)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
LeoF 1 2010-7-5 11:09
7
0
问题解决了,忘记在数据目录(Data_Directories)把重定位的大小+4.谢谢leking
游客
登录 | 注册 方可回帖
返回