. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->包含多个段的程序
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  谢谢那个问问题的人,让我明白了病毒是怎么感染EXE的道理  [待解决] 回复[ 5次 ]   点击[ 875次 ]  
helloworld
[帖 主]   [ 发表时间:2007-10-26 14:18 ]   [引用]   [回复]   [ top ] 
荣誉值:10
信誉值:6
注册日期:2007-10-20 14:34
这里有那个谁谁谁,他问同一样的代码,把三个段的位置换了一下,结果CX的值就变了
这个问题真吸引我,我就看回贴了,看完回贴我也整明白了,还知道了病毒是怎么感染EXE文件的

这关键是人为的分段所造成的,在一个段的情况下,程序执行后是按内存的单元顺序排列的,N条指令没填够一个段,后面的指令就跟着往下填,这样整块内存就没有空余的地方了,都填满了程序的机器码,但如果人为地分了段,有一些“人为分的段”的机器码其实是没填满整段内存的,结果遇到分段的伪指令,就放弃后面的空余空间,开一个新段继续填“人为分的段”的机器码了,就造成了有些内存空间是空白的,但CS照样把这些空白的部份当作是程序所占用的空间的一部份。

晕 这样一说 我明白了一些病毒的道理,敢情就是将病毒指令插入这些“人为分的段”的段尾,当然这样插入指令是不连续的,不过我想只要用jmp来改变IP的位置,执行完自己的病毒指令后再跳回到程序的第一段,让程序正常运行,这样看起来CX的大小是不会变的,也就是看上去一些被感染了病毒的程序大小不会变一样。
fishboy
[第1楼]   [ 回复时间:2007-10-26 15:03 ]   [引用]   [回复]   [ top ] 
荣誉值:283
信誉值:0
注册日期:2007-06-26 11:42
不管楼上说的对于不对,这种思考分析能力值得我学习,敬礼!!
dreamhk
[第2楼]   [ 回复时间:2007-10-28 00:09 ]   [引用]   [回复]   [ top ] 
荣誉值:10
信誉值:13
注册日期:2007-10-05 16:58
这些段(PE文件中应该叫节吧)不是人为分的,楼主可以去了解一下PE文件的格式
再看看CIH病毒,就是利用插空法的,手工修复被它感染的程序很有难度的,一不小心就会损坏宿主文件,还是熊猫好啊,直接分离就行了.
qyjwyjl
[第3楼]   [ 回复时间:2008-01-29 20:15 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2008-01-19 09:34
文件对齐和节对齐吧
huangbeidu
[第4楼]   [ 回复时间:2009-04-01 22:33 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:3
注册日期:2009-03-10 11:22
这都是07年的贴了啊 不过还是好帖 我才刚刚明白
huangbeidu
[第5楼]   [ 回复时间:2009-04-01 22:33 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:3
注册日期:2009-03-10 11:22
这都是07年的贴了啊 不过还是好帖 我才刚刚明白 那个谁谁谁的贴在哪里啊
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved