荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Mill (我会忘记), 信区: Virus
标  题: 病毒教程五
发信站: BBS 荔园晨风站 (Sun Oct 25 15:44:15 1998), 站内信件

发信人: cynicism (文月), 信区: Virus
标  题: 病毒教程五
发信站: 龙门客栈 (Thu May 14 16:26:10 1998), 转信

EXE文件是一种多段的结构,属于DOS最成功和复杂的设计之一。
要了解EXE文件,首先需要了EXE的文件头结构。
(大家先去wenyue.yeah.net下载一份HELPSTAR吧。上面有许多有关的东西。)
Exe file header format

   Offset   size         Description

   00       2 bytes      .EXE  Type Flag,4d5ah
   02       2 bytes      Bytes in the last page(512 bytes/page)
   04       2 bytes      pages of the .EXE file(Include exeheader)
   06       2 bytes      ReAllocation number
   08       2 bytes      Exeheader size(16 bytes*this value)
   0a       2 bytes      MinAlloc
   0c       2 bytes      MaxAlloc
   0e       2 bytes      The init stack segment
   10       2 bytes      The int  stack pointer
   12       2 bytes      Checksum
   14       2 bytes      Code pointer
   16       2 bytes      Code segment
   18       2 bytes      The offset of reallocation table
   1a       2 bytes      The overlay number make by link
聪明的人应该一眼就能分辨出我们最感兴趣的部分了,偏移14和16,
这两个东东简直太重要了。它们表示了程序的执行代码入口地址。
DOS对EXE采取重定位的方法,重定位在很多DOS高级编程的书上都会提到,
假使你还没有了解,我来打个比方:我比小明高5公分。
那么小明如果170CM,那么我有175CM,如果小明180CM,我有185CM。
Code segment就是这个5公分。DOS下面可以加载很多TSR或者驱动程序,
我们无法知道一个程序被加载的开始段值,但是我们却可以知道一个EXE程序
的执行入口的开始段值比加载的第一个段值大多少。DOS就是通过这种简单的
加减法来对付EXE的多段模式的。现在我们知道了EXE文件的开始执行代码
是从加载初始地址+Code segment:Code pointer。
还有一个我们很感兴趣的东西是偏移为8的Exeheader Size。这对病毒修改EXE文件
很有用,可以用来确定EXE文件的代码开始处(代码开始处之前是Exeheader)。
那么我们可以这样来修改一个EXE文件:
把EXE文件的最后先填满16个字节(为了段对齐),把自己的程序段加到最后,
并且保存EXE头中的14h和16h偏移的数值,把EXE头中的14h的数值改成100H,
16的值改成(EXEFILESIZE+15) div 16 -ExeheaderSize -16  (-16的原因是100H=16*16)
好了,自己做个实验吧,在执行完这段代码的时候记得返回到PSP+OldSeg :OldIP。

--
欢迎访问http://wenyue.yeah.net
提供最新软件下载,常用网络资源,序列号联结列表,免费杀毒等服务
欢迎到病毒区灌水

m;37m※ 来源:.龙门客栈 bbs.szonline.net.[FROM: ppp130.hk.ha.cn]m
--
m;36m※ 转寄:.龙门客栈 bbs.szonline.net.[FROM: 202.96.191.124]m

--
                         ┏━━━━━━━━━━━━━┯┓
                         ┃ 弃我去者,昨日之日不可留, ╚┫
                         ┃ 乱我心者,今日之日多烦忧.   ┃
                         ┗━━━━━━━━━━━━━━┛
 取下天上的月亮后,我拿给你
 Email: s7110109@szu.edu.cn  Macrobird

※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.0.167]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店