-
-
[原创][答案提交][第一阶段◇第一题]看雪论坛.腾讯公司2008软件安全竞赛
-
发表于:
2008-10-1 19:02
2439
-
[原创][答案提交][第一阶段◇第一题]看雪论坛.腾讯公司2008软件安全竞赛
STEP1:
确定函数为WinExec,将函数WinExec用LordPe添加到输入表,并记下FirstThunk为0x5017。
STEP2:
在磁盘文件物理地址0x4CB处输入字串 "explorer.exe http://bbs.pediy.com" (不含双引号最后以0x00结尾)
STEP3:
OD打开文件(pediy.dll基地址为0x3F0000)输入代码如下
003F10EE p>/$ 50 push eax ; /ShowState
003F10EF |. 68 CB103F00 push pediy.003F10CB ; |CmdLine = "explorer.exe http://bbs.pediy.com"
003F10F4 |. FF15 17503F00 call dword ptr ds:[<&Kernel32.WinExec>] ; \WinExec
003F10FA \. C3 retn
根据WinExec的FirstThunk地址+pediy.dll基地址 = 0x003F5017.所以call [3F5017]即为执行WinExec
虚拟地址可能会不同,故此处仅做示例。
STEP4:
修复2处重定位。虚拟地址为0x003F10F0和0x003F10F6
STEP5:
添加导出表,因为之前添加函数到输入表时候LordPe添加了一个区块,但区块太小,手工调整其大小后,顺便将其区块名改名为 ".PB" ,然后添加导出表,导出表在磁盘文件物理地址为0xC70处,大小为0x45
最终写了TestLoader测试通过,自我判断OpenUrlA函数大小为13(D)。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!