老文章档案 · 2003 年

对于DLL通过增加重定位项直接调用引入表函数

赢政天下 [WINZHENG.COM] · 网络学院 · 2003-06-09 · 作者:Spring.W 人气: · 出处:赢政天下收集整理)

对于DLL文件,还有一种比较简单的方法,通过在冲定位表中增加IAT的重定位项实现。

先看下面补丁程序:

.

0167:01077228 PUSH EBX ;函数名字

0167:01077229 PUSH EDX ;Kernel32的hModule

0167:0107722A NOP

0167:0107722B NOP

0167:0107722C NOP

0167:0107722D NOP

0167:0107722E NOP

0167:0107722F NOP

0167:01077230 CALL [KERNEL32!GetProcAddress]

0167:01077236 TEST EAX,EAX

0167:01077238 JZ 010772AC

.

.

在SoftIce中写补丁时候就像上面一样写,完成后,0167:01077230处的指令代码将为:FF 15 xx xx xx xx,我们需要做的就是将xx xx xx xx处写入冲定位表。在本例子中,基地址为1040000,所以1077230处的RAV为37230,由于重定位表都是1000对齐的,所以要在重定位表中RVA为37000的索引中增加。

1、找到重定位表中索引为37000的地方,如果没有这个索引,就给

它加上,并将它的长度字段(第2个双字)加2

2、计算重定位项目值:37230 - 37000 + 2 = 232,加2是跳过指令

字FF 15,指令字之后才是要重定位的地址。

3、加上属性:232 or 3000 = 3232,项目值是字单位,高4位是属

性。

4、将项目值3232按照内存存放规律--低地址放低字节,高地址放高

字节加到这个索引(37000)中,在这个例子中,高低一样了。

5、将重定表最后为0的字节删掉2个。同理,你要增加2个项目,就

要删掉4个0;增加了索引,最好删掉同样长度的0字节。否则如

果.reloc节不是最后一个节的话,这个节后面的数据或程序就出

错了。若是最后一个节,可以不删,但要注意对齐PE文件。

6、将导入表长度加2;若增加了n个项目,就要加n*2;若增加了索

引,要加上同样的长度。

现在一切ok了,程序运行时,你调用的引入表函数被PE装载器给重定位了。可以用LoadPe查看改造后的.reloc表,将会多了一项:

Index RVA 偏移 Type Far Address Data Interpretion

5 37232 37232 HIGHLOW(3) 1002C1A8 IAT thunk of "Kernel32"

需要注意的事项:增加索引或项目时,要注意PE文件对齐,并要注意当.reloc不是最后一个节的特殊情况(往往是加了壳或打了补丁的才会这样)。

EXE文件往往没有重定位表,能不能这样做呢?没有试过。 (出处:赢政天下收集整理)

相关文章:

·简单算法——Cisco某个学习资料

·starforce的一些资料

相关软件:

·西苑资料管理 (版本1.3)通用版注册器

·西苑资料管理 企业单机版

·通用资料管理器(mybase)v4.52

·资料收集库 v2.3.8.0 注册机

·资料大师--建筑施工验收规范系列标准 V8.0

·资料伴侣 V2.10

·图文资料收集整理阅读系统(书人之友) V3.0.405

·资料收集库 V2.3.7.0

·CSDN资料库(Mycsdn) V1.28

·用电、农电、供电资料管理 V8.0

→ 特别推荐

→ 热点TOP10

关于我们 |

帮助(?)

| 广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright © 1999-2003

winzheng.com All Rights Reserved.

繁体版:由华琦数码技术提供

Powered

by:MeSky.Net

2003-2004 年,宽带刚刚普及,下载站的文章区是许多人学电脑的第一课堂。
🕰 → 🤖 从那时到现在

当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。

档案性质声明:本页为赢政天下(1998-2011)老文章的历史档案复原, 内容反映当年发表时的原貌——包括当年的技术表述、软件版本与观点,部分方法在今天已不适用或不合规,仅作互联网历史记录与研究用途, 不提供任何形式的下载。原始数据经由公共网络存档(Internet Archive)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史