-
-
[原创]第一阶段◇第一题
-
发表于:
2008-10-1 19:02
2366
-
1. 用010 Editor打开向pediy.dll在原IAT中增加WinExec
2. 用od打开pediy.dll,在我的电脑上pediy被重载到0x3e0000的基址上了。。。
3. 找块空白的地方写上数据,如下:
003E10CC 65 78 70 6C 6F 72 65 72 20 68 74 74 70 3A 2F 2F explorer http://
003E10DC 62 62 73 2E 70 65 64 69 79 2E 63 6F 6D 00 00 00 bbs.pediy.com...
4. 在代码段中找块空白的地方写上代码,如下
003E10EC > 6A 01 push 1
003E10EE 68 CC103E00 push 003E10CC ; ASCII "explorer http://bbs.pediy.com"
003E10F3 FF15 08203E00 call [<&KERNEL32.WinExec>] ; kernel32.WinExec
003E10F9 C3 retn
5. 把修改过的pediy.dll进行保存,然后用010 editor打开pediy.dll进行编辑
把68 CC103E00改为68 CC10
4000,即把地址003E10CC改为004010CC
把FF15 08203E00改为FF15 0820
4000,即把地址003E2008改为00402008
因为原pediy.dll的基址是0x400000,所以我们需要这样改,这样改后,这两项地址004010CC和00402008还没有重定位项,于是我们需要手
工增加
6. 用Lord PE打开pediy.dll,把IMAGE_DIRECTORY_ENTRY_BASERELOC的IMAGE_DATA_DIRECTORY的size改为24
7.用010 Editor打开pediy.dll,找到重定位表入口处,把IMAGE_BASE_RELOCATION的SizeOfBlock也改为24,跟上面一致
8.在010 Editor中紧接着原来的重定位项后(0x0A1E)增加手工增加两个重定位项:
EF30、F530
9.写一个模板dll,导出一个空函数OpenUrlA,然后把这个导出表描述符和EAT复制到pediy.dll中的0x700(利用原导入表中的多于空间,这样
就不需要另外加section了)
,然后用010 Editor修改我们复制过来的导出表修复其中的RVA,并使函数的RVA指向10EC,完成。
这样的修改法不需要增加Section,与原dll大小保持一致。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!