===========第一阶段比赛===========

第一阶段比赛说明
 
本阶段共四道题目,每题计分每题的计分方法,将在题目放出时公布。(各题的分数将算入最后的总数,在决定最终名次时,每一题都很重要)
四道题不是同时给出,在第一题结束后,再放出第二题,以此类推。但无论答题正确与否,都有资格参与下一题的回答。若题目答错或未答,该题均计0分。

 
第一阶段第一题

己知一个DLL文件pediy.dll,见附件。

答题要求
 
1.为DLL文件新增输出表,同时增加输出函数OpenUrlA;
2.OpenUrlA函数功能是调用IE浏览器打开http://bbs.pediy.com,打开后无其他操作;
3.不得改变pediy.dll的ImageBase的值400000h;
4. 最终提交的程序,必须可运行在Windows 2000/XP系统上;
5. 将修改好了的程序,与修改步骤(将整个过程用文字简单描述一下),一起上传到答案提交区(http://bbs.pediy.com/forumdisplay.php?f=120)。

其他注意事项

1. 比赛答题期间,不得在论坛或群等公开场所讨论,否则取消相关人员比赛资格。

 
提交机会:此题每个选手有最多有两次提交机会.如果选手提交多次,仅以第二次提交的答案为最终答案.

计分公式
得分=min[1.0,(13/OpenUrlA函数大小)]×100-(附件提交次数-1)×5

不添加节,不修改文件大小会有适当加分。

说明:
min:是指1.0和 13/OpenUrlA函数大小 的最小值。
OpenUrlA函数的大小:是从指从OpenUrlA函数第一字节,到最后一句指令,期间所有代码数据字节数(如果期间有数据或者遍历的代码也算进去)。

例1:68 00104000       push    00401000             ;  ASCII "http://bbs.pediy.com"
这句指令是5个字节,指向的字符串“http://bbs.pediy.com”不计入OpenUrlA函数大小。

例2:
00401040   E8 15000000                 call    0040105A
00401045   68 74 74 70 3A 2F 2F 77 77 >ascii   "http://bbs.pediy"
00401055   2E 63 6F 6D 00              ascii   ".com",0
0040105A    6A 00                       push    0

此种情况,将字符串嵌入代码里,字符串“http://bbs.pediy.com”将计入OpenUrlA函数大小里。

例3:选手第一次提交的OpenUrlA函数大小是16字节,则得分:
得分=min[1.0,(13/16)]×100-(1-1)×5=81.25分


答题时间:2008-10-1 12:00 至 2008-10-4 12:00止.

通过标准:调用pediy.dll的OpenUrlA函数,自动调用IE打开http://bbs.pediy.com,打开后无其他操作;

赛事预告:休赛一天后,2008-10-5中午12点正式开始第一阶段第二题比赛。
上传的附件 pediy.zip