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