已经过了保密时间,现在公开下我的做题答案,祥见附件。答案缺点是兼容性差,直接使用了LoadLibrary,GetProcAddress.FreeLibrary等函数地址。
优点当然是修改的地方少了。
恐怕函数占用字节数我是最多的了。呵呵,重在参与。这些不重要了。抛砖引玉吧。
1. 数据目录中添加导出表结构 20b0(6B0)
在pediy.dll文件148h处添加字节:b0 20 00 00 45 00 00 00
2. 添加导出表
在pediy.dll文件6b0处添加如下字节:用作导出表
00 00 00 00 34 cf e5 48 00 00 00 00 e2 20 00 00
01 00 00 00 01 00 00 00 01 00 00 00 d8 20 00 00
dc 20 00 00 e0 20 00 00 20 11 00 00 ec 20 00 00
00 00 70 65 64 69 79 2e 64 6c 6c 00 4f 70 65 6e
55 72 6c 41 00
3. 添加导出函数
在pediy.dll文件520h处添加机器码:
53 57 56 E8 00 00 00 00 5B 81 EB 28 11 40 00
8D B3 00 11 40 00 56 BF 77 1D 80 7C FF D7 50
5F 8D B3 10 11 40 00 56 57 B8 28 AC 80 7C FF
D0 6A 01 6A 00 6A 00 8D B3 e0 10 40 00 56 8D
B3 d0 10 40 00 56 6A 00 FF D0 57 B8 66 AA 80
7C FF D0 5E 5F 5B C3
在.text中添加常量字符串。
1) 在pediy.dll文件4e0h处添加: 68 74 74 70 3A 2F 2F 26 62 73 2E 70 65 64 69 79 2E 63 6F 6D 00
2) 在pediy.dll文件4d0h处添加: 6F 70 65 6E 00
3) 在pediy.dll文件500h处添加: 73 68 65 6C 6C 33 32 2E 64 6C 6C 00
4) 在pediy.dll文件510h处添加: 53 68 65 6C 6C 45 78 65 63 75 74 65 41 00
到这里题目就完成了。
测试代码:
HMODULE hd = LoadLibrary("pediy.dll");
GetProcAddress(hd,"OpenUrlA");
_asm call eax
FreeLibrary(hd);
- 标 题:我的题目一做法
- 作 者:combojiang
- 时 间:2008-10-04 12:06
- 链 接:http://bbs.pediy.com/showthread.php?t=73927